Quelles fonctionnalités Vim utilisez-vous? [fermé]

13

Je passe presque toute la journée à Vim et je suis sûr que beaucoup d'entre vous le font aussi. Quelles fonctionnalités utilisez-vous pour améliorer votre codage au quotidien? Celui que j'utilise est gv , qui vous permettra de resélectionner le texte précédemment sélectionné. C'est super pour se ré-indenter!

Peter Mortensen
la source
1
À des fins historiques, voici un lien vers la question SO originale: stackoverflow.com/questions/95072/…
Jax
Notez mon commentaire ci-dessous, et vous n'aurez même pas à taper gv. :)
Nathan Long

Réponses:

9

:% s / x / y / g

Cette commande remplace toutes les instances de x dans le fichier actuel par y . Il s'agit essentiellement d'une recherche et d'un remplacement, mais je l'utilise si souvent depuis que je l'ai appris au travail qu'il est devenu inestimable.

Aussi, / chaîne de recherche

puis n pour parcourir toutes les instances de la chaîne de recherche dans le fichier. Idéal pour effectuer des réglages manuels beaucoup plus facilement, surtout si vous ne pouvez pas appliquer une règle à l'ensemble du fichier.

karlgrz
la source
Je travaille actuellement sur la conversion d'une grande section de notre base de code au travail et je le fais entièrement avec des expressions régulières vim (jusqu'à présent). Ça marche vraiment bien!
Frew Schmidt
Ajoutez «c» à la fin pour rendre la commande interactive. par exemple:% s / x / y / gc
sml
1
Notez que %c'est où faire la substitution - %signifie "le fichier actuel". Si vous surlignez visuellement certaines lignes et tapez :s, vous pouvez effectuer une substitution uniquement dans cette sélection.
Nathan Long
7

== fait une belle mise en retrait automatique sur la ligne actuelle.

Normalement, cependant, j'utilise =avec un mouvement, comme =Gpour mettre en retrait à la fin du fichier, ou =i}pour mettre en retrait à l'intérieur de l'ensemble actuel d'accolades.

Nathan Long
la source
2
Gardez également à l'esprit >> et << qui peuvent manuellement (dé) indenter.
Frew Schmidt
@Frew - oui. De plus, si vous ajoutez vmap <Tab> >gvet vmap <S-Tab> <gvà votre .vimrc, vous pouvez respectivement indenter et désindenter avec Tab et Shift-Tab, et il reviendra directement en mode de sélection visuelle afin que vous puissiez indenter ou désindenter davantage.
Nathan Long
6

=% pour l'indentation automatique de tout dans un bloc de code.

