оптимизировать окружение цитатами
Я хочу заключить слово в кавычки
Вот мой набор команд:
ciw
- затем, когда я нахожусь в режиме вставки, я печатаю '(я использую
расширение vim в коде Visual, поэтому я получаю два,'
я не знаю, относится ли это к «нормальному» vim) - затем Ctrl+ C+t
- тогда p
Это работает, но для этого может быть более короткая версия. Не могли бы вы помочь?
Ответы
Вы можете попробовать плагин vim-Surround . Чтобы заключить слово в кавычки, пойдешь ysiw'
. Плагин дает вам возможность:
добавить (
ysiw"
)word -> "word"
изменить (
csiw"'
)'word'
удалить (
ds'
)word
окружение не только простых слов, но и всевозможных текстовых объектов:
заключить слова в круглые скобки (
ysi)"
)def func(some sequence of words) -> def func("some sequence of words")
заменить круглые скобки на квадратные (
cs)]
)list = (var1, var2, var3) -> list = [var1, var2, var3]
Если вы используете расширение VS Code, как я думаю, то, насколько я понимаю, оно поддерживает по крайней мере некоторые плагины, и один из них - vim-surround . Если это так, и вы готовы использовать плагины, просто перейдите к последнему абзацу. В противном случае читайте дальше.
В нормальном режиме с курсором на первом символе слова вы можете сделать ...
i"<C-O>f<Space>"<Esc>
Ctrl-O
, из Insert, давайте вы введете одну команду нормального режима, прежде чем вернуться в Insert.
f<Space>
переходит к следующему пробелу в строке (после слова).
Проблема заключается в том, что после слова не стоит пробел (например, вы находитесь в конце строки или за ним стоит знак препинания). Вам нужно будет настроить команду нормального режима (например, на f.
или $<Left>
).
Это всего лишь один пример того, как это сделать, но я думаю, что вместо того, чтобы пытаться оптимизировать ручную команду, вам следует использовать что-то более надежное (но сложное) и поместить его в сопоставление. Например, эта подстановочная команда:
:%s/\<\w*\%#\w*\>/"&"
Это говорит о том, что возьмите позицию курсора ( \%#
) и любые символы слова, окружающие ее (оба \w*
), и замените собой, окруженное кавычками.
Отображение нормального режима для этого:
:nnoremap <leader>q :%s/\<\w*\%#\w*\>/"&"<CR>
Теперь вы оптимизировали работу до одного-двух нажатий клавиш ... независимо от длины сопоставления, которое вы выберете.
Что я действительно предлагаю, так это просто получить плагин vim-Surround . Затем вы можете легко обернуть слова (и многое другое) чем-нибудь, чем вы обычно оборачиваете слова (например, скобками).