Fonctionnalités les plus utiles de VIM qui ne sont pas standard dans un IDE [fermé]

30

J'examine si je devrais recommencer à utiliser VIM au lieu d'un IDE. Quelles sont les fonctionnalités les plus utiles de VIM qui ne sont pas standard dans un IDE?

Casebash
la source
3
Quel IDE utilisez-vous? De nombreux IDE ont des plugins VIM, vous pouvez donc les modifier comme si vous utilisiez VIM.
Brian R. Bondy
2
@Brian: Ils n'ont sûrement pas imité toutes les fonctionnalités avancées?
Casebash
1
Probablement pas tous, mais ceux que j'ai utilisés sont parfaits pour VS. Il y en a au moins 2. viemu.com et github.com/jaredpar/VsVim
Brian R. Bondy
2
@Brian R Bondy: Aucun d'entre eux n'est même près de couvrir toutes les fonctionnalités de vim. Ils rayent la surface et n'en font plus vraiment
Daenyth
2
Ou vous pourriez être vraiment sensible et commencer à utiliser à la emacsplace. ;-)
Orbling

Réponses:

32

Je ne pense pas que ce soit nécessairement les fonctionnalités avancées de VIM qui le rendent si puissant. C'est le fait que vous n'avez jamais à retirer vos mains du clavier pour faire quoi que ce soit. Trouver quelque chose dans un énorme fichier est aussi simple que quelques frappes. L'ouverture et la fermeture de plusieurs fichiers dans la même fenêtre sont également incroyablement rapides.

Bien que cela puisse ne pas sembler intuitif au premier abord, cela vaut bien votre temps. Même si vous ne l'utilisez pas comme votre IDE standard (j'utilise généralement Visual Studio ou Eclipse, par exemple), vous vous retrouverez à utiliser VIM pour ouvrir et éditer rapidement des fichiers car cela devient beaucoup plus rapide que d'attendre que l'EDI charge.

Prenez le temps d'apprendre à bien utiliser VIM et vous ne le regretterez jamais. Je dirais que c'est comparable à l'apprentissage du type tactile.

Bryan Hales
la source
3
Cette réponse est probablement la fonctionnalité la plus utile pour Vim, c'est aussi l'une des seules. Tout ce qui est programmé pour Vim peut facilement être appliqué aux IDE aussi, c'est juste du traitement de texte après tout ...
Tamara Wijsman
4
+1 Pendant que je suis un passionné d'emacs, le même argument s'applique. Les IDE modernes sont beaucoup trop "graphiques" pour les éditeurs de texte .
Orbling
22

Pour moi, la :globalcommande est une application qui tue. Il exécutera des commandes vim arbitraires sur n'importe quelle ligne qui correspond (ou ne correspond pas) à une expression régulière.

Voici quelques exemples:

Le comportement par défaut consiste à répertorier chaque ligne qui correspond, donc:

:g/TODO:/

répertorie toutes les lignes contenant le texte "TODO:"

remplacez «Mickey» par «Minnie» sur toute ligne contenant également le mot «souris»

:g/Mouse/ s/Mickey/Minnie/

Les commandes peuvent avoir leur propre plage, donc cela supprimera de chaque ligne avec "TODO:" à la ligne vierge suivante:

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

Utilisez: g! à exécuter sur chaque ligne qui NE correspond PAS à l'expression régulière, par exemple pour remplacer "emacs" par "vim" sauf sur les lignes qui contiennent le mot "sucks":

:g!/sucks/ s/emacs/vim/
Dave Kirby
la source
Grands tours avec commande globale! Je n'avais jamais pensé à les utiliser comme ça.
Xavier T.
Eclipse prend en charge la recherche regex de fichiers, en tant que fichiers individuels, projets ou entre projets dans le même espace de travail. Le remplacement de regex est également pris en charge dans une certaine mesure, mais je pense que vim a une capacité de regex beaucoup plus puissante.
Thomas Owens
16

