8 pontas e truques de Vim que lhe farão um usuário pro

Resumo : Neste artigo, mostrarei alguns dos meus truques favoritos do Vim com exemplos práticos. Se você não usa o Vim, essas dicas podem não dar razões para usar o Vim, mas se você já usá-lo, você definitivamente se tornará um usuário melhor do Vim.

Mesmo que comecei a usar o Atom mais e mais, mal posso passar um dia sem usar o Vim. Não porque sou forçado a isso. Mas porque me sinto confortável.

Sim, confortável . Uma palavra muito estranha quando se fala de Vi ou qualquer um de seus clones, não é? E eu concordo, certamente não é o editor de texto mais intuitivo .

Mas com alguma prática e treinando um pouco sua memória, você pode executar tarefas de edição aparentemente complexas com apenas alguns toques no teclado. Algo que eu nunca encontrei com nenhum outro editor de texto de linha de comando para Linux.

Mas, em vez de escrever ainda-um-outro-vi-introdução, escolhi hoje deixar você tocar o poder real por trás de Vi (m) apresentando-lhe alguns truques que realmente uso - e sinto falta na maioria, senão em todos os outros editores. Não lhe darei a explicação completa de todos esses truques, mas recomendo enfaticamente que você tente experimentá-los até conseguir entender como eles funcionam.

Se você gostou do Vim e quer dominá-lo completamente, você também pode se inscrever no curso on-line do Vim fornecido pela Linux Training Academy.

8 truques Vim para tirar mais proveito disso

Deixe-me repetir: eu recomendo fortemente que você experimente esse exemplo sozinho. Infelizmente, o WordPress não precisa fazer um bom trabalho para preservar o conteúdo exato dos meus exemplos e comandos - especialmente em relação a linhas vazias ou citações. Então, para sua conveniência, você pode baixar as amostras usadas aqui no link abaixo:

Baixe os exemplos do Vim para a prática

Cada exemplo vem com o texto original (.orig) e um script Bash (.sh) chamando o Vim com o comando ilustrado neste artigo.

1. Alterar a capitalização no Vim

Eu sou o único usando esse recurso? Ou é porque estou condenado a trabalhar com pessoas acreditando que WRITING ALL CAPS É LEGAL?

De qualquer forma, ao programar, ao adicionar um aviso de direitos autorais, ou mesmo depois de copiar e colar, não é tão incomum ter que alterar a capitalização do texto. Nesse aspecto, o Vim é muito mais evoluído que o Vi original. E eu abençoo todos os dias Bram Moolenaar por seu grande trabalho:

Texto original
copyright (c) por

O uso das obras é permitido desde que este instrumento seja retido com as obras, para que qualquer entidade que utilize as obras seja notificada deste instrumento.

Isenção de responsabilidade: os trabalhos são sem garantia.

Comandos
~Caso do interruptor
: $ norm gUUConverte a última linha para maiúscula {not in Vi}
Texto modificado
C opyright (c) por

O uso das obras é permitido desde que este instrumento seja retido com as obras, para que qualquer entidade que utilize as obras seja notificada deste instrumento.

ISENÇÃO DE RESPONSABILIDADE: AS OBRAS ESTÃO SEM GARANTIA.

2. Vim procurar e substituir dicas

Este eu uso todos os dias. Por que isso ainda não está presente em todo editor de texto? Naturalmente, a maioria dos editores tem algum tipo de recurso de substituição de pesquisa. Mas quantos realmente têm o poder dos padrões de regex e substituição? Claro, isso é mais complexo de dominar que substituições básicas de string . Mas eu simplesmente não poderia viver sem esse recurso. Nesse ponto, às vezes eu me vejo copiando / colando de alguns editores de GUI em um terminal rodando sed e de volta. Mas Vi tem isso incorporado há 40 anos ou mais ...

