Melhorando no Vim [fechado]


116

Eu uso o Vim há muito tempo, mas estou em um nível em que uso o modo de inserção na maior parte do tempo e ainda uso as teclas de seta para me mover (!).

Sinto que não estou obtendo o melhor do meu adorável editor, particularmente em relação à navegação (especialmente código), copiar e colar e fazer outras manipulações de código existente. (embora eu esteja bastante confortável com padrões complicados de pesquisa / substituição).

  • Como devo proceder para aprender mais?
  • Que recursos as pessoas recomendariam?

8
O que há de errado em usar as teclas de seta para se mover? Isso é o que eles são para !
Vilx-

39
@Vilx, você não se move com as setas, mesmo em jogos de ação no computador ! Sem falar em editores de texto ...
P Shved em

6
@Vilx: As teclas de seta de um teclado ficam em um lugar horrivelmente inconveniente para qualquer tipo de navegação. É por isso que o cânone do ViM é usar HJKL, assim como você usaria WASD em um jogo de primeira pessoa.
Will Vousden,

4
O WASD existe porque é mais fácil de usar com a mão esquerda, já que a direita controla o mouse. Os canhotos usam as flechas. E HJKL é tão contra-intuitivo. Qual se move para onde?
Vilx-

8
Bem, eu acho que não é sobre "setas vs hjkl", mas "movimento do cursor vs objetos de texto".
Matteo Riva

Respostas:



66

Aqui estão alguns screencasts incríveis que devem dar uma ideia do que aprender a seguir. Também existem vídeos para tópicos intermediários e avançados, mas os novatos são de fato os mais importantes.

Além disso, quando senti que estava estagnado e não aprendendo realmente "o jeito Vim", optei por desabilitar as teclas de seta tanto no modo normal quanto no modo de inserção. Isso força você a usar ESC para chegar a algum lugar e faz você pensar mais como o Vim. Por fim, habilitei as teclas de seta novamente no modo de inserção, mas quase nunca as uso. Na maioria das vezes, existem maneiras melhores de se contornar.

map <up> <nop>
map <down> <nop>
map <left> <nop>
map <right> <nop>

E especialmente

imap <up> <nop>
imap <down> <nop>
imap <left> <nop>
imap <right> <nop>

5
Gosto da ideia de desativar as teclas de seta, é uma boa maneira de se forçar a parar de usá-las.
Idan K,

1
Funcionou muito bem para mim, mas os primeiros dias foram extremamente frustrantes. Depois que você se acostumar com isso e lançar o hábito de se mover MUITO no modo de inserção, recomendo reativar os imaps.
Sarah

Esses screencasts são incríveis. Obrigado por apontar.
Mert Nuhoglu

2
Desativar as teclas de seta é uma ideia INCRÍVEL, estou fazendo isso agora.
gorsky

A desativação das teclas de seta é baseada na suposição de que as teclas de seta estão mais fora do caminho do que o hjkl. Melhor é conseguir um teclado melhor. Eu uso o Kinesis Advantage. Mesmo se eu estivesse usando um teclado padrão, hjkl ainda não fazia sentido, já que uso o dvorak. O que quero dizer é: a questão não é "não use as setas", a questão é "Use os meios mais eficientes e não se esquive dos ganhos de eficiência por causa de uma curva de aprendizado".
Expiação limitada de

23
  1. digite vimtutorna linha de comando
  2. vá para o vim, digite: help ou <F1>
  3. inscreva-se na lista de discussão
  4. documentos oficiais do vim

1
A única coisa que eu não havia considerado foi entrar na lista de e-mails: pronto :)
James

1
é um bom lugar para obter ajuda e praticar suas habilidades vim resolvendo os problemas de outras pessoas.
ghostdog74

1
+1 para vimtutor - excelente maneira de obter o caminho vim em sua memória muscular.
Hamish Downer de

16

Mais duas dicas:

  • Use o Vim para editar tudo (e-mail, formulários da web, código, ...). Quando algo parece lento, provavelmente existe uma maneira mais rápida de fazer isso. :helpgrepé seu amigo.

  • Acesse http://vimgolf.com/ e compita. Aprendi muitas dicas e truques dessa forma. [ Aviso : Não nos responsabilizamos pelos longos períodos de tempo que "desaparecem" durante a competição no VimGolf ].


2
Legal, eu não sabia sobre vimgolf!
James

