Окружить несколько слов цитатами сразу в vim

Мне было любопытно, есть ли способ заключить несколько слов в кавычки, используя vim. Я использую Tpope Surround и повторять, но мне было интересно, есть ли такая команда, как

3ysw"

так из

one two three 

в

"one" "two" "three"

3 ответа

Решение

Вы можете визуально выбрать диапазон с v3eи затем запустите на нем команду подстановки: :s/\v(\w+)/"\1"/g (диапазон '<,'> должен быть автоматически вставлен).

Лично я предпочел бы окружить одно слово ysw", а затем сделать w.w. (повторяйте так часто, как это необходимо).


Кроме того, запишите макрос, который выполняет оба шага (окружение и переход к следующему слову), а затем вызовите его n раз:

qqysw"3wq

После этого в вашем q зарегистрироваться, вы можете позвонить 2@q выполнить окружение на оставшиеся слова.

Если вы хотите добавить в кавычки три слова, начиная с того, в котором находится курсор, вы можете сделать следующее:

bv3ec'<Ctrl+r>"'

b помещает курсор в начало текущего слова, v входит в визуальный режим, 3e прыжки в конце текущей последовательности из 3 слов, c вырезает выделение и переходит в режим вставки, где вы вставляете левую заключающую в кавычку ' и нажмите <Ctrl+r>" чтобы вставить текущее содержимое буфера буфера обмена, прежде чем вставлять другую вмещающую кавычку ',

Опустить ведущий b если вы начинаете с курсора на первом символе первого слова.

Еще один вариант замены

s,\w\+,"&",g

s ............. substitute current line (add %s for the whole file)
\w\+ .......... one word or more
"&" ........... & represents the whole match on the search part
g ............. every occurrence on the line

OBS: при использовании подстановки мы можем использовать другой разделитель для упрощения ввода. (Также полезно при поиске таких вещей, как "/my/pattern/")

Другие вопросы по тегам