Texto original
Um menino tem a chance de pintar uma cerca preta todos os dias? Isso colocou a coisa sob uma nova luz. Ben Rogers parou de mordiscar sua maçã. Tom varreu sua escova delicadamente para trás e para frente - recuou para notar o efeito - adicionou um toque aqui e ali - criticou o efeito novamente - Ben observando cada movimento e ficando cada vez mais interessado, cada vez mais absorvido.
Comandos
: s / preto / branco /Substitua a primeira ocorrência da string 'black' por 'white'
: s / Ben \ (Rogers \) \ @! / Ben Rogers / gSubstitua cada ocorrência da string 'Ben' por 'Ben Rogers' exceto quando 'Rogers' já estava presente
: s /.*/

\ r & \ r /

Enrole a linha entre

e

: -1s / - / \ - / gSubstitua todas as ocorrências da string '-' por '-' na linha anterior
Texto modificado

Um menino tem a chance de pintar uma cerca branca todos os dias? Isso colocou a coisa sob uma nova luz. Ben Rogers parou de mordiscar sua maçã. Tom varreu a escova delicadamente para a frente e para trás - recuou para notar o efeito - acrescentou um toque aqui e ali - criticou o efeito novamente - Ben Rogers observava cada movimento e ficava cada vez mais interessado, cada vez mais absorvido.

Essas cercas de piquete me lembram de ViM…

3. Movendo as coisas em nenhum momento

Sim, copiar e colar e arrastar e soltar são ótimas ferramentas. Mas às vezes é muito chato percorrer um documento inteiro para encontrar onde colar meu texto e, em seguida, rolar na direção oposta para trazer o cursor de volta ao local inicial.

Texto original
Prós:

* Rápido

* Poderoso

* Confiável

* Não user-friendlyCons:

* Portatil

* Viciante

Comandos
/Poder/Vá para a primeira linha contendo a string 'Power'
ddpTroque a linha atual com a próxima
: / user-friendly / m $Mover a próxima linha que contém a string 'user-friendly' para o final do arquivo
g;Trazer de volta o cursor para a posição anterior
: / Contras / + 1m-2Mova duas linhas até a linha seguinte 'Cons'
Texto modificado
Prós:

* Rápido

* Confiável

* Poderoso

* Contras portáteis:

* Viciante

* Não é fácil de usar

4. Aplicando comandos em um intervalo de endereços

Os editores de GUI podem permitir que você aplique alguns comandos no arquivo inteiro ou apenas na seleção atual. Às vezes, temos mais opções, como antes ou depois do cursor. Mas Vi (m) permite uma descrição muito mais expressiva do intervalo no qual um determinado comando deve ser aplicado:

Texto original

Nome da canetaNome real
Mark TwainSamuel Clemens
Lewis CarrollCharles Dodgson
Richard BachmanStephen King

Muitos escritores optaram por escrever sob um pseudônimo.

Comandos
: / /, // g / ^ $ / d
Excluir linhas vazias entre linhas contendo e
: / ^ $ /; / ^ $ / - 1m1Mover texto entre as próximas duas linhas vazias após a linha 1 (observe o uso de um ponto e vírgula aqui)
: 2, $ - 1>Aumentar o recuo do texto entre a linha 2 e a penúltima linha
Texto modificado

Muitos escritores optaram por escrever sob um pseudônimo.

Nome da canetaNome real
Mark TwainSamuel Clemens
Lewis CarrollCharles Dodgson
Richard BachmanStephen King

5. Exemplos de comandos de tubulação Vim

Este é absolutamente um meta-truque no espírito direto da filosofia Unix. Vi permite que você processe parte do seu buffer através de um comando externo . Isso é ótimo quando você precisa de coisas que não são factíveis diretamente no Vi - ou para coisas que não são facilmente realizáveis ​​no Vi. Meu caso de uso favorito para esse recurso é classificar os dados, mas ele tem um poder praticamente ilimitado:

Texto original
tee> (echo $ (wc -l) dados mais recentes) << EOT

Ago. 2016 2.11%

Set, 2016 2.23%

Out de 2016 2.18%

Nov de 2016 2.31%

Dez, 2016 2, 21%

Jan de 2017 2.27%

Mar, 2016 1, 78%

Abr. 2016 1, 65%

Maio de 2016 1, 79%

Jun, 2016 2, 02%

Jul de 2016 2.33%

Participação no Mercado EOTLinux no Desktop

fonte: //www.netmarketshare.com

