Vim rõ ràng tìm kiếm cuối cùng nổi bật


1904

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 tô sáng. Làm thế nào tôi có thể vô hiệu hóa điều đó? Bây giờ tôi thực hiện một tìm kiếm khác cho những thứ vô nghĩa không thể tìm thấy.

Có cách nào để tạm thời vô hiệu hóa phần tô sáng và sau đó kích hoạt lại khi cần một lần nữa không?


197
Tôi nghĩ rằng giải pháp "nnoremap <esc>: noh <return> <esc>" là một câu trả lời đầy đủ hơn cho câu hỏi - bằng cách đặt nó vào .vimrc, bạn có thể chỉ cần nhấn <esc> sau khi bạn tìm kiếm để xóa phần tô sáng từ tìm kiếm trước đó (nhưng không tắt tính năng tô sáng cho tốt).
Stewart Johnson

5
: set invhlsearch sẽ tắt tính năng tô sáng nếu nó được tô sáng và bật nó nếu không. Bạn có thể ánh xạ nó để nói Shift-H.
bàng quang

1
@StewartJohnson làm điều đó trong các tệp .vimrc của tôi dường như can thiệp / phá vỡ với: set mouse = a. Bất cứ ý tưởng tại sao? Lỗi này chỉ xảy ra trong iTerm2
Charlie Parker

20
@StewartJohnson Hãy cẩn thận! Bình luận hàng đầu đánh giá của bạn với các lỗi lập bản đồ nguyên nhân và hành vi bất ngờ như đã mô tả trong các ý kiến dưới đây để stackoverflow.com/a/1037182/1698467
skywinder

3
Các nnoremap <esc> :noh<return><esc>giải pháp được đề xuất bởi @StewartJohnson hoạt động độc đáo trong GUI vim, nhưng gây ra vấn đề với các phím mũi tên và phím ESC-mã hóa khác khi chạy vim trong một thiết bị đầu cuối. Đừng đặt nó trong của bạn ~/.vimrc mà không cần gói nó trong if has('gui_running')... end.
jbyler

Câu trả lời:


1588

Để tắt tô sáng cho đến khi tìm kiếm tiếp theo:

:noh

Hoặc tắt hoàn toàn tô sáng:

set nohlsearch

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

set hlsearch!

nnoremap <F3> :set hlsearch!<CR>

14
Bằng cách thiết lập nohlsearch, trả về tô sáng khi vim được khởi động lại. :nohlàm việc tốt hơn
Dharmit

21
thật khó chịu khi có thể tìm kiếm một chuỗi vô nghĩa nhanh như vậy: / oajf3w9 cũng như gõ: noh. Tôi thích giải pháp ánh xạ khóa không gian của @ avocade tới: noh
nnyby 16/212

160
Đ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 nohlsearchsẽ vô hiệu hóa phần tô sáng cho các tìm kiếm tiếp theo. Hành vi của :nohrất khác nhau: việc tô sáng sẽ được tự động 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 một việc 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

10
Không có lời giải thích về những gì thực sự làm và hậu quả. Cảm ơn @SkippyleGrandGourou đã giải thích một số điều đó.
Jason S

3
Để biết giá trị của nó, tôi ánh xạ nó tới '\/'(hoặc bất kể Nhà lãnh đạo của bạn là gì):map <Leader>/ :nohlsearch<CR>
brianmearns

689

Từ Tài liệu VIM

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

:let @/ = ""

Điều này sẽ không đặt mẫu thành một chuỗi trống, bởi vì nó sẽ phù hợp ở mọi nơi. Mô hình thực sự bị xóa, giống như khi bắt đầu Vim.


129
... đó 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

8
Đây là những gì tôi đang tìm kiếm! Tôi đã bình chọn nó lên, câu hỏi hơi mơ hồ. Điều này khiến tôi nghĩ rằng đây là điều anh ấy muốn: "Bây giờ tôi thực hiện một tìm kiếm khác cho những thứ vô nghĩa không thể tìm thấy". Bởi vì đó là những gì tôi đã làm để xóa tìm kiếm, nhưng không vô hiệu hóa nó để tìm kiếm tiếp theo sẽ nổi bật trở lại.
claytron

