Estou usando o a"
movimento com bastante frequência no vim; por exemplo, usando ca"
ao refatorar um pedaço de código para substituir um argumento codificado por um nome de variável. O problema dessa abordagem é que a"
inclui espaços em branco à esquerda se não houver espaço em branco à direita :
Qualquer espaço em branco à direita é incluído, a menos que não exista, o espaço em branco à esquerda é incluído.
Assim, quando eu edito uma chamada de função como esta:
aFunction(arg1, "toBeReplaced", arg3) #original
aFunction(arg1, replacedArg, arg3) #refactored
Eu tenho que reinserir manualmente o espaço antes replacedArg
como ca"
excluí-lo.
Existe algum movimento semelhante que não inclua esse espaço em branco ou há mais alguma coisa que eu possa usar em vez de ca"
me impedir de digitar um espaço extra?
Notas:
cf"
faz o que eu quero, desde que a string não contenha aspas escapadas, mas exige que eu tenha o cursor no início da string. Eu gostaria de algo que eu possa usar de qualquer lugar dentro da string e?"<Enter>cf"
é bastante difícil de digitar.- É menos sobre o
<Space>
pressionamento de tecla único e mais sobre o fato de que muitas vezes esqueci de incluir o espaço, custando-me pelo menos quatro pressionamentos de tecla extras (bi<Space><Esc>
) e interrompendo meu foco. Portanto, o comprimento do comando de substituição não é tão importante, desde que exclua apenas o texto entre os caracteres especificados e entre no modo de inserção.
replace
cursor-motions
l4mpi
fonte
fonte
?"<Enter>
para procurar uma cotação para trás em uma linha, você pode usarF"
.F
é o mesmo quef
mas pesquisas para a esquerda. As respostas abaixo parecem melhores para sua pergunta, masF
são um comando útil por si só.Respostas:
Em /superuser/537453/vim-copy-quoted-string-without-whitespace : use em
2i"
vez dea"
. Veja também:help i'
.fonte
Há, no de Wellle targets.vim plugin. Para citar a parte relevante (na seção " Uma citação "):
a' a" a
fonte
a"
e usaA"
para o comportamento original?Como alternativa, você pode usar um objeto de texto argumento / parâmetro. Agora o Vim não possui objetos de texto de argumento nativo, mas existem alguns plugins disponíveis:
Pessoalmente, uso meu próprio plug-in, argumentative.vim, no entanto, ouvi coisas boas sobre o sideways.vim e o target.vim.
fonte