Vim Modo visual: selecione o bloco atual sob o cursor

6

Considerando que temos os dados atuais:

ID     NAME          AGE 
1      Joan          29
2      Peterson      16
3      Hunt          47
4      Wenche        12
5      Kennedy       29
6      Lottie        31

E o cursor é o N in NAME , como eu selecionaria o texto para que, se | fosse os delimitadores do bloco visual, a seleção deveria ser assim

ID    |NAME    |     AGE 
1     |Joan    |     29
2     |Peterson|     16
3     |Hunt    |     47
4     |Wenche  |     12
5     |Kennedy |     29
6     |Lottie  |     31

O espaço em branco à direita após cada elemento para corresponder à largura de Peterson não é necessário, mas eu preciso de uma maneira rápida de destacar o bloco atual, se existir.

    
por krystah 28.12.2013 / 04:32

4 respostas

1

Com o cursor no N de NAME , eu simplesmente faria o seguinte sem muito cuidado com o golfe:

<C-v>}hhhhhhhh

Mas o plug-in de coluna de texto faz exatamente o que você deseja. Magicamente.

    
por 28.12.2013 / 17:53
0

Existem scripts para tornar isso mais fácil, mas supondo que você queira usar vim bruto, aqui está meu método mais conhecido para fazer isso:

a. Verifique se sua última linha do arquivo está cheia de espaços em branco, algo assim:

"______________________________________" .

depois, vá para a primeira letra N em "Nome". Bata ctrl-v, w, 999999j e a coluna será escolhida.

Você precisa que a última linha esteja cheia de espaços, caso seu arquivo termine em uma nova linha, porque o modo visual não pode selecionar partes do arquivo que não foram criadas. Se a última linha for um conteúdo viável, você não precisa disso. ctrl-v+w seleciona uma palavra, então 999999j simples leva o cursor "para baixo" 99999 linhas (ou menos se o arquivo for menor).

Nota: Você verá que esta é uma seleção de coluna inteira e os espaços em branco são um pouco diferentes do que você declarou (mas você disse que isso não era importante). No que diz respeito ao meu conhecimento, se você quiser que a coluna seja alinhada ao final da maior palavra e não ao início da próxima, será necessário encontrar manualmente o maior tamanho de palavra, selecionar visual desse tamanho e, em seguida, fazer algo como 99999j .

    
por 28.12.2013 / 11:06
0

Aqui está uma maneira de fazer isso:

  1. Primeiro, use control-v para entrar no modo de bloqueio visual
  2. Em seguida, digite 2j para descer duas linhas até a entrada Peterson
  3. Use minúsculas e para mover a seleção de bloco para o final da palavra Peterson
  4. O tipo 4j para mover a seleção pelas quatro linhas finais

Edit: Se você realmente insistir em evitar "números mágicos", você pode fazer algo como descrito aqui: link

  1. :set nosol (para que o comando G não seja recolocado na primeira linha na seleção de bloco visual)
  2. control-v
  3. /P (você não disse números mágicos, mas não proibiu a busca por letras - se o espaço em branco não é crucial, você pode ignorar isso)
  4. e (ir para o final da palavra)
  5. G (move a seleção de bloco para o final)

Outras dicas:

  • se você precisar selecionar novamente o mesmo bloco mais tarde, você pode digitar gv
  • v é usado para modo visual de caracteres e V para linha, enquanto control-v como acima é para modo visual de bloco

Referências úteis (além da Internet):

  • O livro Practical Vim de Drew Neil é realmente bem escrito
por 28.12.2013 / 08:54
0

O mesmo que a resposta do ygoncho, mas sem "números mágicos"

ctrl-v, w, G

G vai direto para a última linha de um arquivo sem ter que quebrar '9' algumas vezes

    
por 28.12.2013 / 19:45

Tags