Je trouve la possibilité de supprimer tout ce qui se trouve entre un ensemble de symboles appariés incroyablement utile. Par exemple, assez souvent, je me retrouverai à vouloir remplacer une chaîne dans le code. Ainsi, di"pendant que le curseur est dans le bloc, la chaîne sera supprimée, tout en conservant l' ""intacte, et placera le curseur entre les deux guillemets. da"fait la même chose, mais supprime également les guillemets.

Chinmay Kanchi
la source
12
Encore mieux, ci"supprime et place le curseur en mode insertion afin que vous puissiez immédiatement commencer à écrire.
Konrad Rudolph
9

«Achèvement du mot clé en mode d'insertion». Ctrl-P et Ctrl-N en mode insertion pour rechercher dans le texte et essayer de compléter le nom de variable que vous saisissez. Je n'ai jamais vu ça dans aucun autre IDE et ça me manque vraiment. La complétion de code dans les IDE n'est tout simplement pas la même.

Lang Sharpe
la source
2
Si vous le souhaitez, vous pouvez également compléter correctement le code en utilisant omni-complete. ^X^Oomni-complète en mode insertion, si vous l'avez activé. Mais vous avez raison, je me retrouve à utiliser l'achèvement des mots clés bien plus que l'omni-complet.
Chinmay Kanchi
@Chinmay: Je pense que vous avez le sens de "propre" à l'envers. L'achèvement correct du code complète tout en utilisant le principe de la localité, même si vous écrivez du texte au lieu du code.
ninjalj
SlickEdit a une fonctionnalité similaire; et c'est très semblable à l'IDE
user281377
8
Je suis complètement en désaccord. Les IDE modernes (Visual Studio, Eclipse,…) ont une sorte de complétion de code qui rivalise (et en fait dépasse!) Ctrl-N facilement . Si vous ne l'avez pas vu dans les IDE, regardez à nouveau les versions actuelles. Et Omni-Complete ne fonctionne malheureusement pas correctement.
Konrad Rudolph
8

Une autre fonctionnalité que je trouve incroyablement utile est la possibilité de modifier l'indentation. :15,30>>indente deux fois toutes les lignes de 15 à 30 (inclus), tandis que :15,30<<désindente deux fois les mêmes lignes.

Chinmay Kanchi
la source
Bien que j'adore la fonctionnalité, à peu près tous les IDE ont un retrait (et un retrait) de bloc.
Sean McMillan
Je trouve =tout aussi, sinon plus, utile que <<et >>.
greyfade
6

la commande dd (supprimer la ligne courante). J'utilise tellement celui-ci.

De plus, pouvoir taper quelque chose comme 3dd et supprimer les 3 lignes suivantes est merveilleux. Je n'ai jamais vu ça dans un autre éditeur = D

Alex Hart
la source
Netbeans a presque cela, ^ X sans sélection coupera la ligne actuelle.
Alan Pearce
@Alan: Non, NetBeans a jVi :)
dr Hannibal Lecter
^ K supprime la ligne et ^ u3 ^ k supprimerait 3 lignes dans emacs. shift-delete fait de même dans Visual Studio.
Raoul
Alan: dd coupe également la ligne actuelle en ce sens qu'elle peut être insérée avec p plus tard
user281377
3
@Raoul, nous savons qu'il existe une série emacs de n combinaisons à 3 touches pour reproduire chaque commande vim - toujours, 3dd est de la poésie.
cbrandolino
6

La ccommande. Par exemple, ci"pour modifier les guillemets intérieurs. cwchanger de mot. Beaucoup de trucs pratiques avec.

Daenyth
la source
5

La .commande. Il répète la dernière commande.

Adam Jaskiewicz
la source
+1 à cela, et à toutes les autres fonctionnalités liées aux macros.
P Shved
3

Esc ! }va pousser le paragraphe en cours vers un filtre de ligne de commande comme fmtou wcou whichet retourner les résultats à l'éditeur.

Jé Queue
la source
3

Accès rapide à la ligne de commande. CTRL + Z ou: wqa m'obtiendra une ligne de commande en moins de 1 seconde sans que ma main ne quitte le clavier.

