Câu hỏi Vim rõ ràng tìm kiếm cuối cùng làm nổi bật


Sau khi thực hiện tìm kiếm trong Vim, tôi nhận được tất cả các lần xuất hiện được đánh dấu. Làm thế nào tôi có thể vô hiệu hóa điều đó? Tôi bây giờ làm một tìm kiếm cho một cái gì đó vô nghĩa mà không thể được tìm thấy.

Có cách nào để tạm thời vô hiệu hóa đánh dấu và sau đó bật lại nó khi cần thiết một lần nữa?


1599
2018-03-18 09:00


gốc


Tôi nghĩ rằng giải pháp "nnoremap <esc>: noh <return> <esc>" là câu trả lời hoàn chỉnh hơn cho câu hỏi - bằng cách đặt câu trả lời đó vào trong .vimrc của bạn, bạn có thể nhấn <esc> sau khi tìm kiếm để xóa phần đánh dấu từ tìm kiếm trước đó (nhưng không tắt đánh dấu cho mục đích tốt). - Stewart Johnson
: thiết lập invhlsearch sẽ vô hiệu hóa đánh dấu nếu nó đã được đánh dấu và kích hoạt nó nếu nó không phải là. Bạn có thể ánh xạ nó để nói Shift-H. - puffadder
Câu trả lời được chấp nhận không phải là tốt nhất. - qed
Cảm ơn bạn đã đặt câu hỏi tôi đã thắc mắc trong 3 năm và không làm phiền (cho đến hôm nay) để tìm kiếm câu trả lời :) - psynnott
@StewartJohnson Hãy cẩn thận! Nhận xét được đánh giá hàng đầu của bạn với lỗi gây ra ánh xạ và hành vi không mong muốn như được mô tả trong các nhận xét bên dưới stackoverflow.com/a/1037182/1698467 - skywinder


Các câu trả lời:


Để tắt làm nổi bật cho đến khi tìm kiếm tiếp theo:

:noh

Hoặc tắt hoàn toàn làm nổi bật:

set nohlsearch

Hoặc, để chuyển đổi nó:

set hlsearch!

nnoremap <F3> :set hlsearch!<CR>

1293
2018-03-18 09:02



Bằng cách đặt nohlsearch, đánh dấu làm nổi bật khi vim được khởi động lại. :noh hoạt động tốt hơn. - Dharmit
nó gây phiền nhiễu rằng nó có thể được chỉ là nhanh chóng để tìm kiếm một chuỗi gibberish: / oajf3w9 vì nó là để loại: noh. Tôi thích giải pháp lập bản đồ phím không gian của @ avocade: noh - nnyby
Điều này không rõ ràng từ câu trả lời và nhận xét này: lưu ý rằng set nohlsearchcũng sẽ tắt tính năng đánh dấu cho các tìm kiếm tiếp theo. Hành vi của :noh rất khác: đánh dấu sẽ tự động được bật lại khi bạn thực hiện tìm kiếm mới hoặc ngay cả khi bạn thực hiện điều gì đó liên quan đến tìm kiếm hiện tại (ví dụ: khi bạn nhập n để đi đến mục tiếp theo). - Skippy le Grand Gourou
Không giải thích về những gì thực sự làm và hậu quả. Cảm ơn @SkippyleGrandGourou vì đã giải thích một số. - Jason S
Đối với những gì giá trị của nó, tôi bản đồ này để '\/' (hoặc bất kỳ Leader của bạn là gì): map <Leader>/ :nohlsearch<CR> - brianmearns


Từ Tài liệu VIM

Để xóa mẫu tìm kiếm được sử dụng lần cuối:

:let @/ = ""

Điều này sẽ không đặt mẫu thành một chuỗi rỗng, vì nó sẽ khớp mọi nơi. Các mô hình thực sự là xóa, giống như khi bắt đầu Vim.


641
2018-03-18 09:12