Comandos
: 2, / ^ EOT / -1! Sort -k2n -k1MOrdenar dados por ano e mês
: $ r! data “+ Dados obtidos a \% c”Adicione a saída do comando date no final do arquivo
: 1, / ^ EOT /! BashExecute o script incorporado e substitua pelo resultado
Texto modificado
Mar, 2016 1, 78%

Abr. 2016 1, 65%

Maio de 2016 1, 79%

Jun, 2016 2, 02%

Jul de 2016 2.33%

Ago. 2016 2.11%

Set, 2016 2.23%

Out de 2016 2.18%

Nov de 2016 2.31%

Dez, 2016 2, 21%

Jan de 2017 2.27%

11 dados mais recentes Linux Market Share on Desktop

fonte: //www.netmarketshare.com

Dados obtidos a Sex 09 Fev 2017 11:07:34 PM CET

6. Digitando menos

Ao escrever a documentação formal, sempre há alguns termos incomumente longos e complicados que você precisa repetir. Pode ser um nome de marca ou produto. Alguma localização. Um aviso de direitos autorais. E assim por diante. Obviamente, cada instância dessas palavras grandes deve ser grafada corretamente e usar exatamente a mesma capitalização e pontuação. O recurso de abreviação do Vim é obrigatório.

Comandos
: ab apple da Apple Computer, Inc.Introduzir uma nova abreviatura
EuMudar para o modo de inserção
A Apple foi fundada em 1977.

O logotipo da maçã é uma maçã ^ V.

Texto digitado

(^ V significa controle-V )

Resultado
A Apple Computer, Inc. foi fundada em 1977.

O logotipo da Apple Computer, Inc. é uma maçã.

7. Obtendo ajuda no Vim

Ok, existe o Intenet. Mas as pessoas que ainda usam o homem como eu apreciarão a ajuda em linha . Você pode obter ajuda por tópico. Ou pelo comando. Sempre é útil quando você não se lembra da sintaxe exata ou das opções para os comandos do Vim - ou se você não tem certeza de que o comando que você precisa é um comando normal ou um comando ex : .

Tente isso!
:ajuda ajuda
: ajuda m
: ajuda: m

8. Script no Vim

Ao usar o Vi (m) você está basicamente usando um front end visual para outro editor subjacente chamado ex . Talvez você tenha percebido quantos comandos nos exemplos acima começam com dois pontos (:)? Isso é porque esses são comandos ex . E esta é mais uma vantagem do Vi (m) sobre tantos editores de texto: não só você pode usá-lo interativamente - mas você também pode roteirizá- lo.

Por que alguém iria querer fazer isso? Falando por mim, acho que é uma ótima maneira de automatizar o processamento de texto. Ao lado, você pode ver um exemplo típico direto do meu disco rígido.

Provavelmente existem alguns comandos misteriosos nesse script ex, mas posso dizer que isso removerá qualquer cabeçalho (eventualmente presente) de um script e o substituirá por outro lido do arquivo NEW.HEADER - adicionando um # antes de cada linha adicionada . Não há dúvida que eu poderia ter feito isso usando outras ferramentas que ex. Na verdade, esse foi o tema de um dos nossos anteriores Bash Challenge. Mas ex é definitivamente uma opção.

Quão misterioso ...
ex some.script << EOT

0pu_

1, / ^ [^ #] / - 1d

0r NEW.HEADER

1, .s / ^ / # /

wq

EOT

Como eu disse inicialmente, este artigo não era absolutamente um tutorial, nem uma introdução ao Vi (m). Apenas algumas dicas do Vim para mostrar por que alguém ainda pode gostar desse editor, apesar de todos os outros editores de código modernos disponíveis para Linux hoje. De certa forma, compartilhei com vocês algumas das minhas magias favoritas. Mas na grande tradição da feitiçaria, não desvende como exatamente eles funcionam.

Portanto, queridos aprendizes, não hesitem em usar a seção de comentários abaixo para compartilhar seus próprios encantamentos ou contra-cheques - ou, se tiver coragem, para explicar esses truques!

Recomendado

Como proteger por senha uma pasta no Linux
2019
Lançamento do Linux Lite 3.0
2019
Jogos fantásticos do Linux e onde encontrá-los
2019