50
Đây là những gì tôi nghĩ rằng câu hỏi là về ... đây là một lệnh tôi đã thực hiện để nhanh chóng xó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 điều 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 làm nổi bật trong tương lai.
Jason

12
@ jcreamer898, xem vim trợ giúp về "sổ đăng ký" ( :he registers). Vim có một số thanh ghi tích hợp khác nhau chứa văn bản, đôi khi cho dữ liệu được thu thập, đôi khi cho lần tìm kiếm cuối cùng, v.v. Khi bạn thực hiện tìm kiếm, vim sẽ đặt mẫu vào 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 sử dụng @regname=valueở đâu regnamelà là tên của thanh ghi. Vì vậy, @/=""chỉ cần đặt thanh ghi "/" thành một chuỗi trống (ngoại trừ việc đăng ký "/" vim sẽ xóa tìm kiếm cuối cùng nếu nó chứa một chuỗi trống).
Ben Davis

3
Thêm phần này vào .vimrc của bạn để nhận Ctrl + / để xóa tìm kiếm cuối cùng: noremap <silent> <c-_> :let @/ = ""<CR>
Angrydust

583

Bạn có thể làm

:noh

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


3
cảm ơn, điều này rất hữu ích ... bất kỳ lệnh nào để trả lại sự nổi bật?
Gabriel Solomon

17
: nohs chỉ tắt phần tô sáng hiện tại. Nếu bạn có: đặt hlsearch thì nó sẽ tiếp tục làm nổi bật các tìm kiếm của bạn.
greyfade

6
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 hoạt động). Tôi ủng hộ điều này vì ngắn hơn. Tôi biết anh ấy đã chấp nhận câu trả lời nohls, nhưng cài đặt nó sẽ vô hiệu hóa tất cả đánh dấu tìm kiếm, ngay cả khi một tìm kiếm khác được thử sau đó.
Thiago Arrais

5
Đây có lẽ là điều mà OP muốn ngay từ đầu và là câu trả lời ngắn nhất, hay nhất IMHO.

Sự hoàn hảo là có thể đạt được ngay cả trong cõi phàm trần 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

305

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

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

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

Do đó, sau khi tìm kiếm của bạn, chỉ cần nhấn trở lại trong chế độ lệnh và phần tô sáng sẽ biến mất.


36
Tôi nghĩ rằng đây là một giải pháp tốt hơn nhiều 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

20
Đây là một câu trả lời tốt hơn nhiều cho "nnoremap <esc>: noh <return> <esc>" vì nó không gây ra hành vi lạ.
Dennis

19
Một điều quan trọng cần lưu ý, đảm bảo bạn không đặt bất kỳ bình luận nào ở phía bên phải của bản tóm tắt. Chúng sẽ được hiểu là các lệnh cho bản tóm tắt trái ngược với nhận xét.
codybuell

13
Nhận xét là sai; lệnh không bỏ đặt mẫu tìm kiếm cuối cùng mà chỉ tắt phần tô sáng của kết quả hiện tại; bạn có thể nhấn nđể tìm lần xuất hiện tiếp theo (sẽ được tô sáng lại). BTW, khi viết kịch bản, tôi sẽ tránh các hình thức viết tắt, và thay vào đó viết :nohlsearch.
Tobias

28
Thêm <im lặng> để tránh màn hình nhấp nháy và để lại tiếng ồn trong dòng lệnh -: nnoremap <im lặng> <CR>: nohlsearch <CR> <CR>
Peter N Lewis

137

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 để ánh xạ tới phím thoát vì Vim bên trong sử dụng thoát để thể hiện các khóa đặc biệt.


12
Để rõ ràng, điều này cho phép bạn xóa phần tô sáng tìm kiếm bằng cách nhấn phím Escape
Gavin Miller

7
Vì một số lý do, điều này làm cho thiết bị đầu cuối vim của tôi khởi động như thể "c" đã được nhấn. Có ý kiến ​​gì không?
Jacob

31
Điều này gây ra một số hành vi rất lạ khi tôi thử: khi khởi động, các chuyển động vim thông thường (ví dụ j, k) sẽ khiến các dòng bị xóa. nnoremap <CR>: noh <CR> <CR> không gây ra những vấn đề này. Tôi không thể theo dõi nguyên nhân gốc rễ.
ốc đảo

