2011-01-31 1 views
6

Я пытаюсь найти часть какой-либо линии, которая дергается в визуальном режиме.vim search pattern для фрагмента текстовой строки, выдернутой в визуальном режиме

Какой самый быстрый способ сделать это в VIM? Для exmaple,

Hello, #{1} world. 

жмет v введите визуальный режим и выберите llo, #{1} wor в строке 1. Затем я выдернула выделенный текст, нажав у, а потом, я пытаюсь найти выделенный текст путем нажатия /. Это приводит к следующим вопросам:

A: Как пройти мимо дернутого текста, когда я нахожусь в режиме поиска?

B: Как избежать работы экранирующих символов для шаблона поиска?

+0

Исправлено название для * визуальный * режим (был * виртуальный * раньше) – eckes

ответ

3

Я перекрываться the star command for the visual mode (NB:. Она требует файл из lh-vim-lib). Он отвечает на ваши потребности:

  1. выберите в визуальный режим
  2. нажмите */#
  3. продолжить поиск с п/N
+0

Спасибо. Я скопировал функцию lh # visual # selection в v_star.vim. Отлично работает! – SunLiWei

6

Когда вы дергать текст (и опускаете указание регистра дергать его в), он переходит к регистрации 0. Таким образом, если вы хотите найти для этого скопированного текста, нажмите ESC, чтобы войти в нормальный режим, а затем

/CTRL-r0 

(т.е. нажмите /, а затем CTRL +г, то), чтобы вытащить содержимое регистра 0 в шаблоне поиска.

Некоторые примечания:

  • Для поиска других шаблонов, хранящихся в других регистрах, можно ввести :reg и посмотреть содержимое регистра, прежде чем решить, какой зарегистрировать содержание использовать для поиска.
  • Чтобы вынуть в другой регистр, чем 0 (например, 2), вы можете ввести "2y (:he v_y).
  • Чтобы найти выделенный текст напрямую, вы можете использовать сопоставление, описанное here, которое позволяет просто нажать X (символ верхнего регистра X), в то время как в визуальном режиме для поиска этого текста.
  • Для поиска в целом this vimcast дает вам введение в очень мощное окно командной строки с историей поиска (обнаружено это две недели назад и абсолютно нравится!).
+0

Спасибо за четкое объяснение. – Kalyan

12

А:

Ctrl-R .

Б:

В дополнение к Ctrl-R трик, есть также Ctrl-R=, что позволяет вводить в выражении должны быть оценены и расширяется в результате ,

/ (теперь подсказка выглядит /)
Ctrl-R= (теперь подсказка выглядит как =)
escape(@0, '\^$*.~[')Enter (теперь подсказка выглядит /llo, #{1} wor)

Отметьте, что @reg означает «содержимое регистра reg», а регистр 0 - последний yank или delete. Я думаю, , избегающие все символы, которые являются особенными в VI регулярных выражений ... в любом случае, вы, возможно, предпочтете сделать отображение, чем типа, который все в

+0

Если я держу всю строку, я должен удалить '^ M' или'^@ 'с конца перед поиском. –

 Смежные вопросы

  • Нет связанных вопросов^_^