Como posso citar / citar rapidamente palavras e alterar as aspas (por exemplo, de '
para "
) no Vim? Conheço o plugin surround.vim , mas gostaria de usar apenas o Vim.
204
Como posso citar / citar rapidamente palavras e alterar as aspas (por exemplo, de '
para "
) no Vim? Conheço o plugin surround.vim , mas gostaria de usar apenas o Vim.
Respostas:
O surround.vim será a sua resposta mais fácil. Se você realmente está contra o uso, aqui estão alguns exemplos do que você pode fazer. Não é necessariamente o mais eficiente, mas é por isso que o surround.vim foi escrito.
ciw'Ctrl+r"'
ciw
- Exclua a palavra em que o cursor está ativado e termine no modo de inserção.'
- adicione a primeira cotação.Ctrl+r"
- Insira o conteúdo do"
registro, também conhecido como o último arranque / exclusão.'
- adicione a cotação de fechamento.di'hPl2x
di'
- Exclua a palavra entre aspas simples.hP
- Mova o cursor para a esquerda um lugar (em cima da citação de abertura) e coloque o texto excluído antes da citação.l
- Mova o cursor para a direita um lugar (em cima da citação de abertura).2x
- Exclua as duas aspas.va':s/\%V'\%V/"/g
va'
- Selecione visualmente a palavra citada e as aspas.:s/
- Inicie uma substituição.\%V'\%V
- Corresponde apenas aspas simples que estão dentro da região visualmente selecionada./"/g
- Substitua todos por aspas duplas.fonte
ciw
e não apenascw
? Acho o primeiro confuso e o segundo funciona bem.ciw
funciona independentemente de onde seu cursor estiver na palavra.cw
só funciona se o cursor estiver no início da palavra. Veja:help iw
..
comando Para fazê-lo funcionar, useciw' Ctrl+r Ctrl+p"
. Então,.
ele se comportará como você deseja para a seguinte palavra: em vez de lembrar o conteúdo do registro, ele lembrará que você quer o que está no registro agora (meio difícil de explicar, mas se você tentar os dois, ficará óbvio :-))Foi mais fácil para mim fazê-lo desta maneira
fonte
Aqui está um mapeamento que pode ajudar:
Se você não alterou a variável mapleader, ative o mapeamento com
\q"
\q'
ou\qd
. Eles adicionam aspas duplas ao redor da palavra sob o cursor, aspas simples ao redor da palavra sob o cursor, excluem quaisquer aspas ao redor da palavra sob o cursor, respectivamente.fonte
map <Leader>' gewi'<Esc>A'<Esc>
ao meu.vimrc
arquivo para inserir comentários de aspas simples da posição atual até o final da linha; o que me ajudou a converter alguns scripts do MSDOS para o bash.:vnoremap <leader>q c""<esc>P
.Além dos outros comandos, isso incluirá todas as palavras em uma linha entre aspas duplas (conforme seu comentário)
ou se você deseja reduzir o número de barras invertidas, pode colocar um
\v
modificador (muito mágico) no início do padrãofonte
:s/\v([a-Z]+)/"\1"/g
As maneiras macro!
pressione qe qpara gravar no registro q (usamos "q" como um atalho para lembrar "aspas").
pressione shift+ bmover o cursor para frente da palavra atual
itipo de imprensa '(aspas simples)
pressione esce pressione epara ir para o final da palavra
pressione ae pressione 'novamente para colocar a palavra entre aspas.
pressione escpara entrar no modo normal.
finalmente pressione qpara registrá-lo no
q
registro.Como usar
Você pode alterar
step 4
com o que quiser {uma linha, uma palavra até encontrar algum caractere, etc.}.Tornar a macro gravada persistente
salvar e sair
abra seus arquivos, vá para algumas palavras
@q
se você fizer isso corretamente, coisas mágicas devem aparecer em suas palavras.
Você pode executar estas etapas para outras macros que você amou.
fonte
@q w
e, em seguida, envolver as próximasn
palavras com aspas, usando withn@j
.Quebrar aspas simples (por exemplo)
ciw'<C-r>"'<esc>
funciona, mas a repetição não funciona. Experimentar:Isso coloca o conteúdo do registro padrão "literalmente". Agora você pode pressionar
.
qualquer palavra para colocá-la entre aspas. Para saber mais, veja:h[elp] i_ctrl-r
e saiba mais sobre objetos de texto em:h text-objects
Fonte: http://vimcasts.org/episodes/pasting-from-insert-mode/
fonte
ciw'<C-R><C-O>"'<Esc>
..
reescreverá o conteúdo da última chamada real.Para usuários do VSCodeVim, você pode fazer
vwS"
"
com o que você gostaria de incluir.w
por qualquer outro operador de seleçãofonte
viwS'
que envolve a palavra entre aspas simples. De longe o mais fácil.viwS"
Eu não conheço nenhum comando interno do vim para isso, mas usar
r"f'r"
a opção de mudar de 'para' er'f"r'
de 'para' funciona se você permanecer no primeiro 'ou'. O comandor'
substitui qualquer caractere que esteja sob seu cursor por ', ef"
avança para a próxima ".fonte
'r
e"r
), você pode apenas digitar.
E se quiser alterar mais aspas;
e,
levá-lo para o próximo ou o anterior, pois eles repetem a últimaf/F/t/T
pesquisa na mesma direção ou na oposta, respectivamente.Adicionando cotações
Comecei a usar esta função rápida e suja no meu
.vimrc
:Portanto, agora, seleciono visualmente o que eu quero (normalmente via
viw
visualmente dentro da palavra ) entre aspas e pressiono Qpara aspas duplas ou pressiono qpara aspas simples.Removendo Cotações
Uso vim-textobj-quotes para que o vim trate aspas como um objeto de texto. Isso significa que eu posso fazer
vaq
(selecionar visualmente as aspas . Encontre as aspas mais próximas e selecioná-las visualmente. (Isso é opcional, você pode fazer algo assimf"vww
). Em seguida, pressionos
para retirar as aspas da seleção.Alterar cotações
BEIJO. Eu removo aspas e depois adiciono aspas . Por exemplo, para substituir aspas simples com aspas duplas, gostaria de executar as etapas: aspas simples 1. Remover:
vaqs
, 2. adicionar novas citações:vwQ
.fonte
Se você usar o plugin vim https://github.com/tpope/vim-surround (ou usar o plugin VSCode Vim, que vem com o vim-surround pré-instalado), é bastante conveniente!
adicionar
solta
mudança
Até funciona para tags html!
confira o leia-me no github para obter melhores exemplos
fonte
Aqui estão alguns mapeamentos simples que podem ser usados para citar e citar uma palavra:
fonte
qw
qd
wq
O VIM para vscode é impressionante. É baseado em um vim-surround se você não usar o vscode.
fonte
Estou usando o nnoremap no meu .vimrc
Para citar uma palavra com uma única frase:
Para remover aspas (também funciona com aspas duplas):
Regra para lembrar: 'sq' = aspas simples.
fonte
que tal agora?
fonte
%
, ele funcionará apenas na linha atual, a menos que você tenha selecionado o arquivo inteiroEu escrevi um script que faz isso:
Para usar, apenas destaque alguma coisa, pressione o controle le digite um caractere. Se for um dos caracteres que a função conhece, ele fornecerá o caractere final correto. Caso contrário, usará o mesmo caractere para inserir nos dois lados.
O Surround.vim pode fazer mais do que apenas isso, mas isso foi suficiente para minhas necessidades.
fonte
Exemplo de mapa do modo visual para adicionar aspas simples ao redor de um bloco de texto selecionado:
fonte