Sự thay thế toàn cầu của Vim không thay thế tất cả các trận đấu trong một dòng


12

đôi khi các phép trừ toàn cầu của tôi không thay thế tất cả các trận đấu trong một dòng. Nó được xác nhận bởi thực tế là tôi có thể nhìn thấy nó khi tôi thay thế bằng xác nhận, một trận đấu được tìm thấy trong một dòng có nhiều trận đấu có thể, nhưng sau đó nó đi đến một dòng khác.

Tôi sử dụng ghoặc gctham số hoạt động trên toàn bộ tập tin với %.

Trên tập tin này:

hello hello
hello
hello hello hello
hello

Nếu tôi làm %s/hello/goodbye/gtôi nhận được

goodbye hello
goodbye
goodbye hello hello
goodbye

Tất cả những gì tôi có trong .vimrctìm kiếm / thay thế là

set hlsearch
set ignorecase
set incsearch

3
Xin vui lòng, cho chúng tôi một ví dụ thế giới thực và cho chúng tôi thấy của bạn vimrc.
romainl

2
Đầu ra của :echo &gdcái gì và điều gì xảy ra nếu bạn thêm một glá cờ thứ 2 như thế này: %s/hello/goodbye/gghoặc nếu bạn loại bỏ ghoàn toàn cờ? Nếu đầu ra :echo &gd1, hãy thử thêm set nogdefaultvào cuối của bạn vimrc.
dùng9433424

1
Khỏe! Tôi không biết tại sao nhưng theo mặc định, nó được đặt thành 0 vì vậy tôi đã thêm set nogdefaultnhư bạn đã nói và nhân tiện nó hoạt động ngay bây giờ. Cảm ơn bạn!
Nicolas Scotto Di Perto

Câu trả lời:


12

Có thể bạn, hoặc một plugin, đã kích hoạt tùy chọn 'gdefault'. Tùy chọn này gtự động thêm cờ bất cứ khi nào bạn thực hiện thay thế.

Vì vậy, khi bạn thêm cờ theo cách thủ công gtrong khi 'gdefault'được bật, như thể bạn có 2 gcờ có hiệu ứng tương tự như không. Do đó, Vim chỉ thay thế sự xuất hiện đầu tiên của mẫu trên mỗi dòng.

Theo mặc định, tùy chọn này bị vô hiệu hóa, nhưng để chắc chắn, bạn có thể thêm vào cuối vimrc: set nogdefault.

Ngoài ra, nếu bạn nghi ngờ một plugin có thể đã bật tùy chọn, bạn có thể theo dõi nó với: verb set gd?

Hoặc bạn có thể quen với tùy chọn này, điều đó có nghĩa là khi bạn muốn thay thế tất cả các lần xuất hiện của một mẫu, bạn không thêm gcờ (vì gdefaultđã làm như vậy) và khi bạn chỉ muốn thay thế lần xuất hiện đầu tiên của mẫu trên một dòng, bạn thêm gcờ (vì 2 gcờ giống như không có).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.