Vim entre aspas

4

Digamos que eu tenha o seguinte

printf(text goes here);

e eu seleciono "o texto vai aqui" no modo visual ...
Como mudo rapidamente para

printf("text goes here");
    
por user341814 12.07.2014 / 21:20

5 respostas

5

Pretende-se responder à pergunta específica que você fez. Você afirma que selecionou visualmente algum texto e deseja colocá-lo entre aspas. Para fazer isso, execute:

:s/\%V\(.*\)\%V/""/

Para dividir isso em partes:

  • : permite que você insira comandos ex .

  • s/old/new/ é o comando de substituição usual.

  • \%V é um átomo sub documentado para marcar o início do texto selecionado

  • \(.*\) seleciona tudo e salva na seleção 1.

  • O segundo \%V significa o final do texto selecionado.

  • O texto de substituição é todo o que foi selecionado, armazenado em , entre aspas: "" .

Este comando aplica linha por linha. Assim, você pode obter resultados indesejados se o texto selecionado se estender por várias linhas.

    
por 12.07.2014 / 23:31
9

Você deve pesquisar mais. Quais comandos do Vim podem ser usados para citar / desmarque palavras?

Citações:

surround.vim is going to be your easiest answer. If you are truly set against using it, here are some examples for what you can do. Not necessarily the most efficient, but that's why surround.vim was written.

  • Quote a word, using single quotes ciw'Ctrl+r"'
    • ciw - Delete the word the cursor is on, and end up in insert mode.
    • ' - add the first quote.
    • Ctrl+r" - Insert the contents of the " register, aka the last yank/delete.
    • ' - add the closing quote.

  • Unquote a word that's enclosed in single quotes di'hPl2x
    • di' - Delete the word enclosed by single quotes.
    • hP - Move the cursor left one place (on top of the opening quote) and put the just deleted text before the quote.
    • l - Move the cursor right one place (on top of the opening quote).
    • 2x - Delete the two quotes.

  • Change single quotes to double quotes va':s/\%V'\%V/"/g
    • va' - Visually select the quoted word and the quotes.
    • :s/ - Start a replacement.
    • \%V'\%V - Only match single quotes that are within the visually selected region.
    • /"/g - Replace them all with double quotes.
    
por 12.07.2014 / 21:24
4

A sequência de comandos cw""<ESC>P é a coisa mais próxima que pode fazer um contorno de texto e funciona cortando a palavra (string de caracteres alfanuméricos: az, AZ, 0-9, incluindo o _ [sublinhado]), então insere o texto "" e pressionando a tecla de escape ( <ESC> para escapar do modo de inserção, depois é possível colar antes do cursor. Assim, o comando é dividido em:

c - cortar no registro

w - correspondência de regex \ w

"" - insira dois caracteres " na posição atual do cursor

<ESC> - shorthand do VIM para pressionar a tecla de escape. Neste contexto, retorne ao modo de comando

P - colar o registro atual

No entanto, no caso de conjuntos de strings mais longos na linha atual que se deseja cercar, seria necessário usar comandos de regex de substituição com um grupo de captura como:

:s/\(\w\+\)/""/g

Este comando armazena o regex correspondido resultante capturado como grupo '1' e pré-forma de substituição para inserir o conteúdo do grupo dentro de suas aspas. Assim, dado o texto:

fubar: 1

Torna-se:

"fubar": 1

O arquivo de ajuda vim intro é um dos melhores recursos para qualquer pessoa, junto com o comando :help .

    
por 14.10.2015 / 22:06
1

Não use o modo visual. Basta alterar o texto nos parênteses para "" e, em seguida, cole o texto excluído no meio. ci) "" < Esc > P

Se você quiser usar o modo visual, ele funciona da mesma forma, basta soltar a parte 'i)': c "" < Esc > P

( < Esc > significa pressionar a tecla de escape)

    
por 13.07.2014 / 03:51
1

Veja como citei algumas das minhas seleções visuais:

  1. No modo VISUAL, selecione o texto que você precisa citar e pressione qqc""<Esc>Pq

    • qq começa a registrar suas ações no registro q
    • c coloca o texto selecionado em um registrador e alterna para o modo INPUT
    • "" coloca símbolos que você precisa para incluir o texto com
    • <Esc> muda para o modo NORMAL
    • P coloca o texto do registrador na posição do cursor, entre aspas
    • q denota o fim das ações que registram
  2. Agora, na mesma sessão, você poderá citar qualquer bloco visual digitando apenas @q , que reproduz nossas ações registradas anteriormente

  3. ???

  4. Depois de usar @q , uma vez que você poderá emitir @@ (repetir a ação anterior) para citar as seleções visuais subsequentes

por 12.01.2017 / 12:44

Tags