
Я использую небольшую программу, которую я написал, которая принимает шаблон регулярного выражения в качестве параметра и ищет более 2000 файлов. Файлы находятся в иерархии каталогов.
Шаблон может быть в нескольких файлах и несколько раз в одном файле. После нахождения имен файлов и строк, в которых встречается шаблон, программа вызывает vi
с +line
номером первой строки и всеми найденными именами файлов.
Теперь все работает, но одно время я пытался указать +line
для каждого файла ( vi +2 x1 +5 x2
), но это помещало курсор на строку 5 в x1
и строку 1 в x2
, а не на то, что мне было нужно, поэтому я отказался от этой идеи.
Шаблоны часто сложные, и я не хочу вводить их дважды, поэтому теперь я иногда использую копирование и вставку для поиска следующей строки в vi
. Было бы здорово настроить vi
историю поиска с шаблоном, тогда я мог бы использовать/ + ↑+ Return, без повторного ввода или копирования/вставки, чтобы найти все шаблоны. Затем я могу использовать , :n!
чтобы перейти к следующему файлу и продолжить использовать шаблон.
Похоже, что шаблон сохранен..viminfo
в моем каталоге. Могу ли я просто обновить этот файл перед запуском vi
или есть какая-то библиотека или утилита командной строки, чтобы сделать это?
решение1
Нет необходимости исправлять ~/.viminfo
файл.
Как вы используетеvim
вы можете использовать +/pattern
опцию командной строки, чтобы поместить курсор на строку шаблона. После этого вы можете использовать , nчтобы перейти к следующим вхождениям (если не в начале строки, то это будет первое вхождение, в противном случае второе вхождение).
На странице руководства написано, что курсор будет на первом вхождении шаблона, но по моему опыту он находится на первом символе строки с этим шаблоном. Со страницы vim
man
:
+/{pat} For the first file the cursor will be positioned on the
first occurrence of {pat}. See ":help search-pattern" for
the available search patterns.