Questão vim: linha de quebra antes da palavra atual


Eu escrevo um texto no vim e não quero exceder o limite de comprimento de linha de 80 caracteres. Agora estou no personagem 72, que é um espaço, comece a escrever uma palavra. A palavra termina no personagem 82. Existe algum truque rápido de como substituir o último espaço por uma nova linha (ou de alguma forma mover a última palavra para a nova linha) tendo um cursor no final dessa palavra, então ao invés de

Esc hhhhhhhhhh i Enter Esc llllllllll i blah blah blah

seria

Esc magic i blah blah blah

?


1


origem




Respostas:


Há muitas maneiras de fazer isso.

o b a tecla retorna uma palavra e B vai voltar uma palavra 'grande' (b vai parar em traços por exemplo). Então você pode pressionar

esc B h r enter

se você quiser voltar ao modo de entrada, você pode fazer

esc B i enter

Você pode gravar uma macro, se você costuma fazer isso com frequência. Para gravar uma macro, pressione q seguido por qualquer letra (você atribui uma macro ao registro dessa letra). Digamos que quiséssemos gravar a primeira sequência como uma macro e atribuí-la ao z registro. você faria :

q z B h r enter q

agora sempre que você pressionar @z no modo normal, ele retornará uma palavra e substituirá o caractere antes dele por uma nova linha.

mais sobre macros aqui http://www.thegeekstuff.com/2009/01/vi-and-vim-macro-tutorial-how-to-record-and-play/


0



Yab: legal. Com $ anexado à seqüência de comandos (para que o comando termine com o cursor no final da linha), esta seria a resposta exata, mas eu ainda acho a configuração da largura do texto mais confortável (como eu uso para resolver o meu problema). - Adam Trhon


O Vim pode fazer isso automaticamente se você definir a opção 'textwidth' como 80. Você pode fazer isso colocando esta linha em seu arquivo .vimrc ou _vimrc:

set textwidth=80

Isso vai quebrar a linha em ou antes da coluna 80 ao adicionar texto. Não irá reformatar o parágrafo inteiro. Uma maneira de fazer isso enquanto você está no modo de inserção é executar

<C-O>gqap

onde <C-O> significa manter pressionada a tecla Ctrl enquanto digita a letra o. gqap é o comando para reformatar (gq) o parágrafo actual (ap). Quando esse comando é feito, você estará de volta no modo de inserção com o cursor fechar para onde estava antes, mas não necessariamente no mesmo ponto da frase. Você pode ler mais sobre esses comandos em

:help i_CTRL-O
:help gq
:help ap

Se a quebra de linha automática em 'largura de texto' não estiver funcionando conforme o esperado, talvez seja necessário alterar sua 'formatação'. Vejo

:help formatoption
:help fo-table

para mais sobre isso.

Se você não tem certeza de onde está o seu arquivo .vimrc ou _vimrc, você pode abrir o Vim e executar

:e $MYVIMRC

9



Se eu pudesse te dar outro upvote para o comando gqap. Obrigado! - Adam Trhon