2014-09-24 2 views
3

Часто мне нужно искать больших режима XML-файлы для следующего вхождения слова под курсором, но предпочтительно не если это тег закрывающий тегНабор iskeyword выборочно

В приведенном ниже примере #, где находится курсор. Использование * или # с ключом без ключа > или < будет перемещаться между <Dealid> и </Dealid>.

<Deali#d>4444</Dealid> 
... 50 lines 
<Dealid>6666</Dealid> 
... n lines 
<Dealid>5643</Dealid> 

Я попытался :set iskeyword+=<, который работал отлично для перехода к следующему матчу, но он изменил vey включить < закрывающего тега так что перемещение к началу 6666, в течение, например, и набрав vey будет дергать 6666< вместо 6666.

В любом случае, чтобы получить лучшее от обоих слов или ограничить iskeyword+=< операциям * и #?

ответ

4

Это должно делать то, что вы хотите.

nnoremap * :set iskeyword+=<<CR>*:set iskeyword-=<<CR> 
nnoremap # :set iskeyword+=<<CR>#:set iskeyword-=<<CR> 

Он устанавливает изменения iskeyword перед выполнением * или #, а затем сбрасывает его.

+0

Perfect. Спасибо, что это крутой совет для других вещей. – Steve

0

Вместо того, чтобы менять 'iskeyword', возможно, используйте visual star search. Это позволит вам визуально выбрать текст, а затем нажать *. например va<*

Если вы не хотите использовать плагин вы можете поместить следующее отображение в вашем ~/.vimrc файле:

xnoremap * y/\V<c-r>=escape(@", '\')<cr><cr> 

Примечание: это отображение задавливает безымянный регистр, так что, вероятно, будет лучше использовать more advanced mapping или plugin.

+0

Я попробовал визуальный поиск с использованием * ранее и не понравился, но спасибо за предложение. Я обязательно посмотрю плагин – Steve