Лого на страниците (малко).

Заглавна страница > Четива > Четива за глотометрията > cream в режим „expert“ > 24. Командата g (global)

 

Александър Иванов

cream в режим „expert“

24. Командата g (global)

Командата :g или :global има следния формат:

:[range]g[lobal][!]/<pattern>/ cmd

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

Ако не е зададена област на действие (range,), командата претърсва всички редове в текста за зададения шаблон (pattern) и прилага към тях командата cmd (всяка възможна команда на vim). Ако пред шаблона има удивителен знак, действието ще се извърши върху всички редове, които не отговарят на шаблона за търсене. Синоним на :g! е командата :v[global].

Примери:

:g/^Забележка:/ d

ще изтрие всички редове, които започват със „Забележка:“.

Направете значеща разликата между главни и малки букви (:set noignorecase) и

:g!/^[А-Я]/ d

или

:v/^[А-Я]/ d

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

Интересна е възможността с тази команда да се правят „колекции“ от редове, отговарящи (или не отговарящи) на дадено условие. Затова се използва възможността да се добавят данни (append) в регистър.

Ако искаме да използваме регистър x, първо трябва да го създадем или да го изчистим, ако вече съществува. Това може да стане със следната команда в режим „експерт“: 0"xy0, тоест поставяме курсора в началото на реда и копираме в регистър x нула символа. Или qxq — командата q включва/изключва запис в регистър (в примера — в регистър x). По-рано посочих и възможността с командата let да запишем в регистъра x „черната дупка“ — регистъра "_.

И след това:

:g/\<cream\>/ y X

Всички редове (абзаци), съдържащи cream като отделна дума, ще бъдат събрани в регистъра x. Припомням — името на регистъра трябва да е изписано с главната буква (X).

Сега може да отворим нов текстов буфер (например с команда :new) и да препишем в него съдържанието на регистъра x (чрез "xp). Е, ако искате да съхраните този текст, трябва да го запишете като файл.

Или да препишем съдържанието на регистъра x в системния буфер за временно съхраняване (+):

:let @+ = @x

и да го изтеглим в друга програма.

Тази последна команда вече е на вградения във vim макроезик, на него е написан и целият cream.

Страница: А. И.
Електронна поща
Дата на публикуване: 15.V.2014
Последна редакция: 27.IV.2023
Съобразено с
html5/css3