Vi/Vim, возможно, является поколением легенд текстового редактирования, и по сей день он занимает место в арсенале продвинутых программистов. Каждый дистрибутив Linux включает Vim по умолчанию, и вы можете установить Vim, даже если вы не являетесь пользователем системы Linux.
Почему мы все еще говорим об этом древнем программном обеспечении? Потому что это круто! Он включает в себя легкие сочетания клавиш для почти каждой функции, встроенного поиска выражений и надежной и устойчивой экосистемы плагинов. Он имеет еще другие современные текстовые редактор, такие как Nifty Syntax. Вы влюбитесь в этот текстовый редактирующий артефакт, прежде чем узнать его.
Возвращаясь к теме, сегодня мы изучим функцию текстового поиска и замены в Vim, чтобы помочь вам лучше использовать Vim. Если вы хотите узнать больше об операциях Vim, вы можете ответить на «Информация» в фоновом режиме общедоступной учетной записи «Liangxu Linux», и есть электронные книги и видео, организованные мной.
создание демонстрационного файла
Чтобы лучше объяснить последующий контент, нам сначала нужно подготовить демонстрационный файл. Здесь я создаю текстовый файл, содержащий все установленные пакеты в системе.PackageList.txt
как демонстрационный файл.
cat PackageList.txt
Теперь давайте откроем этот текстовый файл в Vim. После этого мы выполним демонстрацию последующей операции в этом файле.
vim PackageList.txt
Функция поиска Vim
В Windows функция поиска многих программ может использовать комбинацию клавиш Ctrl+F для вызова окна поиска, а затем завершить последующий поиск. Но в Vim нам нужно реализовать функцию поиска, используя следующую структуру команд:
?<search_string>
Например, мы хотим искать в файле PackageList.txtpython
Это ключевое слово можно сделать так:
?python
По умолчанию при поиске будет найдено совпадение, ближайшее к текущему курсору. Если мы хотим перейти к следующему/предыдущему результату поиска, используем следующие клавиши:
- n - найти следующее совпадение
- N - найти предыдущее совпадение
Примечание. Перед использованием вышеуказанных клавиш не забудьте нажатьEnter
ключ. В противном случае поисковый запрос будет изменен!
Выше приведены только основные функции поиска в Vim.Если вы думаете, что это все его поисковые функции, то это действительно шаблон. Далее давайте попробуем более мощную функцию поиска.
Сначала укажите формат поиска:
/\<search_string>/>
здесь,\<
Указывает на начало строки,/>
Указывает конец строки, а середина — это строковое выражение, которое необходимо найти.
Как и в предыдущем примере, используйтеn
илиN
для навигации по результатам поиска.
Строковое выражение в середине поддерживает не только прямой ввод ключевых слов, но и использование подстановочных знаков. Например, мы хотим найтиpython-
начиная со строки, вы можете использоватьpython*
. здесь*
означает соответствие любому символу.
/\<python*/>
После поиска Vim по умолчанию поместит курсор в начало соответствующего ключевого слова.
Не нравится позиционирование курсора по умолчанию? Неважно, Vim позволяет нам изменить положение символа по умолчанию, в котором находится курсор.
/python/e
здесь,e
используется для размещения курсора в конце соответствующего ключевого слова.
Кроме того, используя следующие режимы команд, вы также можете расположить курсор ниже или выше результатов поиска.
/<search_string>/+2
or
/<search_string>/-3
Вы также можете сместить курсор от начала/конца поисковых совпадений. Например, следующая команда помещает курсор на 3 символа ближе к началу.
/<search_string>/s+3
/<search_string>/b+3
здесь,s
означает начало,+3
Представляет 3-й символ с начала.b
Также означает начало, которое работает какs
. На скриншоте также видно, что Vim автоматическиb
перевести наs
.
Если вас интересует смещение от конца результатов поиска, используйтеe
(конец).
/<search_string/e-2
Вот еще один отличный способ поиска в текстовых файлах.
:%s/<search_pattern>//gn
Какова конкретная функция этой команды? Давайте сначала немного продадим здесь, пожалуйста, читайте дальше. Если вы хотите узнать больше об операциях Vim, вы можете ответить на «Информация» в фоновом режиме общедоступной учетной записи «Liangxu Linux», и есть электронные книги и видео, организованные мной.
Замена строки Vim
Поиск и замена — это набор общих и обязательных функций в любом текстовом редакторе. Ниже приведено введение в функцию замены строки в Vim.
Vim реализует подстановку, используя следующую структуру команд.
:<range> s/<search_string>/<replace_string>/<modifier>
- диапазон — определяет диапазон, в котором выполняется функция «найти и заменить», с двумя различными значениями.
- % - выполнить для всего файла
— выполнить операцию над определенным набором строк
- search_string - строка для замены
- replace_string — новая строка, которая заменяет старую строку
- модификатор - определяет поведение замены, имеет несколько разных значений
- г - глобальная замена
- gc — запрашивать подтверждение перед каждой заменой
- gn — игнорировать функцию замены и выделять находку.
Например, в файле PackageList.txt используйтеPython3
строка заменить всеpython
нить.
:%s/python/Python3/g
Простой не так ли? Давайте еще раз посмотрим на следующую команду.
:%s/python/Python3/gc
Как видите, внизу вас спросят, хотите ли вы сделать замену. На этом этапе вы можете выбрать некоторые действия. Что означают эти немногие? Давайте посмотрим на них один за другим.
- y - Позволяет выполнять изменения.
- n - Изменения не допускаются.
- а - заменить все.
- Q - бросить задачу.
- l - просто замените этот случай. Затем выйдите.
- ^E (Ctrl + E) - прокрутить экран вверх
- ^Y (Ctrl + Y) - прокрутить экран вниз
Далее, давайте попробуем поле области видимости. На самом деле, в предыдущем примере мы использовали%
Область действия (для всей области действия файла).
Что, если мы не хотим выполнять поиск и замену во всем файле, если мы хотим сделать это только в нескольких определенных строках? Мы можем взять формат команды, подобный следующему:
:200,250 s/python/Python3/g
После выполнения вышеуказанного Vim напишет все строки, начиная с строки 200 и заканчивая строкой 250.python
заменитьPython3
.
Эта функция не ограничивается одним словом, но также может выполнять замену нескольких ключевых слов. Его формат команды следующий:
:%s/<search_term_1>\|<search_term_2>\|<search_term_3>/<replace_string>/g
Например, пусть мы хотим преобразовать весь текст вpython
а такжеpy
изменить наPython3
.
:%s/python\|py/Python3/g
деликатный случай
Все операции замены, упомянутые ранее в этой статье, чувствительны к регистру. Например,Python
,python
,PYTHON
и т.д. разные.
Если вы хотите игнорировать регистр, вы можете добавить\c
,следующим образом:
/<search_term>\c
:%s/<search_term>\c/<replace_term>/g
Но эта настройка временная, она станет недействительной после закрытия Vim. Если вы хотите сделать это раз и навсегда, вы также можете начатьvimrc文件
Прямая установка нечувствительна к регистру.
set ignorecase
Также есть интересный подход: умный режим капитализации.
set smartcase
ignorecase
Заставит Vim игнорировать регистр. Однако, если ключевое слово для поиска состоит только из заглавных букв,smartcase
сделает Vim снова чувствительным к регистру.
Примечание: если вы хотите включитьsmartcase
, сначала нужно установитьignorecase
.
В заключение
Vim может помочь вам сделать многое, тренироваться более терпеливо, и я верю, что вы будете любить этот древний артефакт все больше и больше.
Это все настоящая любовь после прочтения. Поставить большой палец вверх и уйти? Ваши «Три звена» — самая большая мотивация для Лян Сюй продолжать творить!
- Сфокусируйся наоригинальныйНет публики"Хороший линукс», получите последнюю галантерею Linux в первый раз!
- Ответьте на фон официальной учетной записи [информация] [интервью] [резюме], чтобы получить интервью, самосовершенствование, резюме и другую информацию о выбранных производителях первого уровня.
- Следите за моим блогом:lxlinux.net