Điều này không tắt tìm kiếm, nó xóa mẫu. - Shaun Bouckaert
... đó sẽ là một giải pháp tốt hơn cho vấn đề của anh ấy khi tôi hiểu nó. - Shaun Bouckaert
Đã bỏ phiếu. Điều này có thể không trả lời câu hỏi của anh ấy, nhưng tôi thường thấy mình muốn làm chính xác câu trả lời của bạn. Cảm ơn - skinp
Đây là những gì tôi nghĩ rằng câu hỏi đã được về ... đây là một lệnh tôi thực hiện để nhanh chóng thanh toán bù trừ của chuỗi tìm kiếm (và do đó loại bỏ tất cả các điểm nổi bật): :command C let @/="" Sử dụng tính năng này cho phép bạn nhập :C để xóa chuỗi tìm kiếm ... rất nhanh và không ảnh hưởng đến việc tìm kiếm hoặc đánh dấu trong tương lai. - Jason
@ jcreamer898, xem vim giúp đỡ về "đăng ký" (:he registers). Vim có nhiều thanh ghi khác nhau có chứa văn bản, đôi khi cho dữ liệu được kéo dài, đôi khi để tìm kiếm lần cuối, v.v. Khi bạn thực hiện tìm kiếm, vim sẽ đặt mẫu trong thanh ghi "/" mà bạn tham chiếu bằng cách sử dụng @/. Bạn cũng có thể gán giá trị cho thanh ghi bằng cách sử dụng @regname=value Ở đâu regname là tên của thanh ghi. Vì thế, @/="" chỉ đơn giản là thiết lập đăng ký "/" thành một chuỗi rỗng (ngoại trừ cho "/" đăng ký vim sẽ xóa tìm kiếm cuối cùng nếu nó chứa một chuỗi rỗng). - Ben Davis


Bạn có thể làm

:noh

hoặc là :nohlsearch để tạm thời tắt đánh dấu tìm kiếm cho đến khi tìm kiếm tiếp theo.


558
2018-03-18 14:26



cảm ơn, điều này là hữu ích ... bất kỳ lệnh nào để trả lại điểm nổi bật? - Gabriel Solomon
: nohs chỉ tắt tính năng đánh dấu hiện tại. Nếu bạn có: đặt hlsearch thì nó sẽ tiếp tục làm nổi bật tìm kiếm của bạn. - greyfade
Tôi nghĩ rằng đây là những gì OP đang tìm kiếm (mặc dù câu trả lời của Shaun cũng vậy). Tôi đang upvoting này cho ngắn hơn. Tôi biết anh ấy đã chấp nhận câu trả lời nohls, nhưng thiết lập nó sẽ vô hiệu hóa tất cả các đánh dấu tìm kiếm, ngay cả khi tìm kiếm khác được thử sau đó. - Thiago Arrais
Đây có lẽ là điều mà OP muốn ở nơi đầu tiên và là IMHO trả lời ngắn nhất, ngắn nhất.
Sự hoàn hảo có thể đạt được ngay cả trong cõi chết này! Tôi sẽ sử dụng điều này nhiều hơn: trợ giúp và không muốn gây ô nhiễm <esc>: nnoremap <F1>: noh <CR> - Sam Watkins


Tôi đã tìm thấy câu trả lời này vài năm trước trên vim.org:

Thêm phần sau vào tệp .vimrc của bạn:

"This unsets the "last search pattern" register by hitting return
nnoremap <CR> :noh<CR><CR>

Vì vậy, sau khi tìm kiếm của bạn, chỉ cần nhấn trở lại một lần nữa trong chế độ lệnh, và làm nổi bật biến mất.


269
2018-03-19 16:22



Tôi nghĩ đây là một nhiều giải pháp tốt hơn so với giải pháp thực sự được chấp nhận - thay vào đó là giải pháp này hoặc giải pháp khác được ánh xạ tới <ESC>. - Stewart Johnson
Đây là một câu trả lời tốt hơn cho "nnoremap <esc>: noh <return> <esc>" bởi vì nó không gây ra hành vi lạ. - Dennis Hodapp
Một điều quan trọng cần lưu ý, đảm bảo bạn không đặt bất kỳ nhận xét nào ở phía bên tay phải của bản remap. Chúng sẽ được hiểu là các lệnh cho bản remap thay vì các bình luận. - codybuell
Nhận xét là sai; lệnh nào không phải bỏ đặt mẫu tìm kiếm cuối cùng nhưng chỉ cần tắt phần đánh dấu của các kết quả hiện tại; bạn có thể đánh nđể tìm lần xuất hiện tiếp theo (sẽ được đánh dấu lần nữa). BTW, khi kịch bản, tôi sẽ tránh hình thức viết tắt, và thay vào đó viết :nohlsearch. - Tobias
Thêm <im lặng> để tránh màn hình nhấp nháy và để lại noh trong dòng lệnh -: nnoremap <silent> <CR>: nohlsearch <CR> <CR> - Peter N Lewis


Từ http://twitter.com/jonbho/status/2194406821

