Vim: sempre navegue para definir a coluna ao mudar de linha

1

Existe um equivalente no Vim à idéia de uma "coluna de meta" no Emacs?

Eu gostaria de definir uma coluna de meta, então sempre que eu navego para uma nova linha no modo de inserção, o cursor é automaticamente posicionado naquela coluna.

por exemplo, eu tenho o texto:

foo bar
foo bar
foo bar

Eu digito 123<space> entre foo bar na primeira linha e depois tenho (o símbolo de pipe mostra onde meu cursor está):

foo 123 |bar
foo bar
foo bar

Eu pressiono a seta para baixo ... e acabo aqui:

foo 123 bar
foo bar|
foo bar

Mas eu quero acabar aqui:

foo 123 bar
foo |bar
foo bar

O caso de uso é que eu estou digitando uma lista de números para inserir em algum texto existente, e quero apenas digitalizar um número, em seguida, pressionando para baixo, próximo número, baixo, número, baixo, número , para baixo, etc, sem ter que reposicionar meu cursor de cada vez.

    
por ngm 10.01.2010 / 15:09

1 resposta

4

Você pode usar uma macro-posição na coluna e, em seguida:

:map ,1 i123 <Esc>bj

... e continue digitando , 1 ; ou você pode usar o recurso de gravação de macros do Vim ( :help recording ):

qai123 ^[bjq

(que armazena a macro em um registrador 'a', o final q termina a gravação).

Em seguida, você pode usar uma contagem de repetição (da coluna apropriada) e invocar a macro gravada com @a :

100@a

Se você quiser inserir texto diferente a cada vez e apenas um recurso de linha seguinte mais inteligente, crie uma macro para isso:

:imap ,, <Esc>j5^V|i

Esse ^ V é um literal Control-V , digitado digitando Controle V duas vezes; o próximo char é um pipe, que moverá o cursor para a coluna 5.

Você usaria essa macro no modo de entrada, digitando os dígitos, depois um espaço, e então , , que moveria você para a próxima linha na coluna 5, ainda no modo de entrada. Então, quando terminar: :iunmap ,,

    
por 12.01.2010 / 12:21

Tags