9
hmm, tôi đã có cùng một vấn đề như những người ở trên Đừ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

8
sử dụng "nnoremap <esc>: noh <return> <esc>" làm cho vim luôn bắt đầu ở chế độ "THAY THẾ".
dùng1850133

38

Giải pháp ban đầu của tôi (bên dưới) là bẩn và lãng phí. Bây giờ tôi sử dụng:noh

Giống như nhiều tính năng trong Vim, cách đúng đắn thường không dễ dàng khám phá.

-

(KHÔNG LÀM NÀY)

Tìm kiếm một 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 hoạt động trong vim và ít hơn, và nó dễ nhớ / gõ hơn so với giải pháp logic sạch hơn của @ ShaunBouckaert "để xóa 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.


17
Đây không chỉ là một giải pháp bẩn thỉu (mà bản thân tôi đã sử dụng cho đến bây giờ, không có ý xúc phạm), một nhược điểm khác là nó thêm một biểu ngữ màu đỏ xấu xí nói rằng "không tìm thấy mẫu" ở dưới cùng của cửa sổ, gần như gây khó chịu như làm nổi bật chính nó và yêu cầu hành động tiếp theo để được loại bỏ (ví dụ: "tìm kiếm + backspace").
Skippy le Grand Gourou

5
Nó cũng có thể 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. Đ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 mình, nhảy lên từ đầu và tìm kiếm ngược cho một nhân vật, nhưng điều đó tương tự bẩn.
Blacklight Shining

5
Đây là giải pháp hầu hết sẽ được sử dụng trước khi tìm hiểu về :nohllệnh. Khi tôi biết 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

7
Đây không phải là một câu trả lời; chúng tôi chỉ khuyên bạn nên làm những gì OP đã làm: "Bây giờ tôi thực hiện một tìm kiếm khác cho những thứ vô nghĩa không thể tìm thấy."
Phục hồi Monica - notmaynard

2
Nếu bạn muốn một mô hình hoàn hảo và ngắn chỉ cần sử dụng /$4. Nó không chỉ là không thể phù hợp với bất cứ điều gì nhưng thực sự hoàn toàn KHÔNG THỂ. $phải luôn được theo sau bởi một dòng mới hoặc là phần cuối của tệp và 4 không phải là một dòng mới cũng không phải là kết thúc của tệp. (Lý do cho 4 cụ thể là vì nó nằm trên cùng một khóa, vì vậy thật dễ dàng để gõ nhanh)
dấu chấm phẩy

32

Được ánh xạ vào trong tệp .vimrc.local của tôi, nhanh và bẩn nhưng rất chức năng:

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

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

Bằng cách đó, tôi thoát khỏi :nohhiển thị trong dòng lệnh, khi nhấnenter sau khi tìm kiếm.

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


6
Cảm ơn bạn. Chữ ": noh" hiển thị ở phía dưới bên trái đang khiến tôi phát điên, OCD chết tiệt.
andrewtweber

Tôi đã cố gắng ánh xạ nó sang cr bằng cách thực hiện 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 khô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ực sự không có ý tưởng.
sjas

@CharlieParker IIRC bạn chỉ có thể sử dụng shift [a-z]và các ký tự như vậy.
sjas

7
Thay vì làm :<Backspace>, bạn chỉ có thể thêm <silent>vào sau nnoremapđể báo cho Vim không hiển thị bất kỳ đầu ra nào trong vùng lệnh : nnoremap <silent> <cr> :noh<CR><CR>.
Soren Bjornstad

31

Các câu trả lời đề xuất :nohhoặc :nohlsearch(ví dụ: Matt McMinn) là chính xác để tạm thời vô hiệu hóa đánh dấu tìm kiếm - như được hỏi trong câu hỏi ban đầu.

Tôi nghĩ rằng tôi đã đóng góp một ánh xạ mà tôi thấy hữu ích trong chế độ Bình thường:

nnoremap <C-L> :nohlsearch<CR><C-L>

