Adicionando parênteses ao redor do texto realçado no Vim

12

Existe uma funcionalidade no Vim que permite que parênteses sejam adicionados em torno do texto realçado?

Por exemplo, se eu destacar n = getchar() em if (n = getchar() == '\n') , eu gostaria de colocar parênteses em torno disso.

    
por mrQWERTY 08.02.2015 / 01:26

4 respostas

15

Você precisa de um surround incrível e obrigatório. Então, ele fará o que você quiser se você selecionar o texto e digitar Sb (colchetes) ou S) (anote a maiúscula S!).

Na verdade, ele pode rodear bastante: várias citações, tags, etc. Ele permite que você coloque o cursor na palavra com aspas duplas e altere aspas duplas para aspas simples digitando: cs"' (change-surround " codificar%). Ou você pode excluir completamente citações digitando ' (delete-surround ds" ).

Leia os documentos por link, é realmente incrível!

    
por 08.02.2015 / 01:41
18

Além da sugestão de Dmitry de o plug-in surround , adicionar parênteses ao redor do texto destacado pode ser feito com o seguinte comando:

xi()<Esc>P

Você pode definir um mapa no modo visual usando (por exemplo) \s adicionando o seguinte ao seu arquivo ~/.vimrc :

xnoremap <leader>s xi()<Esc>P
    
por 08.02.2015 / 08:30
1

colchetes simples simplesmente liga ( para cercar a seleção com os colchetes. Ao contrário de surround , ele não segue a filosofia usual de keybinding do vim. Em vez disso, são necessárias menos chaves.

Caso contrário, existem várias maneiras de prosseguir. Se você não se importa em mexer no registro não nomeado, você também usa s(^R")<esc> ( ^R like CTRL-R )

    
por 09.02.2015 / 10:25
0

Com base na resposta do dotancohens, coloquei o seguinte no meu .vimrc :

xnoremap <leader>( <ESC>'>a)<ESC>'<i(<ESC>

Você pode facilmente fazer mapeamentos semelhantes para [], {}, etc. Ele funciona pulando para os marcadores de início e fim definidos implicitamente após o término do modo visual. Desta forma, a seleção de linhas inteiras adicionará os parêntesis ao início / fim da primeira / última linha; não substituirá seu registro de yank; e vai deixar o cursor logo antes do parêntese de abertura.

    
por 02.11.2018 / 10:04

Tags