Позбудьтеся виділення Віма після пошуку тексту


79

У VIM після пошуку тексту за допомогою команди "/" цей текст залишається виділеним.

Яка команда видалити це? Я взагалі не хочу видаляти можливості підсвічування, але не хочу мати усіх цих яскравих текстових плям, коли я знайду те, що мені потрібно.

Дякую.



Відповіді:


123

Введіть це:

:noh

8
... що скорочено :nohlsearch, що має допомогти вам запам’ятати його!
Cascabel

39
Я :nohсклав карту як таку: nnoremap <silent> <esc> :noh<cr><esc>я вважаю, що вдарити втечу є природним vim способом очищення підсвітки пошуку.
Пітер Рінкер,

6
Може бути корисним зауважити, що це не вимикає підсвічування пошуку, воно просто очищає поточне виділення (саме цього я і хочу).
wchargin 02

30

Ви можете перемкнути його за допомогою

:set hls!

Звичайно, швидкою і брудною альтернативою є ще один пошук безглуздя:

/asdsad

Зазвичай я прив'язую ключ, щоб :set hls!зробити це легким, і використовую підступний підхід, коли я перебуваю у vim на якійсь машині, на якій не встановлено свій профіль.


Пошук безглуздя має кілька важливих мінусів: він додає сміття в історію пошуку. Це може бути незручним для деяких користувачів так само, як зайве виділення відволікає увагу від роботи, яку потрібно виконати.
Віктор Ярема


12

У мене це є у моєму .vimrc:

map <leader>h :set hlsearch!<cr>

Отже, коли я набираю:

\h

Він включає та вимикає підсвічування.


12

Повністю вимкніть основні моменти пошуку

:set nohlsearch

Очистити до наступного пошуку

:nohlsearch

або :nohкоротше. Це очищає виділення, доки не буде здійснено новий пошук nабо Nбуде натиснуто


Зніміть натискання власної карти

  • Чіткі основні моменти натискання ESCклавіші

    nnoremap <esc> :noh<return><esc>
    
  • Очистити виділення під час натискання \(зворотна коса риса) двічі

    nnoremap \\ :noh<return>
    

Я намагаюся, щоб мій ~ / .vimrc був якомога мінімальним, проте цей приємний фокус із подвійною зворотною рискою знайшов місце там - дякую.
solr

9

Якщо ви не хочете видаляти виділення, одним з найкращих способів є очищення реєстру пошуку, якщо, звичайно, вам пізніше потрібні елементи пошуку. Це запобіжить необхідності повторного ввімкнення підсвічування, а (Редагувати: nohне вимикає назавжди виділення) запобігає випадковому стрибку. Ось як я налаштував шахту:

nmap <silent> ,/ :let@/=""<CR>

Це робить відображення послідовності ключів ,/у звичайному режимі, щоб очистити регістр пошуку @/, встановивши для нього порожній рядок. Це лише альтернатива вже сказаному.


У вашій відповіді є два самоцвіти. Чому б не поєднати їх? nmap <silent> ,/ :nohlsearch<CR>.
Брейді Трейнер,


0

На додаток до «очищення реєстру пошуку», ви навіть можете скинути реєстр пошуку до попереднього значення:

command! -nargs=* -range S
\ let atslash=@/|exe ':'.<line1>.','.<line2>.'s'.<q-args>|let @/=atslash

Однак:
- це не скидає попередній статус :hls. Я взагалі не вірю, що це можливо.
- це визначає нову команду,, :Sдля використання замість :s. Ви можете використовувати a cabbrevдля зіставлення одного з іншим, але це зламається, коли ви додасте діапазон до команди заміни.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.