Theo mặc định, CtrlLtrong Vim xóa và vẽ lại màn hình. Một số chương trình dòng lệnh (hầu hết là các chương trình sử dụng thư viện GNU Readline , chẳng hạn như Bash) sử dụng cùng một tổ hợp phím để xóa màn hình. Tính năng này rất hữu ích trong trường hợp một quy trình đang chạy trong nền in ra thiết bị đầu cuối, ghi đè lên các phần của quy trình nền trước.

Ánh xạ chế độ Bình thường này cũng xóa phần tô sáng của cụm từ tìm kiếm gần đây nhất trước khi vẽ lại màn hình. Tôi thấy hai tính năng bổ sung cho nhau và thật tiện lợi khi sử dụng một tính năngCtrlL cho cả hai hành động cùng nhau thay vì tạo một ánh xạ riêng để tắt tính năng tô sáng tìm kiếm.

NB: noremap được sử dụng chứ không phải mapnhư khác, ánh xạ sẽ được đệ quy.

Mẹo: Tôi thường ánh xạ lại Caps Lockđể Ctrldễ dàng nhập các tổ hợp phím như vậy; các chi tiết để thực hiện việc này phụ thuộc vào sự lựa chọn của bạn về hệ điều hành / hệ thống cửa sổ (và không có chủ đề cho câu trả lời này). Cả những lời khuyên sau đây bao gồm thông tin về bản đồ Caps Lockđể Ctrlcũng như Esc:


26

Tôi thường ánh xạ :nohtới phím dấu gạch chéo ngược. Để làm nổi bật phần tô sáng, chỉ cần nhấn nvà nó sẽ tô sáng lại.


24

Vô hiệu hóa làm nổi bật tìm kiếm vĩnh viễn

Các trận đấu sẽ không được tô sáng bất cứ khi nào bạn thực hiện tìm kiếm bằng /

:set nohlsearch

Xóa đánh dấu cho đến khi tìm kiếm tiếp theo

:noh

hoặc :nohlsearch(xóa cho đến khi nhoặc Nđược nhấn)


Xóa tô sáng khi nhấn ESC

nnoremap <esc> :noh<return><esc>

Xóa tô sáng khi nhấn phím khác hoặc bản đồ tùy chỉnh

  • Xóa các điểm nổi bật khi nhấn \(dấu gạch chéo ngược)

    nnoremap \ :noh<return>
    
  • Xóa nổi bật khi đánh ESChai lần

    nnoremap <esc><esc> :noh<return>
    

2
Các nnoremap <silent> <esc> :noh<return><esc>giải pháp công trình độc đáo trong GUI vim, nhưng gây ra vấn đề nghiêm trọng với các phím mũi tên và phím ESC-mã hóa khác khi chạy vim trong một thiết bị đầu cuối. Đừng đặt nó trong của bạn ~/.vimrc mà không cần gói nó trong if has('gui_running')... end. Cũng xem xét việc thêm cái <silent>nào để tránh nhấp nháy :nohlệnh trong thanh trạng thái.
jbyler

17

Đây là những gì tôi sử dụng (trích từ rất nhiều câu hỏi / câu trả lời khác nhau):

nnoremap <silent> <Esc><Esc> :let @/=""<CR>

Với "nhân đôi", Escbạn xóa phần tô sáng, nhưng ngay khi bạn tìm kiếm lại, phần tô sáng lại xuất hiện.


Một cách khác:

nnoremap <silent> <Esc><Esc> :noh<CR> :call clearmatches()<CR>

Theo tài liệu của vim:

Clearmatches ()

    Clears all matches previously defined by |matchadd()| and the

    |:match| commands.

Tôi đã đối mặt với một số lỗi trong các giải pháp hàng đầu, vì vậy để tiết kiệm thời gian của bạn thử tất cả các câu trả lời. Sử dụng giải pháp này! Chỉnh sửa của bạn .vimrcvà đặt mục nhập sau vào đó:nnoremap <silent> <Esc><Esc> :let @/=""<CR>
user1336087

Nhưng đó là những gì nó nói Oo Có lẽ bạn có thể nâng cao?
Pablo Olmos de Aguilera C.

Tôi đang hỗ trợ giải pháp của bạn ... Đây là IMO tốt nhất ... Và tôi cũng đã nâng cấp nó .. :)
user1336087