luispedro
la source
1
+1 Ce dernier morceau est la section cruciale pour à peu près tous les avantages: sans que ma main quitte le clavier
Orbling
... Ou :!/bin/bash. J'utilise :!assez fréquemment.
greyfade
J'utilise habituellement:sh
David Brown
3

Que je peux utiliser hjklpour déplacer le curseur sans avoir à quitter la patte du clavier. J'ai la plupart des programmes (tels que les lecteurs PDF), qui vous permettent de modifier les raccourcis clavier, définis pour utiliser les touches de déplacement Vim pour le défilement, etc.

Anto
la source
1

Il est assez difficile de répondre à cela, en raison quelque peu de l'imprécision de la question, et du fait que les IDE diffèrent, et beaucoup offrent des fonctionnalités que d'autres ne le font pas (et le fait que je n'en ai que quelques-unes).

Cependant, ce que je crois distingue Vim des autres éditeurs (oui, même Emacs, sur celui-ci), c'est que c'est vraiment un excellent éditeur . Au fil du temps, j'ai utilisé de nombreux éditeurs et je peux honnêtement dire que très peu viennent avec un ensemble complet de fonctionnalités pour manipuler du texte, comme Vim.

Mon style de manipulation de texte, par exemple, comprend très souvent l'utilisation de la duplication (ligne / sélection de plusieurs lignes) et le déplacement (ligne / sélection de plusieurs lignes) de haut en bas, pour lesquels j'ai depuis longtemps défini des raccourcis rapides. Ces fonctionnalités me manquent dans la plupart des IDE (même si j'ai entendu dire que ReSharper pour VS avait quelque chose de similaire).

Tour
la source
1

Saviez-vous qu'il existe un plugin vi pour eclipse ? Il en coûte 15 euros (20ish $ US) , mais il est donc la peine. Plus ddau milieu d'un document, et manque toutes les petites choses utiles.

Peut-être un peu hors sujet mais j'ai pensé qu'il valait la peine d'être souligné.

lorenzog
la source
0

Selon la langue que vous programmez, restez fidèle à l'ide, ou obtenez l'idé qui offre le plus de refactorisations que vous pouvez trouver, obtenez un resharper pour visual studio si vous utilisez c #, intellij pour java ou visual assist pour visual studio, maximiser les refactorisations en éclipse ou en netbeans.

Nous devrions passer de la manipulation de texte à la manipulation de code, les outils de refactorisation vous donnent cette capacité. Si vim vous donne toutes les fonctionnalités, je ne veux plus vraiment avoir affaire à un éditeur de texte

Harald Scheirich
la source
3
C'est à peu près un non-sens. Oui, le refactoring est un outil important, mais le code ne s'écrit pas lui-même. Un bon éditeur de texte contribue beaucoup plus à la productivité d'un programmeur qu'un bon outil de refactoring.
Chinmay Kanchi
-1

Sélection de colonne de table

Cela ne semble pas être dans les IDE populaires, et si c'est le cas, ils le gardent bien caché. C'est très pratique pour tester l'expression régulière par rapport à une colonne dans un fichier de données CSV.

sal
la source
-3

La plupart des IDE ne vous permettent pas de diviser l'écran. J'adore cette fonctionnalité dans VIM.

projecktzero
la source
5
La plupart des IDE ne le font pas? Je pense que la plupart le font, du moins ceux que j'ai utilisés.
Anto
Peux-tu donner quelques exemples?
projecktzero
1
L'écran de la plupart des IDE se divise différemment de Vim / Emacs. Ils le font généralement avec des onglets. Celles-ci sont plus difficiles / impossibles à manipuler avec le clavier (comparez avoir 50 fichiers ouverts dans Emacs contre 50 fichiers ouverts dans Eclipse et vous verrez rapidement Emacs gagner).
jsternberg
La plupart des IDE qui ont un écran partagé ne fournissent pas de méthodes faciles pour naviguer / ajuster à la<C-w>
Wayne Werner