Я использую a"
движение довольно часто в VIM; например, используя ca"
при рефакторинге кусок кода, чтобы заменить жестко закодированный аргумент именем переменной. Проблема с этим подходом состоит в том, что a"
включает ведущие пробелы, если нет пробелов :
Любые конечные пробелы включены, если их нет, тогда включается начальный пробел.
Таким образом, когда я редактирую вызов функции следующим образом:
aFunction(arg1, "toBeReplaced", arg3) #original
aFunction(arg1, replacedArg, arg3) #refactored
Я должен вручную повторно вставить пространство до того, replacedArg
как ca"
удалит его.
Есть ли подобное движение, которое не включает это пустое пространство, или я могу использовать что-то еще, ca"
что избавляет меня от необходимости вводить дополнительное пространство?
Ноты:
cf"
делает то, что я хочу, пока строка не содержит экранированных кавычек, но требует, чтобы у меня был курсор в начале строки. Я хотел бы что-то, что я могу использовать в любом месте строки, и?"<Enter>cf"
довольно неудобно печатать.- Речь идет не столько об одном
<Space>
нажатии клавиши, сколько о том, что я часто поначалу забываю включить пробел, что обходится мне как минимум в четырех дополнительных нажатиях клавиш (bi<Space><Esc>
) и нарушает мой фокус. Таким образом, длина команды замены не так важна, поскольку она удаляет только текст между заданными символами и затем переходит в режим вставки.
?"<Enter>
чтобы использовать для поиска цитаты в обратном направлении в строке, вы можете использоватьF"
.F
так же, как,f
но ищет влево. Ответы ниже выглядят лучше для вашего вопроса, ноF
это полезная команда сама по себе.