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

10

Я использую a"движение довольно часто в VIM; например, используя ca"при рефакторинге кусок кода, чтобы заменить жестко закодированный аргумент именем переменной. Проблема с этим подходом состоит в том, что a" включает ведущие пробелы, если нет пробелов :

Любые конечные пробелы включены, если их нет, тогда включается начальный пробел.

Таким образом, когда я редактирую вызов функции следующим образом:

aFunction(arg1, "toBeReplaced", arg3) #original
aFunction(arg1, replacedArg, arg3)    #refactored

Я должен вручную повторно вставить пространство до того, replacedArgкак ca"удалит его.

Есть ли подобное движение, которое не включает это пустое пространство, или я могу использовать что-то еще, ca"что избавляет меня от необходимости вводить дополнительное пространство?

Ноты:

  • cf"делает то, что я хочу, пока строка не содержит экранированных кавычек, но требует, чтобы у меня был курсор в начале строки. Я хотел бы что-то, что я могу использовать в любом месте строки, и ?"<Enter>cf"довольно неудобно печатать.
  • Речь идет не столько об одном <Space>нажатии клавиши, сколько о том, что я часто поначалу забываю включить пробел, что обходится мне как минимум в четырех дополнительных нажатиях клавиш ( bi<Space><Esc>) и нарушает мой фокус. Таким образом, длина команды замены не так важна, поскольку она удаляет только текст между заданными символами и затем переходит в режим вставки.
l4mpi
источник
1
Вместо того, ?"<Enter>чтобы использовать для поиска цитаты в обратном направлении в строке, вы можете использовать F". Fтак же, как, fно ищет влево. Ответы ниже выглядят лучше для вашего вопроса, но Fэто полезная команда сама по себе.
Литис

Ответы:

1

С /superuser/537453/vim-copy-quoted-string-without-whitespace : используйте 2i"вместо a". Также см :help i'.

Себастьян Бласк
источник
Работает как шарм! Я решил принять этот ответ поверх остальных, потому что он работает с простым vim, не полагаясь на плагины.
17
10

Существует, в Wellle в targets.vim плагин. Цитировать соответствующую часть (внутри раздела « Цитата »):

a' a" a

  • Выберите цитату.

  • Это переопределяет текстовый объект Vim по умолчанию для поддержки поиска.

  • В отличие от текстовых объектов Vim, это не включает окружающий пробел .

VanLaser
источник
Похоже, этот плагин переопределяет a"и использует A"для исходного поведения?
Мартин Турной
... в то время как, я полагаю, также позволил искать "налево"
VanLaser
5

В качестве альтернативы вы можете использовать текстовый объект аргумент / параметр. Теперь у Vim нет собственных текстовых объектов-аргументов, но есть несколько плагинов, которые делают:

Лично я использую свой собственный плагин argumentsmen.vim, но я слышал хорошие отзывы как о sideways.vim, так и о целях.

Питер Ринкер
источник