otimizar surround com aspas
Eu quero colocar uma palavra entre aspas
Aqui está meu conjunto de comandos:
ciw
- em seguida, quando estou no modo de inserção, eu digito '(eu uso a
extensão do vim no código Visual, então recebo duas'
, não sei se é o caso para o vim "normal") - então Ctrl+ C+t
- então p
Funciona, mas pode haver uma versão mais curta para conseguir isso. Você pode ajudar ?
Respostas
Você pode tentar o plugin vim-surround . Para colocar uma palavra entre aspas, você deve ir ysiw'
. O plug-in oferece a capacidade de:
add (
ysiw"
)word -> "word"
mudar (
csiw"'
)'word'
deletar (
ds'
)word
os arredores não apenas de palavras únicas, mas de todos os tipos de objetos de texto:
cercar palavras entre parênteses (
ysi)"
)def func(some sequence of words) -> def func("some sequence of words")
mudar parênteses para colchetes (
cs)]
)list = (var1, var2, var3) -> list = [var1, var2, var3]
Se você estiver usando a extensão do VS Code que eu acho que está, então meu entendimento é que ela suporta pelo menos alguns plug-ins e um deles é o vim-surround . Se for esse o caso e você estiver aberto para usar plug-ins, pule para o último parágrafo. Caso contrário, continue lendo.
Do modo normal com o cursor no primeiro caractere da palavra, você pode fazer ...
i"<C-O>f<Space>"<Esc>
Ctrl-O
, em Inserir, permite inserir um comando de modo normal antes de retornar ao Inserir.
f<Space>
vai para o próximo caractere de espaço na linha (após a palavra).
O problema com isso é se a palavra não é seguida por um espaço (por exemplo, você está no final da linha ou ela é seguida por um sinal de pontuação). Você precisa ajustar o comando do modo Normal (por exemplo, para f.
ou $<Left>
).
Esse é apenas um exemplo de como fazer isso, mas acho que ao invés de tentar otimizar um comando manual, você deve usar algo mais robusto (mas complicado) e colocá-lo em um mapeamento. Por exemplo, este comando de substituição:
:%s/\<\w*\%#\w*\>/"&"
Isso diz que pegue a posição do cursor ( \%#
) e quaisquer caracteres de palavra ao seu redor (ambos \w*
) e substitua-o entre aspas.
Um mapeamento de modo normal para isso:
:nnoremap <leader>q :%s/\<\w*\%#\w*\>/"&"<CR>
Agora você otimizou as coisas com um ou dois pressionamentos de tecla ... qualquer que seja o comprimento do mapeamento que você escolher.
O que eu realmente sugiro, entretanto, é que você apenas obtenha o plug - in vim-surround . Em seguida, você pode agrupar palavras facilmente (e mais) com qualquer coisa com que você normalmente agruparia palavras (por exemplo, parênteses).