1
Xóa sổ đăng ký tìm kiếm @/=""có tác dụng phụ làm cho nkhông hoạt động để lấy lại tìm kiếm của bạn. Tôi thích :nohgiữ cho tìm kiếm trước đó trong đăng ký để sử dụng lại.
jbyler

11

Để tắt tô sáng cho đến khi tìm kiếm tiếp theo

:noh

Minh họa trực quan



8

Janus cho VIM và GVIM có một số thứ được nướng sẵn cho những người mới như tôi, bao gồm cả

<leader>hs - toggles highlight search

đó chính xác là những gì bạn cần. Chỉ cần gõ \hstrong chế độ bình thường. (Khóa lãnh đạo được ánh xạ tới \theo mặc định.)

HTH.


7

Có hai plugin 'phải có' cho việc này:

  1. hợp lý - Ctrl-lcho màn hình nohlsearch và vẽ lại.
  2. unimpared - [oh, ]ohcohđể kiểm soát hlsearch.


cohvẫn hoạt động, mặc dù có một thông báo gợi ý sử dụng yohnếu bạn sử dụngcoh
avinashkrsharma

7

Tắt tô sáng ngay khi bạn di chuyển con trỏ:

Cài đặt vim-cool . Nó được tạo ra để khắc phục vấn đề cụ thể này. Nó tắt đánh dấu ngay khi bạn di chuyển con trỏ. Mặc dù được cảnh báo, nó yêu cầu một phiên bản vim gần đây!


6

Điều này sẽ xóa phần tô sáng tìm kiếm sau một updatetimephần nghìn giây không hoạt động.

updatetimemặc định là 4000ms hoặc 4s nhưng tôi đặt của tôi thành 10 giây. Điều quan trọng cần lưu ý là updatetimekhông chỉ làm điều này vì vậy hãy đọc tài liệu trước khi bạn thay đổi nó.

function! SearchHlClear()
    let @/ = ''
endfunction
augroup searchhighlight
    autocmd!
    autocmd CursorHold,CursorHoldI * call SearchHlClear()
augroup END

6

Nếu bạn muốn có thể bật / tắt tô sáng nhanh chóng , bạn có thể ánh xạ một phím tới

" Press F4 to toggle highlighting on/off, and show current value.
:noremap <F4> :set hlsearch! hlsearch?<CR>

Chỉ cần đặt đoạn mã trên vào tệp .vimrc của bạn.

Đó là cách thuận tiện nhất để tôi hiển thị và ẩn phần tô sáng tìm kiếm bằng một nét phím hát

Để biết thêm thông tin, hãy kiểm tra tài liệu http://vim.wikia.com/wiki/Highlight_all_search_potype_matches


5

Thêm một giải pháp bằng cách kết hợp 2 câu trả lời hàng đầu:

"To clear the last used search pattern:
nnoremap <F3> :let @/ = ""<CR>

Xóa sổ đăng ký tìm kiếm @/=""có tác dụng phụ làm cho nkhông hoạt động để lấy lại tìm kiếm của bạn. Tôi thích :nohgiữ cho tìm kiếm trước đó trong đăng ký để sử dụng lại. Bạn có thể liên kết <F3>với điều đó vớinnoremap <F3> :noh<CR>
jbyler


4

Tôi chỉ sử dụng nohl đơn giản dưới đây và không cần plugin.

:nohl


4

Tôi đoán là câu hỏi ban đầu liên quan đến việc không vô hiệu hóa đánh dấu tìm kiếm mà chỉ đơn giản là xóa phần tô sáng từ tìm kiếm cuối cùng. Giải pháp tìm kiếm một chuỗi vô nghĩa, mà áp phích ban đầu đã đề cập, là một thứ tôi đã sử dụng một thời gian để xóa phần tô sáng từ một tìm kiếm trước đó, nhưng nó xấu và cồng kềnh.

Một số gợi ý tôi đã tìm thấy để thêm nnoremap ...vào ~ / .vimrc có tác dụng ở đây là đưa vim vào chế độ thay thế khi khởi động, đây không phải là tất cả những gì tôi muốn. Giải pháp đơn giản nhất tôi tìm thấy là thêm dòng

