оптимизировать окружение цитатами

Dec 22 2020

Я хочу заключить слово в кавычки

Вот мой набор команд:

  • ciw
  • затем, когда я нахожусь в режиме вставки, я печатаю '(я использую
    расширение vim в коде Visual, поэтому я получаю два, 'я не знаю, относится ли это к «нормальному» vim)
  • затем Ctrl+ C+t
  • тогда p

Это работает, но для этого может быть более короткая версия. Не могли бы вы помочь?

Ответы

2 Macunaíma Dec 22 2020 at 20:54

Вы можете попробовать плагин 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] 
    
2 BLayer Dec 22 2020 at 20:43

Если вы используете расширение 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 . Затем вы можете легко обернуть слова (и многое другое) чем-нибудь, чем вы обычно оборачиваете слова (например, скобками).