Я имею set hlsearch
в моем ~/.vimrc
. Это обычно очень полезно, но это является раздражающим, чтобы должным быть сделать :noh
после того, как я делаю замену как '<,'>s/$/',/
(который выделяет конец каждой строки после того, как я выполню его). Как я добираюсь vim
не выделяться после замены как это?
Я нахожусь на Ubuntu 9.04 с vim
7.2. У меня есть та же проблема на OS X 10.6 (также vim
7.2). Что-то, что работало бы над обоими, будет желаемым.
ОБНОВЛЕНИЕ: Все ответы, которые я получил, просто добавляют ключ, отображающийся, чтобы сделать :noh
(или эквивалент). Я действительно стараюсь избегать пользовательских ключевых поведений, что я действительно привык бы к, но затем заставлять меня потерпеть полный провал без них (например, в компьютере друга, и т.д.). Я хотел бы vim
автоматически сделать :noh
после выполнения замены. Таким образом, я только хочу hlsearch
при использовании /
или *
(возможно, несколько других случаев), но не другие времена.
Если Вы не хотите постоянно отключать, можно обязать ключ переключать выделение, как предложено в этом ответе на подобный вопрос на stackoverflow.
map <F12> :set hls!<CR>
imap <F12> <ESC>:set hls!<CR>a
vmap <F12> <ESC>:set hls!<CR>gv
Если Вы хотите постоянно отключить выделение:
11.1. After I searched for a text with a pattern, all the matched text
stays highlighted. How do I turn off the highlighting
temporarily/permanently?
The 'hlsearch' option controls whether all the matches for the last
searched pattern are highlighted or not. By default, this option is not
enabled. If this option is set in a system-wide vimrc file, then you can
turn off the search highlighting by using the following command:
:set nohlsearch
(от FAQ VIM)
У меня есть два различных решения, оба довольно хорошие, каждый с детальным различным поведением. Моим фаворитом является опция 2:
У меня есть следующие 2 строки в моем .vimrc:
autocmd cursorhold * set nohlsearch
autocmd cursormoved * set hlsearch
Первый ожидает тайм-аута (не настраивающийся), если курсор не перемещается и выключает hlsearch. Второй снова включает его, если курсор перемещается снова.
Это не идеальное решение, но это работает на меня (и будет близко к идеальному, когда тайм-аут настраивается - на данный момент, тайм-аут связывается со встроенным таймером для энергии.)
Или можно попробовать эти строки:
autocmd cursorhold * set nohlsearch
noremap n :set hlsearch<cr>n
noremap N :set hlsearch<cr>N
noremap / :set hlsearch<cr>/
noremap ? :set hlsearch<cr>?
Это выключает hlsearch после краткого тайм-аута никакого перемещения курсора и снова включает его для стандартных поисковых команд. Это не покрывает все возможности снова включения hlsearch, но это - действительно начинающий для подтверждения концепции.
Я просто ввожу "/asdf" (принимающий "asdf", не находится в файле) избавиться от выделения. Я знаю, что это довольно упрощенно, но это работает на меня.