nmap <esc><esc> :noh<return>

tới ~ / .vimrc của tôi. Điều này tuân theo nguyên tắc KISS và không can thiệp vào các phím mũi tên, sử dụng một <esc> duy nhất. Cần phải có gấp đôi <esc> trong chế độ lệnh (hoặc bộ ba- <esc> từ chế độ chèn hoặc thay thế) để xóa phần tô sáng từ tìm kiếm trước đó, nhưng từ phối cảnh UI, điều này làm cho thao tác trở nên đơn giản nhất có thể.


Bạn có ý nghĩa gì khi một <esc> can thiệp vào các phím mũi tên?
hansmosh

1
@hansmosh Xem unix.stackexchange.com/questions/28713/ triệt Tôi sử dụng hai dòng trong .vimrc của tôi như sau nmap <esc><esc> :noh<return> - to turn off search highlighting and nmap <esc>` :set hlsearch<return> - to turn on search highlighting
Lindsay Haisley

4

Tôi sử dụng như sau trong ~/.vimrc

nnoremap <Leader><space> :noh<Enter>

Điều này làm cho nó rất dễ dàng và nhanh chóng để xóa tìm kiếm được tô sáng hiện tại. Khóa lãnh đạo của tôi được ánh xạ để \điều này làm cho hành động rất dễ thực hiện với ngón tay và ngón cái hồng hào bên phải của tôi.


3

Tôi nghĩ rằng việc trộn @ShaunBouckaert và 19/03/2016 lúc 16:22 câu trả lời là một sự thỏa hiệp tốt:

" Reset highlighted search
nnoremap <CR> :let @/=""<CR><CR>

Nhấn Entervà văn bản được tô sáng không còn được tô sáng, trong khi tô sáng tìm kiếm vẫn được bật.


3

bạn có thể sử dụng : noremap để bật / tắt cho kết quả tìm kiếm, như thế này

:noremap <F3> :set hls! hls?<CR>


3

Dựa trên câu trả lời @ baruch-thậm chí, bạn có thể xóa cụm từ tìm kiếm ESCkhi nhấn đúp trong khi ở chế độ bình thường với:

nnoremap <esc> :let @/ = ""<return><esc>
nnoremap <esc>^[ <esc>^[

Tôi nghĩ ràng buộc thứ hai là OK, nhưng thứ nhất là nguy hiểm. Ánh xạ<esc> hoạt động độc đáo trong GUI vim, nhưng gây ra sự cố nghiêm trọng với các phím mũi tên và các khóa được mã hóa ESC khác khi chạy vim trong thiết bị đầu cuối. Đừng đặt nó trong của bạn ~/.vimrc mà không cần gói nó trong if has('gui_running')... end. Cũng xem xét việc thêm cái <silent>nào để tránh nhấp nháy :nohlệnh trong thanh trạng thái.
jbyler

1

Tôi cũng không thích nó. Tôi thấy thật mệt mỏi khi phải vào :nohlmọi lúc ... vì vậy tôi đặt bản đồ sau vào.vimrc

noremap <C-_> :nohl<cr>:<backspace>

Bit đầu tiên ( :nohl<cr>) xóa phần tô sáng; bit thứ hai ( :<backspace>) là một mẹo để làm sạch dòng lệnh. Tìm kiếm vẫn ở đó trong nền, vì vậy nếu bạn chỉ cần nhấn nnó sẽ làm nổi bật lại và đưa bạn đến lần xuất hiện tiếp theo.


1

Tôi đã thêm cái này vào vimrc tập tin .

command! H let @/=""

Sau khi bạn thực hiện tìm kiếm và muốn xóa những điểm nổi bật khỏi tìm kiếm của bạn, hãy thực hiện :H


1

Bạn cũng có thể thêm ánh xạ vào tệp .vimrc của mình dưới dạng,

nmap <C-N>: không tìm kiếm

và sau đó bạn có thể nhấn

Ctrl + N

đến bất cứ lúc nào để xóa văn bản được tô sáng


Vui lòng chỉnh sửa câu trả lời của bạn để đảm bảo rằng nó cải thiện các câu trả lời khác đã có trong câu hỏi này.
hongsy
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.