1
@Autopulated: adicionou isenção de responsabilidade.
Johnsyweb

2
@Johnsyweb: Eu realmente quero poder usar o vim para tudo - mas como? Obter um clone adequado do vim dentro de cada formulário da web seria ideal - porque todos os complementos do navegador que encontrei geralmente implementam apenas um pequeno subconjunto aleatório de recursos do vim e re-mapeiam os atalhos de teclado para acomodar o fato de que o navegador ainda precisa acesso a certos mapeamentos de teclado.
Conrad.Dean


10

Foi assim que aprendi Vim (e um monte de outras coisas). É muito fácil.

Navegue pelos documentos de ajuda e encontre um comando para algo que você faz o tempo todo. Exclua uma palavra inteira, por exemplo. Faça questão de se lembrar disso.

Agora, da próxima vez que você clicar em 'xxxxx' para excluir uma palavra, pare, coloque-a de volta e use o novo comando. Procure se for preciso. Então, em vez de clicar em 'xxxxxx', você volta e clica em 'dw'.

Faça isso repetidamente, será lento no início, mas eventualmente vai aderir.

Depois de ter esse comando para baixo, comece no topo. Encontre outro comando para uma ação que você faz o tempo todo ...

Você ficaria surpreso com a rapidez com que pode aprender novos comandos e técnicas dessa maneira.


7

Remapear / desabilitar as teclas de seta como foi sugerido é uma ótima maneira de se forçar a não usá-las.

Outra coisa a considerar: se pressionar Esc no teclado for desconfortável, você pode querer remapear Caps Lock para Esc no seu sistema operacional. Para mim, essa foi uma etapa extremamente útil, já que Esc é um alcance estranho na minha KB e esse foi outro obstáculo que me manteve no modo Inserir (pois era difícil sair). Ter Esc no Caps Lock torna-o um alcance minúsculo e pular para dentro e para fora do modo Insert é muito rápido.

Para aprender coisas avançadas no Vim, o melhor recurso é: help, mas para aprender o básico você só precisa fazer; é mais memória muscular do que qualquer coisa. Você diz que sabe pesquisar. Use-o conscientemente como uma ferramenta de navegação. As pesquisas [/,?] E as pesquisas baseadas em caracteres inline [f, F, t, T] são algumas das principais ferramentas de navegação do Vim. Basta usá-los; combinado com as teclas do cursor desativadas, você estará navegando na memória muscular sozinho em nenhum momento.

Objetos de texto. Facilmente um dos melhores recursos do editor. Essa é a outra coisa que devemos praticar imediatamente e conscientemente. Coisas como 'yiw', 'dit', etc. são tão poderosas e rápidas; aprender e usá-los sozinho fará com que você se sinta um usuário do Vim.

Assim que você tiver os objetos de texto e a navegação básica, é hora de ler e aprender com a: help regularmente e vasculhar a web em busca de plug-ins incríveis. Sério, você pode usar o Vim por anos e ter um "ah ha!" momento acidentalmente tropeçando em algum petisco obscuro no: ajuda que você nunca conheceu.


Em vez de remapear para Caps Lock, sugiro Ctrl-C. É fácil de digitar e bastante familiar aos usuários do Linux.
BandGap

6

Veja este tópico: Qual é o seu atalho mais produtivo com o Vim?

Principalmente a primeira resposta.


3
Como autor da "primeira" resposta, devo dizer, com toda a justiça, que não é necessariamente o melhor guia para melhorar o domínio geral do editor. Ele cobre muito o que pode ser feito com o vi quando você pensa nele como uma linguagem para expressar as maneiras como você deseja manipular o texto, sua tela / terminal e o ambiente do próprio editor. No entanto, muitas das coisas nele são bastante avançadas.
Jim Dennis,

1
Não aprendi tanto com essa resposta que acho que nunca teria aprendido lendo a documentação!
James,


3

Como devo proceder para aprender mais?

Leia o manual do vim completamente (digite :h; você pode navegar a partir daí). É assim que você conhece todos os movimentos e comandos. Isso é muito útil se você já conhece o básico e deseja melhorar.

Que recursos as pessoas recomendariam?

vim.org, dê uma olhada nos scripts vim mais populares . Verifique as fontes deles se você encontrar algo de interesse. Ou apenas instale-os e aproveite. Esse site contém muitos links para scripts que ajudam a navegar no código-fonte em diferentes idiomas; e é relativamente fácil encontrá-los lá.

StackOverflow.com também pode ser útil .


3

Fiz este jogo para ajudar meu sobrinho a aprender, mas ele só funciona no Firefox e no Chrome>. < http://kikuchiyo.org

Por enquanto, trata-se apenas de movimento e entrada no modo de inserção. A versão beta permite que você ataque inimigos com sabre de luz, 'i' à esquerda e 'a' à direita: P

Continue tentando aprender Vim, vale a pena o esforço!

:)


Agora que é realmente uma boa idéia!
James

Atualização: o site está em kikuchiyos-vim-game.herokuapp.com agora.
kikuchiyo


2

Ainda uso as setas do teclado para me mover (!).

Não vejo problema nisso.

Francamente, qual é a probabilidade de você ter que usar o vim e um teclado sem teclas de seta?

Você sabe, a maioria das pessoas usa o vim porque ele faz o trabalho (bem, porque eles o dominaram a um nível quando ele faz o trabalho para eles), não por serem elitistas (como não usar as teclas de seta).

Alguns conselhos para melhorar seu conhecimento do vim:

  • abra periodicamente o vim help em um lugar aleatório e leia sobre um recurso distinto aleatório. Irá demorar alguns minutos. É possível que você não use esse recurso durante os próximos X anos. Mas, se tiver sorte, você se encontrará em uma situação em que verá que pode aplicar seu conhecimento sobre esse recurso para realizar uma determinada tarefa. Você abrirá a ajuda novamente para refrescar sua memória. Depois de usar o recurso na prática algumas vezes, ele vai aderir. Neste ponto, seu conhecimento do vim será aprimorado.
  • use: helpgrep para pesquisar locais aleatórios de documentação. Se você precisa fazer algo e encontrar o lugar que explica isso nos documentos, não pare por aí. Leia o trecho do documento mais uma vez. Encontre as palavras-chave. Para cada palavra-chave, use: palavra-chave helpgrep para descobrir os links lógicos com outras partes da documentação do vim.

Acho que o problema que tenho apenas com a leitura da documentação é que acho que não aprendo as coisas de maneira muito eficaz sem realmente fazê- las.
James,

1
Usar as teclas do cursor para mover o cursor por curtas distâncias pode ser tão eficiente quanto usar as teclas [h], [j], [k], [l] ... se seus dedos estiverem perto deles por algum outro motivo. Usar qualquer movimento linear do cursor é horrível para mais do que algumas colunas ou linhas de movimento. Normalmente, é melhor pensar sobre o que você está procurando e expressar isso diretamente no vi usando o / ou? comandos e expressões regulares. Último pedaço de texto perto de foo? G? Foo [Enter] (seis pressionamentos de tecla). Primeira linha com "bar ... alguma coisa .. bang nela? 1G / bar. * Bang [Enter] (cerca de uma dúzia de pressionamentos de tecla) ... e assim por diante.
Jim Dennis

Embora as teclas de seta sejam provavelmente mais eficientes do que alcançar o mouse, se você digitar usando as teclas da linha inicial para reagrupar suas mãos depois de digitar uma sequência de caracteres, não será necessário nenhum movimento para inserir uma das teclas básicas de movimento de 'j', 'k', 'l' e uma leve 'contração' para a esquerda para obter a tecla 'h'. Se você faz as coisas do jeito Vim, suas mãos devem estar sempre mais próximas das teclas da linha inicial do que das teclas de seta. Continue praticando e você vai conseguir. :)
kikuchiyo


2

a maneira como parei de usar as teclas de seta não as estava desativando (eu ainda as uso no modo de inserção), mas se você pensar sobre isso se quiser ir para a direita, use o dedo mínimo que é a ltecla, vá para a esquerda, dedo indicador, a htecla, & dedo anelar para cima ("tocar") a kchave e "pegar" a jchave.

Portanto, primeiro dos quatro dígitos em sua mão (esqueça o polegar), o índice um está mais à esquerda e o mindinho está mais à direita. Use a expressão "tocar" como em uma chamada telefônica para subir com o dedo anular e o dedo médio não tem outro lugar para ir a não ser para baixo.

Descobri que também ajuda muito esquecer o nome das teclas (h, j, k, l). Não há um bom mnemônico para lembrá-los dessa forma que eu encontrei e não há muitos mapeamentos usando essas chaves também.





Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.