Linux

Намерете и заменете във Vim / Vi

Намерете и заменете във Vim / Vi

Тази статия описва как да намерите и замените текст във Vim / Vi.

Vim е най-популярният текстов редактор в командния ред. Той се предлага предварително инсталиран на macOS и повечето дистрибуции на Linux. Намирането и подмяната на текст във Vim е бързо и лесно.

Основно търсене и заместване #

Във Vim можете да намерите и замените текст с помощта на : заместител () команда.

За да стартирате команди във Vim, трябва да сте в нормален режим, режим по подразбиране при стартиране на редактора. За да се върнете в нормален режим от всеки друг режим, просто натиснете клавиша „Esc“.

Общата форма на заместващата команда е както следва:

: [диапазон] s / модел / низ / [флагове] [брой] 

Командата претърсва всеки ред в [диапазон] за модел, и го заменя с a низ. [броя] е положително цяло число, което умножава командата.

Ако не [диапазон] и [броя] са дадени, само шаблонът, намерен в текущия ред, се заменя. Текущият ред е редът, където е поставен курсорът.

Например, за да търсите първата поява на низа „foo“ в текущия ред и да го замените с „bar“, бихте използвали:

: s / foo / bar / 

За да замените всички повторения на шаблона за търсене в текущия ред, добавете ж флаг:

: s / foo / bar / g 

Ако искате да търсите и замените шаблона в целия файл, използвайте символа за процента % като диапазон. Този знак показва диапазон от първия до последния ред на файла:

:% s / foo / bar / g 

Ако низ част е пропусната, тя се счита за празен низ и съответстващият модел се изтрива. Следващата команда изтрива всички екземпляри на низа 'foo' в текущия ред:

: s / foo // g 

Вместо наклонената буква (/), можете да използвате всеки друг буквено-цифров еднобайтов символ, освен като разделител. Тази опция е полезна, когато имате символа '/' в шаблона за търсене или заместващия низ.

: s | foo | бар | 

За да потвърдите всяка подмяна, използвайте ° С флаг:

: s / foo / bar / gc 
заменете с лента (y / n / a / q / l / ^ E / ^ Y)? 

Натиснете у да замени мача или л за да замени мача и да се откаже. Натиснете н за да пропуснете мача и q или Esc да се откаже от заместването. The а option замества мача и всички останали събития на мача. За да превъртите екрана надолу, използвайте CTRL + Y, и за да превъртите нагоре, използвайте CTRL + E.

Можете също да използвате регулярни изрази като шаблон за търсене. Командата по-долу заменя всички редове, започващи с „foo“ с „Vim е най-добрият“:

:% s / ^ foo.* / Vim е най-добрият / gc 

The ^ (карета) символ съвпада с началото на ред и .* съответства на произволен брой символи.

Чувствителност към регистъра

По подразбиране операцията за търсене е чувствителна към малки и големи букви; търсенето на „FOO“ няма да съответства на „Foo“.

За да игнорирате регистъра на шаблона за търсене, използвайте i флаг:

: s / Foo / bar / gi 

Друг начин за насилствено игнориране на случая е добавянето \° С след модела на търсене. Например, / Linux \ c извършва игнориране на случай на търсене.

Ако сте променили настройката на регистъра по подразбиране и искате да извършите търсене с чувствителност към малки и големи букви, използвайте Аз флаг:

: s / foo / bar / gi 

Главна буква \° С след шаблона също принуждава търсене на съвпадение на букви.

Обхват на търсене #

Когато не е посочен диапазон, заместващата команда работи само в текущия ред.

Диапазонът може да бъде или един ред, или диапазон между два реда. Спецификаторите на редове са разделени с , или ; знаци. Диапазонът може да бъде зададен с помощта на абсолютния номер на ред или специални символи.

Например, за да замените всички случаи на „foo“ на „bar“ във всички редове, започващи от ред 3 до ред 10, ще използвате:

: 3,10s / foo / bar / g 

Обхватът е включителен, което означава, че първият и последният ред са включени в обхвата.

Точката . символ показва текущия ред и $ - знакът долар последния ред. За да замените „foo“ във всички редове, започвайки от текущия ред до последния:

:.,$ s / foo / bar / 

Спецификаторът на редове може да бъде зададен и с помощта на символа „+“ или „-“, последван от число, което се добавя или изважда от номера на предходния ред. Ако числото след символа е пропуснато, то по подразбиране е 1.

Например, за да замените всеки „foo“ с „bar“, започвайки от текущия ред и четирите следващи реда, напишете:

:.,+4s / foo / bar / g 

Замяна на цяла дума #

Командата за заместване търси модела като низ, а не като цяла дума. Ако например търсите „gnu“, търсенето намира съвпадения, където „gnu“ е вградено в по-големи думи, като „cygnus“ или „magnum“.

За да търсите цяла дума, въведете \< за да маркирате началото на дума, въведете шаблона за търсене, въведете \> за маркиране на края на дума:

Например, за да търсите думата „foo“, която бихте използвали \:

:с/\/ бар / 

Заместваща история #

Vim следи всички команди, които изпълнявате в текущата сесия. За да прегледате историята на предишните заместващи команди, въведете и използвайте клавишите със стрелки нагоре / надолу, за да намерите предишна заместваща операция. За да изпълните командата, просто натиснете Въведете. Можете също да редактирате командата, преди да извършите операцията.

Примери #

Редове за коментар (добавяне # преди реда) от 5 до 20:

: 5,20s / ^ / # / 

Коментирайте редовете от 5 до 20, върнете предишните промени:

: 5,20s / ^ # // 

Заменете всички случаи на „ябълка“, „портокал“ и „манго“ с „плодове“:

:% s / ябълка \ | портокал \ | манго / плодове / g 

Премахнете последното празно пространство в края на всеки ред:

:% s / \ s \ + $ // д 

Заключение №

Търсенето и подмяната е мощна функция на Vim, която ви позволява да правите промени в текста си бързо.

Чувствайте се свободни да оставите коментар, ако имате въпроси.

Как да промените курсора на мишката и размера на курсора, цвета и схемата в Windows 10
Показалецът на мишката и курсорът в Windows 10 са много важни аспекти на операционната система. Това може да се каже и за други операционни системи, т...
Безплатни и игри с отворен код за разработване на Linux игри
Тази статия ще обхване списък с безплатни двигатели за игри с отворен код, които могат да се използват за разработване на 2D и 3D игри на Linux. Същес...
Урок Сянка на Tomb Raider за Linux
Shadow of the Tomb Raider е дванадесетото допълнение към поредицата Tomb Raider - франчайз за екшън-приключенска игра, създаден от Eidos Montreal. Игр...