поиск без перескакиваний

и другие vi-подобные редакторы

Модератор: /dev/random

Ответить
Аватара пользователя
jojahti
Сообщения: 310

поиск без перескакиваний

Сообщение jojahti »

Есть такая фишка, становишься на слово и тыцкаешь * или gd. И вим визуально выделяет в тексте эти слова и куда-то перескакивает своим курсором, при этом появляется возможность автоматически переключаться между выделениями. Интересно, есть такая же функция, но что бы он при этом свой курсор держал на исходном слове?
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5289
ОС: Gentoo

Re: поиск без перескакиваний

Сообщение /dev/random »

jojahti писал(а):
08.03.2011 21:51
Есть такая фишка, становишься на слово и тыцкаешь * или gd. И вим визуально выделяет в тексте эти слова и куда-то перескакивает своим курсором, при этом появляется возможность автоматически переключаться между выделениями. Интересно, есть такая же функция, но что бы он при этом свой курсор держал на исходном слове?

Это не просто "выделение". Более того, подсветка здесь - просто побочный эффект.
"*" - это _поиск_ текущего слова, как если бы оно было введено после нажатия "/". Разумеется, курсор перескочит на найденное слово. Если хотите вернуться на предыдущее найденное слово (т.е. с которого начали), можете нажать "N".
"gd" - это попытка найти определение локальной переменной, на имени которой стоит курсор. Вим попытается определить границы текущей функции и перейдёт на первое упоминание этого слова в ней. К вашей задаче это отношения не имеет.
Спасибо сказали:
liaonau
Сообщения: 390
ОС: gentoo

Re: поиск без перескакиваний

Сообщение liaonau »

Иными словами это не поиск, а именно выделение цветом поиска слова под курсором?
Легко. В vimrc

Код: Выделить всё

fun! <SID>HL()
if exists("g:jojahti")
    call matchdelete(g:jojahti)
endif
let g:jojahti = matchadd("Search", expand("<cword>"))
endfun
com! -nargs=0 HLW call <SID>HL()

Можете мапить HLW на удобное сочетание клавиш.
Спасибо сказали:
Аватара пользователя
ZyX
Сообщения: 355
ОС: Gentoo

Re: поиск без перескакиваний

Сообщение ZyX »

liaonau писал(а):
08.03.2011 23:07
Иными словами это не поиск, а именно выделение цветом поиска слова под курсором?
Легко. В vimrc

Код: Выделить всё

fun! <SID>HL()
if exists("g:jojahti")
    call matchdelete(g:jojahti)
endif
let g:jojahti = matchadd("Search", expand("<cword>"))
endfun
com! -nargs=0 HLW call <SID>HL()

Можете мапить HLW на удобное сочетание клавиш.

Ещё один… expand("<cword>") следует заменить на '\V'.escape(expand('<cword>'), '\'). Кроме того, * ещё генерирует \< и \> вокруг слова: '\V\<'.escape(expand('<cword>'), '\').'\>'.
Спасибо сказали:
Ответить