Kristo
la source
Oooh! C'est nouveau pour moi!
Frew Schmidt
Cela fonctionne si votre curseur est au début {. Si vous êtes à l'intérieur du bloc, vous pouvez le faire =i{pour "mettre en retrait entre les accolades".
Nathan Long
5

Utilisez *en mode commande pour rechercher le mot sous le curseur.

Jonas
la source
1
Et n'oubliez pas que c'est la commande sœur, #, qui fait la même chose mais va en arrière au lieu d'avancer!
Frew Schmidt
5

La :!commande - inestimable pour l' lsing, et l'astuce "sudo tee".

On m'a demandé d'expliquer le tee-shirt. Fondamentalement, il vous permet d'enregistrer un fichier texte avec des privilèges d'administrateur, même si vous n'avez pas démarré VIM en tant que root:

:w !sudo tee %
personne-b
la source
Vous voudrez peut-être expliquer l'astuce "sudo tee" ici :-) Aussi j'aime faire:! Trier après avoir mis en évidence les définitions de variables et ainsi de suite.
Frew Schmidt
Vous pouvez vraiment transformer Vim en un grand éditeur "scriptable" en utilisant:! et certains scripts shell / Python / Perl / autres.
Jonas
J'ai en fait une alternative à !ls, qui exécute un vnew, sort r!lsdans le nouveau tampon et le rétrécit horizontalement. Je ne peux pas être dérangé de me souvenir de tous les fichiers dans un répertoire avec plus de trois en lui;)
new123456
4
.

Frapper le. répète la commande précédente. Beau pour, disons, éditer un .iniou deux.

Phoshi
la source
c'est étonnamment puissant, mais il faut un peu de vim-ing avant que vous puissiez vraiment vous améliorer.
aaron
2

J'utilise toujours gq pour refaire les sauts de ligne sur les e-mails, les fichiers texte, etc.

erichui
la source
Oooh, j'avais totalement oublié ça!
Frew Schmidt
Pourquoi, oh pourquoi, les clients de messagerie les plus populaires ne peuvent-ils pas prendre en charge des fonctionnalités similaires?
erichui
Récemment, j'utilise gw au lieu de gq car il garde la position du curseur
SergioAraujo
2

Par où commencer ... Voici les choses dont je me souviens avoir utilisé au cours des 5 dernières minutes.

  • NERD Tree - Exploration de fichiers. Rend VIM plus comme un IDE.
    • Une chose énorme pour moi est la possibilité d'accéder à cdun répertoire, puis de passer à une invite de shell via mes mappages de shell (ci-dessous).
  • ci pour vider tout ce que vous êtes coincé entre.
  • :! pour lancer des applications standard.
    • J'ai des mappages pour lancer une invite shell, un client mysql, des fichiers journaux apache, etc.
    • L' intégration de Subversion est toujours agréable. Quick diffs, stats, etc.
  • :abbr pour faire disparaître la frappe répétitive de gros blocs.
  • Onglets. Dois-je en dire plus?
  • Fractionner des fichiers, toujours bon. :Sexc'est toujours sympa.
  • :set paste! pour éviter que l'auto-indentation ne tourne mal.
Jack M.
la source
J'utilise tout cela sauf pour abbr. J'ai tendance à faire beaucoup plus de macros que d'abréviations.
Frew Schmidt
2

ZZ enregistrer et quitter (au lieu de: wq!)

dogbane
la source
Hein? Et x ?
DevSolar
1

J'utilise beaucoup les commandes suivantes lors de l'écriture ou de la traversée du code C / Tcl / Perl:

copier-coller de code

CTRL-fet CTRL-bpour la page en avant et en arrière
%pour la traversée bloc par bloc
^ goto début de ligne
$ goto dernière fin de ligne

commencer à sélectionner le code à l'aide de la commande v(mode visuel) et de l'une des touches de déplacement ci-dessus
ypour copier
ppour coller

s pour supprimer un caractère et passer en mode insertion pour taper un nouveau texte.

Traversées au niveau du code (nécessite une discipline de style de codage)

]]pour le début de la fonction suivante
[[pour le début de la fonction précédente

CTRL-] pour passer à la définition d'une variable / fonction / macro si des balises sont disponibles.

Chercher

* => mot de recherche (ou texte sélectionné à l'aide de v) vers l'avant
# => mot de recherche (ou texte sélectionné à l'aide de v) vers l'arrière
n => exécuter la commande de recherche précédente vers l'avant
N => exécuter la commande de recherche précédente vers l'arrière

Toutes les commandes ci-dessus peuvent être précédées d'un nombre pour indiquer combien de fois l'exécuter. La réalisation de la puissance de cette dimension supplémentaire intervient lentement à mesure que l'on utilise de plus en plus vim et se met au défi de s'améliorer.

sécurisés
la source
Ah,]] et [[sont nouveaux pour moi. C'est super!
Frew Schmidt
0

Je viens de saisir du texte. Tout le reste n'est que ... du sucre.

akira
la source
0

Je suis un ancien utilisateur de TextPad et j'avais mémorisé bon nombre des touches accélératrices de ce programme. L'une des premières choses que j'ai faites dans Vim a été d'apprendre la fonction de carte pour conserver la cohérence (recherche F5, remplacement F8, etc.). J'ai créé mon schéma de couleurs personnel et emprunté beaucoup aux fichiers vimrc des autres. Viva Vim! Configurable à tout degré.

wbogacz
la source