Làm cách nào tôi có thể xóa đánh dấu từ trong tài liệu hiện tại (ví dụ như sau khi tìm kiếm một từ)?


61

Khi bạn tìm kiếm một từ trong một tệp có nội dung giống như vậy /console.log, tất cả các trường hợp console.logđược tô sáng.

Khi bạn không còn hứng thú với những điều này, việc làm nổi bật có thể gây mất tập trung. Chiến lược hiện tại của tôi để loại bỏ việc làm nổi bật là làm một cái gì đó như thế nào /asntehua. Có một cách thích hợp để loại bỏ từ này nổi bật?


2
Không có gì để gõ nhanh hơn /skldafjlksjdf;)
Shahbaz

1
Thêm phần sau vào .vimrc của bạn : :nnoremap <silent> <CR> :nohlsearch<CR><CR>. Nhấn return trong chế độ lệnh và phần tô sáng biến mất.
nilon

Câu trả lời:


47

Thay vào đó :noh, tôi thích :let @/=""ánh xạ tới phím tắt.

Sự khác biệt là để :nohlại cụm từ tìm kiếm trong sổ đăng ký tìm kiếm, nNtrong chế độ bình thường, tiếp tục tìm kiếm bằng cách chuyển sang trận đấu tiếp theo / trước đó và đánh dấu lại. :let @/=""Mặt khác, việc sử dụng sẽ gây ra thông báo E25: No previous regular expressionđể con trỏ của bạn ở vị trí của nó , điều này đặc biệt thuận tiện nếu bạn chưa biết ctrl- ochưa và vô tình nhấn n.

Điều này cũng có thể được sử dụng theo cách khác. Để làm cho vim làm nổi bật một số văn bản mà không cần nhảy tới nó, bạn có thể:let @/="some text"

Trong các biểu thức này, @ cho phép bạn tham khảo một thanh ghi và @ / là thanh ghi giữ mẫu tìm kiếm cuối cùng.


31

Đơn giản chỉ cần gõ

:noh<cr>

(Trường hợp <cr>tượng trưng cho sự trở lại vận chuyển, tức là Enter.) Phiên bản đầy đủ không viết tắt của lệnh này là :nohlsearch.

Để thuận tiện, bạn có thể có một bản đồ như

nnoremap <Leader><space> :noh<cr>

trong của bạn .vimrc. Vì nhà lãnh đạo của tôi là Không gian, điều này cho phép tôi xóa việc làm nổi bật chỉ bằng cách chạm vào không gian hai lần. (Theo mặc định, <Leader>được đặt thành \)

Một tùy chọn phổ biến khác là liên kết nó với Ctrl+ L, vì đây ít nhiều là mặc định cho 'vẽ lại màn hình thiết bị đầu cuối', rất gần với những gì bạn đang làm:

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

Điều này có tác dụng phụ là cũng vẽ lại màn hình thiết bị đầu cuối, có thể bị chậm nếu kết nối thiết bị đầu cuối của bạn chậm (điều này rất hiếm trong những ngày này).
LƯU Ý: Nếu bạn đang sử dụng tpope / vim nhạy cảm thì nó đã cung cấp <C-l>ánh xạ được liệt kê ở trên.


21

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 hoặc thực hiện tìm kiếm mới)


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>
    

Tôi nói thêm nnoremap <esc> :noh<return><esc>để tôi vimrcnhưng nó không làm việc. Tôi đã jklập bản đồ để trốn thoát, đó có thể là lý do tại sao?
mbigras

Chính xác thì chuyện gì đang xảy ra? Có lẽ bạn đã vô hiệu hóa ESCchìa khóa?
Sheharyar

nhấn jkkhông tắt văn bản được tô sáng (nhưng vẫn hoạt động như Esc). Nhấn phím của tôi Escở phía trên bên trái của bàn phím sẽ tắt văn bản được tô sáng.
mbigras

Vì vậy, bạn có câu trả lời của bạn ngay tại đó. Đặt jkbản đồ của bạn bên dưới ESCbản đồ và đảm bảo rằng bạn đang sử dụng một cách đơn giản mapthay vìnoremap
Sheharyar

