30

Всякий раз, когда вы хотите найти текст в vim, вы должны ввести /, а затем строку, которую вы ищете.

Однако, если строка длинная, и вы хотите сделать это несколько раз, есть ли способ сделать это, чтобы вам не приходилось вводить / andthisreallylongstring более одного раза?

12 ответов12

60

Нажмите "n" после того, как вы выполнили поиск, тогда он повторит предыдущее действие (поиск).

33

Если искомая строка находится под курсором, вы можете ввести *, чтобы искать ее вперед, или #, чтобы искать ее назад.

19

Как я обычно ищу что-то вроде;

  1. Нажмите '/'
  2. Введите термин поиска
  3. нажмите Ввод
  4. Используйте 'n' и 'N', чтобы перемещаться вперед и назад в поиске.

Vim хранит историю ваших поисков, поэтому, если вам нужны предыдущие поиски, вы можете нажать '/' и использовать клавиши UP и DOWN или <Ctrl-P> <Ctrl-N>, чтобы просмотреть историю поиска.

Вы также можете использовать '?вместо «/» искать в обратном направлении.

Мне также нравится использовать:

set ignorecase smartcase

Теперь поиск будет выполняться только с учетом регистра, если в строке поиска есть заглавные символы.

15

Два дополнительных совета, которые могут сделать ваш поиск более эффективным, - это set hlsearch и set incsearch .

  • set hlsearch , хорошо, выделяет результаты вашего поиска. Наберите :noh чтобы отключить их, когда они вам больше не нужны.

  • set incsearch включает пошаговый поиск.

    Извлечено из :help incsearch

    При вводе команды поиска покажите, где шаблон, как он был набран, соответствует. Соответствующая строка выделяется. Если шаблон неверен или не найден, ничего не отображается. Экран будет часто обновляться, это полезно только на быстрых терминалах.

    Без incsearch ваши результаты будут отображаться только после нажатия <CR> на вашем поисковом слове.

    Пример:

    Вы хотите найти wildignore

    Вы вводите /wild и первое совпадение подсвечивается автоматически.

    Затем введите i и он перейдет к следующему правильному совпадению.

13

Еще один совет, который еще не был рассмотрен: нажав символы q а затем / , вы получите список предыдущих поисковых терминов. Вы можете редактировать их, как любую другую строку в документе, а затем нажать клавишу ввода, чтобы повторно использовать их для нового поиска.

8

Нажав /, чтобы начать поиск, вы можете использовать стрелку вверх для прокрутки истории поиска.

Вы можете ввести регулярное выражение, чтобы избежать необходимости вводить весь поисковый термин: and.*longstring

7

Разве просто удар / без аргументов не работает для вас? На всех наших системах это повторяет любой поиск, который был выполнен последним.

6

Есть хороший шаблон, который вы можете использовать для поиска дерганного текста. Тогда вам даже не нужно вводить слово само по себе, если вы перешли к нему другими способами, а не поиском. В итоге, если вы находитесь на первом символе слова, которое хотите найти:

v
e
y
/
Ctrl-r
0
Enter

(затем переходите к следующему совпадению с n или N)

Однако * (или #) выполняет почти то же самое, что и все эти команды. Разница лишь в том, что вы можете быть гибкими в зависимости от того, сколько слова вы укажете (вместо e, в конце слова вы можете выбрать столько, сколько хотите, например, 9l)

1
  • /string - поиск строки вперед
  • ?string - поиск строки
  • n - Поиск следующего экземпляра строки
  • N - поиск предыдущего экземпляра строки
1

Кроме того, вы можете вставить содержимое любого регистра в строку поиска, нажав Ctrl+R, а затем имя регистра, например, / Ctrl+R 0 Enter.

1

Много времени при программировании я хочу искать aVeryLongVariableNameInTheProgram .

В vim вы можете очень легко скопировать текст в буфер / регистр, а затем найти его:

  • Наведите курсор на первый символ слова
  • "Byw чтобы вытащить текст aVeryLongVariableNameInTheProgram в буфер B (выберите ваш любимый, я использовал B)
  • /^RB (косая черта, Ctrl-R, B), чтобы вставить буфер B в строку поиска

Конечно, вы можете также вернуться к концу строки и т.д. Вместо того, чтобы дергать одно слово - я просто использую приведенную выше последовательность все время.

0

Длинная строка, которую вы вводите имя переменной? Или длинная строка в вашем тексте? Затем нажмите * чтобы найти слово / строку под вашим курсором.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .