Recursos mais úteis do VIM que não são padrão em um IDE [fechado]

30

Estou pensando se devo começar a usar o VIM novamente em vez de um IDE. Quais são os recursos mais úteis do VIM que não são padrão em um IDE?

Casebash
fonte
3
Qual IDE você usa? Muitos IDEs possuem plug-ins do VIM, para que você possa editar como se estivesse usando o VIM.
Brian R. Bondy
2
@Brian: Certamente eles não imitaram todos os recursos avançados?
Casebash
1
Provavelmente nem todos, exceto os que usei, são ótimos para o VS. Existem pelo menos 2 deles. viemu.com e github.com/jaredpar/VsVim
Brian R. Bondy
2
@ Brian R Bondy: Nenhum deles chega perto de cobrir todos os recursos do vim. Eles arranhar a superfície e realmente não fazer mais nada
Daenyth
2
Ou você pode ser realmente sensato e começar a usar emacs. ;-)
Orbling

Respostas:

32

Não acho que sejam necessariamente os recursos avançados do VIM que o tornam tão poderoso. É o fato de você nunca precisar tirar as mãos do teclado para fazer qualquer coisa. Encontrar algo em um arquivo grande é tão simples quanto pressionar algumas teclas. Abrir e fechar vários arquivos na mesma janela também é incrivelmente rápido.

Embora possa não parecer intuitivo a princípio, vale bem a pena. Mesmo que você não o use como seu IDE padrão (eu geralmente uso o Visual Studio ou Eclipse, por exemplo), você se encontrará usando o VIM para abrir e editar arquivos rapidamente, porque fica muito mais rápido do que esperar pelo IDE. carga.

Invista tempo para aprender a usar o VIM bem e você nunca se arrependerá. Eu diria que é comparável a aprender a digitar.

Bryan Hales
fonte
3
Esta resposta é provavelmente o recurso mais útil para o Vim, também é um dos únicos. Tudo o que for programado para o Vim também pode ser facilmente aplicado aos IDE, é apenas um processamento de texto ...
Tamara Wijsman
4
+1 Embora eu seja um devoto do emacs, o mesmo argumento se aplica. Os IDEs modernos são "gráficos" demais para editores de texto .
Orbling
22

Para mim, o :globalcomando é um aplicativo matador. Ele executará comandos arbitrários do vim em qualquer linha que corresponda (ou não) a um regex.

aqui estão alguns exemplos:

O comportamento padrão é listar todas as linhas correspondentes, portanto:

:g/TODO:/

listará todas as linhas que contêm o texto "TODO:"

altere 'Mickey' para 'Minnie' em qualquer linha que também contenha a palavra 'Mouse'

:g/Mouse/ s/Mickey/Minnie/

Os comandos podem ter seu próprio intervalo, portanto, isso será excluído de cada linha com "TODO:" para a próxima linha em branco:

: g / TODO: /., / ^ $ / d

Use: g! executar em todas as linhas que NÃO correspondem ao regex, por exemplo, substituir "emacs" por "vim", exceto nas linhas que contenham a palavra "sucks":

:g!/sucks/ s/emacs/vim/
Dave Kirby
fonte
Grandes truques com comando global! Eu nunca pensei em usá-los assim.
Xavier T.
O Eclipse suporta pesquisa regex de arquivos, como arquivos individuais, projetos ou entre projetos no mesmo espaço de trabalho. A substituição de regex também é suportada até certo ponto, mas acredito que o vim tem um recurso de regex muito mais poderoso.
Thomas Owens
16

Acho a capacidade de excluir tudo entre um conjunto de símbolos emparelhados incrivelmente útil. Por exemplo, muitas vezes, eu vou querer substituir uma string no código. Portanto, di"enquanto o cursor estiver no bloco, a string será excluída, mantendo a ""intacta e o cursor entre os dois caracteres de aspas. da"faz a mesma coisa, mas exclui os caracteres de aspas também.

Chinmay Kanchi
fonte
12
Melhor ainda, ci"exclui e coloca o cursor no modo de inserção para que você possa começar a escrever imediatamente.
Konrad Rudolph
9

'Conclusão da palavra-chave no modo de inserção'. Ctrl-P e Ctrl-N no modo de inserção para pesquisar o texto e tentar concluir o nome da variável que você está digitando. Nunca vi isso em nenhum outro IDE e sinto muita falta dele. A conclusão do código no IDE simplesmente não é a mesma.

Lang Sharpe
fonte
2
Você também tem o preenchimento de código adequado , se desejar, usando o omni-complete. ^X^Oomni-conclui no modo de inserção, se você o tiver ativado. Mas você está certo, eu me vejo usando a conclusão de palavras-chave muito mais do que a omni-completa.
Chinmay Kanchi
@ China: Eu acho que você tem o significado de "adequado" para trás. A conclusão adequada do código conclui qualquer coisa usando o princípio da localidade, mesmo se você estiver escrevendo texto em vez de código.
Ninjalj 26/09/10
O SlickEdit possui um recurso semelhante; e é muito parecido com IDE
user281377
8
Eu discordo completamente. Os IDEs modernos (Visual Studio, Eclipse,…) têm um tipo de conclusão de código que rivaliza (e de fato supera!) O Ctrl-N facilmente . Se você não viu isso nos IDEs, verifique novamente as versões atuais. E o Omni-Complete infelizmente não funciona corretamente.
Konrad Rudolph
8

Outro recurso que considero incrivelmente útil é a capacidade de alterar o recuo. :15,30>>recua todas as linhas de 15 a 30 (inclusive) duas vezes, enquanto :15,30<<recua as mesmas linhas duas vezes.

Chinmay Kanchi
fonte
Enquanto eu amo o recurso, praticamente todo IDE tem recuo (e dedução) de bloco.
Sean McMillan
Eu acho =que é tão, se não mais, útil do que <<e >>.
greyfade
6

o comando dd (excluir linha atual). Eu uso muito este.

Além disso, poder digitar algo como 3dd e excluir as próximas 3 linhas é maravilhoso. Eu nunca vi isso em outro editor = D

Alex Hart
fonte
O Netbeans quase tem isso, ^ X sem seleção cortará a linha atual.
Alan Pearce
@Alan: Não, o NetBeans tem jVi :)
dr Hannibal Lecter
^ K exclui a linha e ^ u3 ^ k exclui 3 linhas no emacs. shift-delete faz o mesmo no visual studio.
Raoul
Alan: O dd também corta a linha atual no sentido em que pode ser inserida com p posteriormente
user281377
3
@ Raoul, sabemos que há uma série emacs de combinações de 3 teclas para replicar todos os comandos do vim - ainda assim, o 3dd é poesia.
Cbrandolino
6

O ccomando Por exemplo, ci"para alterar aspas internas. cwmudar de palavra. Muitos truques úteis com ele.

Daenyth
fonte
5

O .comando Repete o último comando.

Adam Jaskiewicz
fonte
+1 a isso e a todas as outras funcionalidades relacionadas à macro.
precisa saber é o seguinte
3

Esc ! }empurrará o parágrafo atual para um filtro de linha de comando como fmtou wcou whichretornará os resultados ao editor.

Jé Queue
fonte
3

Acesso rápido à linha de comando. CTRL + Z ou: wqa obterá uma linha de comando em menos de 1 segundo sem que minha mão saia do teclado.

luispedro
fonte
1
+1 Esse último trecho é a seção crucial para praticamente todos os benefícios: sem minha mão sair do teclado
Orbling
... Ou :!/bin/bash. Eu uso com :!bastante frequência.
greyfade
Eu costumo usar:sh
David Brown
3

Que eu posso usar hjklpara mover o cursor sem precisar sair da tela inicial do teclado. Tenho a maioria dos programas (como leitores de PDF), que permitem alterar as combinações de teclas, configuradas para usar as teclas de movimento do Vim para rolar etc.

Anto
fonte
1

Isso é bastante difícil de responder, devido à imprecisão da pergunta e ao fato de que os IDE diferem, e muitos oferecem recursos que outros não (e o fato de eu ter apenas alguns deles).

No entanto, o que acredito distingue o Vim de outros editores (sim, até o Emacs, neste) é que ele é realmente um ótimo editor . Com o passar do tempo, usei muitos editores e posso dizer honestamente que muito poucos vêm com um conjunto tão completo de recursos para manipular texto, como o Vim.

Meu estilo de manipular texto, por exemplo, inclui muitas vezes o uso de duplicação (linha / seleção de várias linhas) e mover (linha / seleção de várias linhas) para cima e para baixo, para as quais há muito tempo eu defini atalhos rápidos. Sinto falta desses recursos na maioria dos IDEs (embora tenha ouvido falar que o ReSharper for VS tem algo semelhante).

Torre
fonte
1

Você sabia que existe um vi plugin para o eclipse ? Custa 15 euros (US $ 20), mas vale a pena. Não há mais ddno meio de um documento e falta todas as pequenas coisas úteis.

Talvez um pouco fora de tópico, mas achei que valia a pena destacar.

Lorenzog
fonte
0

Dependendo da linguagem que você está programando, atenha-se ao ide ou obtenha o ide que oferece o maior número de refatorações que você pode encontrar, obtenha mais nitidez no visual studio se estiver fazendo c #, intellij para java ou assistência visual no visual studio, maximizar as refatorações em eclipse ou netbeans.

Deveríamos passar da manipulação do texto para o código, as ferramentas de refatoração oferecem essa capacidade. Se o vim oferece todos os recursos, eu não quero mais lidar com um editor de texto

Harald Scheirich
fonte
3
Isso é praticamente um absurdo. Sim, a refatoração é uma ferramenta importante, mas o código não se escreve. Um bom editor de texto contribui muito mais para a produtividade de um programador do que uma boa ferramenta de refatoração.
Chinmay Kanchi 14/09
-1

Seleção da coluna da tabela

Isso não parece estar nos IDEs populares, e se é que eles o mantêm bem escondido. Isso é realmente útil para testar regex em uma coluna no arquivo de dados CSV.

sal
fonte
-3

A maioria dos IDEs não permite dividir a tela. Eu amo esse recurso no VIM.

projecktzero
fonte
5
A maioria dos IDE não? Eu acho que a maioria faz, pelo menos aqueles que eu usei.
Anto 17/01
Voce pode dar alguns exemplos?
projecktzero
1
A maioria das telas de identificador do IDE se divide de maneira diferente do Vim / Emacs. Eles fazem isso com abas normalmente. Estes são mais difíceis / impossíveis de manipular com o teclado (compare ter 50 arquivos abertos no Emacs vs. 50 arquivos abertos no Eclipse e você verá rapidamente o Emacs vencer).
Jsternberg
A maioria das IDEs que têm splitscreen não oferecem métodos fáceis de navegar / ajustando a-la<C-w>
Wayne Werner