Việc ánh xạ lại lối thoát có thể gây ra sự cố với các phím mũi tên và tôi giả sử các tình huống khác sử dụng mã thoát. vi.stackexchange.com/questions/11144/ Mạnh
Rob Mosher

2

Sau khi thử một số giải pháp được đề xuất cho các phím tắt cho điều này trong ~ / vimrc, tôi quyết định chỉ cần thêm nmap <esc><esc> :noh<return>vào nó. Lối thoát kép ngăn chặn sự can thiệp vào chức năng của các phím mũi tên. Nếu bạn đang ở chế độ chèn, một lối thoát ba là cần thiết. Điều này là nhanh chóng để thực hiện và dễ nhớ.


2

Tôi đã thêm một autocmd vào .vimrc để xóa phần tô sáng bất cứ khi nào bạn vào chế độ chèn.

 autocmd InsertEnter * :let @/=""

2
Sử dụng nohlthay vì let @/=""sẽ là một cách tiếp cận tốt hơn, kể từ đó bạn không ghi đè tìm kiếm hiện tại của mình.
jamessan

@jamessan nó hoạt động với :let @/=""lệnh nhưng autocmd InsertEnter * :nohkhông vì lý do nào, tại sao không?
tobek

1
Trên thực tế tôi đã tìm thấy lý do: theo tài liệu 'Không thể tắt tính năng tìm kiếm nổi bật với ": nohlsearch" trong một autocommand' - chi tiết về lý do: vimdoc.sourceforge.net/htmldoc/autocmd.html#autocmd-searchpat
tobek

1

Nếu bạn muốn không tô sáng sau bất kỳ tìm kiếm nào, bạn có thể sử dụng (tốt hơn):

:set nohls

hoặc điều này (tệ hơn):

:hi Search NONE

1

Khi tôi gõ :help incsearch, tôi tìm thấy những điều sau đây trong hướng dẫn:

augroup vimrc-incsearch-highlight
  autocmd!
  autocmd CmdlineEnter /,\? :set hlsearch
  autocmd CmdlineLeave /,\? :set nohlsearch
augroup END

mà tôi đã từ chức để sử dụng vì các giải pháp khác mà tôi đã thử không hoàn hảo và giải pháp này xuất phát từ "miệng ngựa", có thể nói như vậy. Nó làm nổi bật tất cả các kết quả tìm kiếm trong cửa sổ hiện tại.


1
/asdfasdf

Điều này có lợi thế là bạn không phải gõ exaclty. Nhược điểm là, có một cơ hội khoảng 1: 68719476736 trong tệp 4096 byte mà điều này không hoạt động và con trỏ của bạn sẽ nhảy đến một nơi khác. Cơ hội này tăng cho các tập tin lớn hơn.


1
Chào mừng bạn đến với vi SE! Tôi nghĩ rằng chuỗi asdfasdfnày đặc biệt theo nghĩa là nó xảy ra thường xuyên trong các tệp thực tế, hơn là một chuỗi 8 byte được chọn ngẫu nhiên. Như vậy, cơ hội cao hơn nhiều. :-)
user259412

0

Tôi không nghĩ loại bỏ hls chút nào sẽ là một điều tốt, làm thế nào để dễ dàng bật hoặc tắt tạo một lối tắt dễ dàng (boolean) Trong trường hợp của tôi ->

" to reselect use gv in normal mode
nnoremap <S-F11> <ESC>:set hls!<cr>
inoremap <S-F11> <C-o>:set hls!<cr>
vnoremap <S-F11> <ESC>:set hls!<cr> <bar> gv

Phép thuật xảy ra vì " !" ở cuối cài đặt


0

Tôi thấy rằng rất hiếm khi tôi muốn làm nổi bật tất cả và khi tôi cần làm nổi bật nó chỉ trong một khoảnh khắc ngắn. Giải pháp của tôi là

nnoremap <Leader>/ set hls!<CR>

Điều này cho phép tô sáng khi bạn nhấn \/và vô hiệu hóa lại nếu bạn nhấn lại. Điều này cho phép dễ dàng truy cập để làm nổi bật trong các trường hợp hiếm khi bạn cần nó.

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.