" Clear highlighting on escape in normal mode
nnoremap <esc> :noh<return><esc>
nnoremap <esc>^[ <esc>^[

Dòng thứ hai là cần thiết cho ánh xạ tới phím thoát kể từ khi Vim sử dụng nội bộ thoát để đại diện cho các phím đặc biệt.


131
2018-06-24 08:53



Chỉ cần rõ ràng, điều này cho phép bạn xóa đánh dấu tìm kiếm bằng cách nhấn phím Escape - Gavin Miller
Đối với một số lý do, điều này làm cho vim terminal của tôi khởi động như thể "c" được nhấn. Ý tưởng nào? - Jacob
Điều này gây ra một số hành vi rất lạ khi tôi thử nó: khi khởi động, các chuyển động vim thông thường (ví dụ j, k) sẽ làm cho các đường bị xóa. nnoremap <CR>: noh <CR> <CR> không gây ra sự cố này. Tôi không thể theo dõi nguyên nhân gốc rễ. - oasisbob
hmm, tôi đã có cùng một vấn đề như trên. Không sử dụng tính năng này mà không cần kiểm tra trừ khi bạn muốn xóa văn bản của mình một cách ngẫu nhiên ... - Derek Litz
sử dụng "nnoremap <esc>: noh <return> <esc>" làm cho vim luôn bắt đầu ở chế độ "REPLACEMENT". - user1850133


Tìm kiếm chuỗi ký tự không chắc chắn (trộn các phím trên hàng chủ):

/;alskdjf;

Điều này làm việc trong vim và ít hơn, và nó dễ dàng hơn để ghi nhớ / loại hơn giải pháp sạch hơn của ShaunBouckaert @ "để xóa các mẫu tìm kiếm được sử dụng cuối cùng":

:let @/ = ""

Một nhược điểm tiềm năng là nó thêm rác vào lịch sử tìm kiếm của bạn.


36
2018-03-17 15:38



Không chỉ là một giải pháp dơ bẩn (mà bản thân tôi đã sử dụng cho đến bây giờ, không có hành vi phạm tội), một nhược điểm khác là nó thêm một biểu ngữ màu đỏ xấu xí nói "mẫu không tìm thấy" ở dưới cùng của cửa sổ, gần như là gây phiền nhiễu như làm nổi bật chính nó và yêu cầu thêm hành động để được loại bỏ (ví dụ: "tìm kiếm + backspace"). - Skippy le Grand Gourou
Nó cũng có thể mất một vài giây, vì nó thực sự tìm kiếm toàn bộ phần còn lại của tập tin. Điều đó thực sự gây phiền nhiễu nếu tệp lớn. Tất nhiên, bạn có thể đánh dấu vị trí hiện tại của bạn, nhảy đến đầu, và tìm kiếm ngược lại cho một nhân vật, nhưng đó là bẩn tương tự. - Blacklight Shining
Vâng, tôi cũng sử dụng giải pháp này xấu xí nhưng tôi luôn luôn sử dụng '/ qwe' mà vì một lý do nào đó không ai phù hợp với bất cứ điều gì trong bất kỳ tập tin. - Juan Campa
Đây là giải pháp được sử dụng nhiều nhất trước học về :nohl chỉ huy. Một khi tôi đã học về cái sau, tôi lập tức dừng lại để thực hiện những tìm kiếm đó. - Tobias
Đây không phải là câu trả lời; nó chỉ đề xuất làm những gì OP đã làm: "Tôi bây giờ làm một tìm kiếm cho một cái gì đó vô nghĩa mà không thể được tìm thấy." - iamnotmaynard


Remapped vào trong tập tin .vimrc.local của tôi, nhanh chóng và bẩn nhưng rất chức năng:

" Clear last search highlighting
map <Space> :noh<cr>

30
2017-10-23 19:48





nnoremap <cr> :noh<CR><CR>:<backspace>

Bằng cách đó tôi thoát khỏi :noh được hiển thị trong dòng lệnh, khi nhấn đi vào sau khi tìm kiếm.

: giống như bắt đầu nhập một lệnh mới, Backspace xóa nó và đặt tiêu điểm trở lại cửa sổ trình soạn thảo.


27
2017-08-09 19:04



Cảm ơn bạn. Các ": noh" xuất hiện ở phía dưới bên trái đã khiến tôi điên khùng, OCD chết tiệt. - andrewtweber
Tôi đã cố gắng để bản đồ nó để chuyển cr bằng cách làm nnoremap <S-cr>: noh <CR> <CR> nhưng nó không hoạt động, bạn có biết tại sao nó có thể không hoạt động? - Charlie Parker
Tôi nghi ngờ bạn không thể kết hợp sự thay đổi với sự trở lại, nhưng tôi thành thật không có ý tưởng. - sjas
@CharlieParker IIRC bạn chỉ có thể sử dụng ca trên [a-z] và những nhân vật như vậy. - sjas