movendo para uma coluna particular em uma linha vazia

4

Estou tentando usar o VIM para situações de Processamento de Texto, onde, por exemplo, posso precisar colocar a data na 70ª coluna de uma linha que não tenha outro texto nela. Portanto, por exemplo, se não houver texto na linha 1 e eu quiser inserir algo na coluna 70, a única maneira de saber como chegar à coluna 70 é atingindo a barra de espaço enquanto estiver no modo de inserção, um processo muito lento.

Existe uma maneira de fazer o que estou tentando alcançar no VIM? Ou seja, para avançar para uma determinada coluna em uma linha em branco. Mesmo se eu pudesse fazer algo como 70l (mover 70 espaços para a direita) seria incrível, mas não funciona em uma linha sem qualquer texto.

    
por BrainLikeADullPencil 30.08.2014 / 00:34

4 respostas

10

Você também pode considerar o virtualedit, que permite que você marque o cursor em qualquer lugar, independentemente de existir um caractere lá.

Use (formato abreviado set ve=all )

:set virtualedit=all

para ativá-lo. Em seguida, use 70| para ir para a coluna 70. Dê uma olhada em :help 'virtual edit'

Para desativá-lo, use :set virtualedit= (formato abreviado set ve= )

    
por 30.08.2014 / 01:47
3

Você pode fazer 70i seguido por esc (isto é 7 0 i barra de espaço Esc ).

Para o caso específico mencionado, adicione a data na 70ª coluna:

  • 6 9 i barra de espaços Esc $

    Isso criará 69 espaços e o cursor estará na 69ª coluna;

  • :r !date Digite

    Isso copiará a saída do comando date no buffer de edição (na próxima linha);

  • retrocesso J

Após este passo, você tem a data, começando na 70ª coluna.

Provavelmente é uma maneira mais fácil, mas pelo menos essa funciona com certeza.

    
por 30.08.2014 / 00:53
1

Não é a maneira mais bonita de fazer isso, mas você pode modificar o shiftwidth , que é o tamanho de uma única guia. No modo de comando digite :set shiftwidth=1 e então digite o que você quer na coluna 70, então use o comando: V (maiúscula ´v´) para destacar sua linha atual e então digite 7 0 > . Isso deve tabular seu texto em mais de 70 colunas.

Depois disso, pode ser uma boa ideia definir seu shiftwidth de volta para 4, para tornar a tabulação mais consistente. A menos que seja uma tarefa que você faz com bastante frequência e você não tem utilidade para tabulação.

    
por 30.08.2014 / 00:44
0

Outra maneira pode ser definir tabstop para 70 e definir expandtab para expandir as tabulações para espaços:

:se ts=70
:se et

E então você pode clicar na tecla tab para chegar à 70ª coluna.

    
por 31.08.2014 / 01:39

Tags