Vim, le célèbre éditeur de texte vient de fêter son 20e anniversaire. C’est, en effet, le 2 novembre 1991 que Bram Moolenaar a publié la première version de Vim. C’était alors un clone de vi pour Amiga. Toutefois, contrairement à vi, c’est un logiciel libre. Il a pu ainsi être porté rapidement sur d’autres environnements et devenir l’éditeur de référence de nombreux développeurs.
Au fil des ans, de nombreuses versions se sont succédées (la version actuelle est la 7.3), mais son auteur a gardé le principe que Vim doit rester un éditeur de texte et être le plus possible au service de l’utilisateur.
Profitons‐en pour rappeler que si Vim est un logiciel libre publié sous une licence compatible avec la GPL, ses utilisateurs sont encouragés à faire un don à ICCF Holland, une association créée par Bram Moolenaar pour aider les enfants en Ouganda.
Et pour célébrer les 20 ans de Vim, vous êtes encouragés à poster en commentaire toutes les astuces et anecdotes que vous avez sur Vim.
Aller plus loin
- Le site officiel de Vim (347 clics)
- La page Wikipédia de Vim (257 clics)
- Le wiki francophone sur Vim (318 clics)
- 2 décennies de productivité avec Vim (208 clics)
- Aider les enfants en Ouganda (48 clics)
# En vrac, mes préférés
Posté par nodens . Évalué à 8.
Des astuces ? oulahhhhh y'en a tellement...
Déjà ne pas oublier de modifier son .vimrc pour avoir les options qui vont bien :
en mode déplacement :
#
pour rechercher le mot sur lequel est placé le curseur% pour aller à la parenthèse (ou crochet, ou accolade) fermante/ouvrante correspondant à la parenthèse sur laquelle est placée le curseur
. pour répéter la dernière édition
ctrl+ et ctrl- pour incrémenter/décrémenter des nombres (s'applique au prochain sur la ligne)
yi copier ce qui est entre , pour remplacer (change), utiliser ci : pratique pour modifier le contenu d'un bloc ou d'une chaine
En mode édition, les commandes de completion :
ctrl+n (p) = completion de mot, match suivant (précédent)
ctrl+x f = completion de nom de fichier
ctrl+x l = completion de ligne
j'en oublie forcément.
Il y a aussi le mode multi-fenêtres (ctrl+w ou est n pour créer (s pour faire un split vertical plutôt qu'horizontal), , w pour changer de fenêtre courante, + et - pour changer la taille, x pour inverser avec la fenêtre suivante... La variante est le mode diff, avec le très pratique :diffget pour patcher le bloc courant sélectionné avec v.
Ah, et puis dans la recherche courante, \v pour passer en mode verymagic (maximum d'interprétation des caractères spéciaux) et \V pour "nomagic" (pas d'interprétation). :help magic. Ca peut se faire globalement aussi bien sûr.
Bon je m'arrête là on pourrait continuer longtemps. J'ai hâte de découvrir les tricks des autres... :D
Le truc quand on découvre une nouvelle commande / manière de faire dans vim : s'astreindre à l'utiliser au maximum pendant une courte période, même quand il y a plus simple ou plus rapide. Ca permet de créer l'automatisme. Ce n'est pas limité à vim bien sûr, mais vu le nombre d'astuces qu'on rencontre et qu'on n'utilise jamais... ;)
[^] # Re: En vrac, mes préférés
Posté par nodens . Évalué à 2.
Bon mon bloc de code pour la conf a sauté, j'ai du mal avec la nouvelle interface de commentaires...
Reprenons :
syntax on
if has("autocmd")
" Enabled file type detection
" Use the default filetype settings. If you also want to load indent files
" to automatically do language-dependent indenting add 'indent' as well.
filetype plugin indent on
" try to remember last known cursor position
autocmd BufReadPost * if line("'\"") | exe "normal '\"" | endif
endif " has ("autocmd")
set showcmd
set showmatch
set smartcase
set incsearch
set hlsearch
C'est le minimum vital.
[^] # Re: En vrac, mes préférés
Posté par daemontux . Évalué à 9.
Ce qui est sympa avec vim, c'est la façon dont les choses se combinent entre-elles et de façon assez intuitive. Si tu sais comment faire un marqueur et comment effacer du texte, tu sais naturellement comment effacer du texte jusqu'au marqueur.
Il n'y a pas très longtemps que j'utilise vim, mais voilà ma cheat sheet perso qui a encore besoin d'être complétée mais qui contient déjà pas mal de trucs bien pratiques :
Et mon .vimrc :
Pour les utilisateurs de vim sous bash :
echo "set -o vi" >> ~/.bashrc
et les commandes vi deviennent utilisables sous bash (par défaut en mode emacs) !
[^] # Re: En vrac, mes préférés
Posté par alice . Évalué à 4.
Ce qui est sympa avec vim, c'est la façon dont les choses se combinent entre-elles et de façon assez intuitive.
On ne doit pas avoir la même définition d'intuitif...
[^] # Re: En vrac, mes préférés
Posté par pini . Évalué à 9.
Certes, les commandes de bases de vim peuvent paraître un peu cryptiques au premier abord, mais ce qu'il voulait dire, c'est qu'une fois que tu sais faire A et B alors tu sais automagiquement comment faire A+B.
Par exemple, si tu sais effacer (d) et que tu sais aller à la fin du fichier (G), alors tu sais déjà effacer jusqu'à la fin de fichier (dG), rien à apprendre de nouveau.
[^] # Re: En vrac, mes préférés
Posté par alice . Évalué à -1.
Si tu sais sélectionner (shift+mouvement), supprimer (suppr) et aller à la fin d'un fichier ctrl+end, alors tu sais automatiquement comment supprimer jusqu'à la fin d'un fichier (shit+ctrl+end, puis suppr)!
[^] # Re: En vrac, mes préférés
Posté par Frédéric Heulin . Évalué à 2.
Essaie d'appliquer ta méthode aux challenges du VimGolf pour voir ;-)
[^] # Re: En vrac, mes préférés
Posté par j_kerviel . Évalué à 4.
Merci pour la cheat list, j'ai appris plusieurs choses.
Est ce qu'elle est publiée quelque part (en dehors d'ici, ce qui est déjà bien), par exemple sur un wiki ?
Si ce n'est pas le cas, pourquoi ne pas lancer une page vim cheat code sur le wiki de linuxfr ?
Quelques remarques :
gg - Aller à la première ligne du fichier. Plus rapide que ':0'.
Hum, là tu remplaces tous les foo en déput de ligne par des tabulations plutôt.
À noter qu'il n'est pas nécessaire de taper '<,'>. Les seules touches à taper sont
Vjjjjjjjjj:s/^/#/
D'ailleurs on peut fait un copier coller de la ligne dans vim.
Autre solution :
ctrl+VjjjjjjjI#[ESC]
Prend un peu plus de temps à processer, mais éviter de taper :s/^/
Et pour supprimer les affreux ^M qui apparaissent en fin de ligne, taper
:%s/^M//
En écrivant le ^M avec la combinaison ctrl+v,ctrl+m
Quelques autres trucs :
ctrl+u/d : remonte/descend d'un demi écran (up/down)
ctrl+b/f : remonte/descend d'un écran (back/forward)
ctrl+e/y : remonte/descend le fichier d'une ligne
H / M / L : va en haut (high) / au milieu (medium) / en bas (Low) de l'écran
[^] # Re: En vrac, mes préférés
Posté par Victor STINNER (site web personnel) . Évalué à 3.
Y'a aussi une astuce toute bête qui m'a fait gagner beaucoup de temps : vim fichier +ligne ouvre un fichier en se positionnant directement à la ligne spécifiée.
[^] # Re: En vrac, mes préférés
Posté par paco81 . Évalué à 3. Dernière modification le 03 novembre 2011 à 10:59.
Alors, mes préférés :
ci(
(change inside parenthesis),das
(delete a sentence),yi{
(yank inside brackets), bref vous avez compris l'idée...[^] # Re: En vrac, mes préférés
Posté par Sebastien MICHEL (site web personnel) . Évalué à 4. Dernière modification le 03 novembre 2011 à 11:00.
En mode insertion :
Pour écrire le résultat d'une opération arithmétique :
CTRL-R=5+3
Pour écrire ce qu'il y a dans le buffer de recherche :
CTRL-R/
Pour écrire le nom du fichier courant :
CTRL-R%
Et plus généralement fonctionne avec tout les buffers que l'on veut :
[^] # Re: En vrac, mes préférés
Posté par jiyuu . Évalué à 3.
C'est bôo, on dirait presque du emacs.
[^] # Re: En vrac, mes préférés
Posté par j_kerviel . Évalué à 3.
Ça ne fonctionne pas forcément. C'est parfois interprété par le terminal, ou bien par la gui (dans le cas de gvim et consorts) pour modifier la taille de la police.
Mais on peut toujours utiliser ctrl+a / ctrl+x. Et l'avantage, c'est que ça fonctionne aussi dans vimperator (dans le navigateur aussi la touche ctrl combinée avec + ou - modifie la taille de la police).
[^] # Re: En vrac, mes préférés
Posté par gpe . Évalué à 3.
# pour rechercher le mot sur lequel est placé le curseur
Marche aussi avec * qui est plus simple d'accès
[^] # Re: En vrac, mes préférés
Posté par ploufy . Évalué à 4.
Ah ben non... * permet de chercher le mot vers l'avant alors que # recherche le mot vers l'arrière. Ensuite n permet de rechercher l'occurence suivante dans le même sens (vers l'arrière avec # et vers l'avant avec *) et N permet de rechercher l'occurence suivante dans le sens inverse (vers l'avant avec # et vers l'arrière avec *).
Finalement vim c'est super logique une fois qu'on connait qq commande de base, et c'est vraiment génial lorsqu'on déteste passer son temps à aller chercher la souris avec la main droite...
[^] # Re: En vrac, mes préférés
Posté par gpe . Évalué à 1.
Pourquoi "ah ben non" ? Dans la contribution initiale on parlait de "pour rechercher le mot sur lequel est placé le curseur". Quand on se limite à ça, # et * sont équivalent. ;)
Après si on prend en considération le sens de recherche effectivement ça diffère. Je plussois donc ta contribution ;)
Je rajoute même que tant que l'on veut continuer la recherche dans le même sens, on peut économiser un déplacement de doigt en continuant avec * et # plutôt que d'aller sur le n ...
# mon truc à moi
Posté par Dreammm . Évalué à 4.
:r /tmp/toto
inclut le fichier /tmp/toto dans le buffer courant
:r!command
inclut le résultat de l'exécution de la commande externe «command» dans le buffer courant.
[^] # Re: mon truc à moi
Posté par Étienne . Évalué à 3.
Dans le même esprit
:'<,'>!command
Passe la sélection courante sur l'entrée standard de la commande et la remplace par la sortie de la commande. Avec bien sur les variations :
:%!command
:12,.!command
etc.
Étienne
# petite blague/histoire :-)
Posté par Damien Pobel (site web personnel) . Évalué à 10.
Plutôt que de poster une astuce que personne ne retiendra, je préfère cette petite histoire/blague vue sur Twitter (crédit à son auteur) :p
https://damien.pobel.fr
# Mes plugins favoris.
Posté par Sebastien MICHEL (site web personnel) . Évalué à 2. Dernière modification le 03 novembre 2011 à 11:01.
[^] # Re: Mes plugins favoris.
Posté par Étienne . Évalué à 5. Dernière modification le 03 novembre 2011 à 11:01.
# Changer le répertoire courant
Posté par Étienne . Évalué à 3.
Il m'arrive souvent de vouloir changer le répertoire courant (:chdir ou :lchdir) pour me retrouver dans le répertoire du fichier en cours d'édition (afin de facilement travailler sur les fichiers du même répertoire). J'ai ajouté ces 2 commandes dans mon vimrc :
command LCdf execute "lchdir ".escape(expand("%:p:h"), ' ')
command Cdf execute "chdir ".escape(expand("%:p:h"), ' ')
Explications :
La fonction escape permet de rajouter un \ devant les espaces.
Étienne
[^] # Re: Changer le répertoire courant
Posté par chimrod (site web personnel) . Évalué à 2.
Et voilà la même chose automatisée (à chaque fois que l'on change de buffer, le répertoire courant est mis à jour) :
[^] # Re: Changer le répertoire courant
Posté par LupusMic (site web personnel, Mastodon) . Évalué à 2.
C'est casse-gueule quand même. Personnellement, j'aime sacoir dans quel répertoire je suis, et ne pas en bouger. Pour peut que les outils dépendent du répertoire d'exe (comme la suite de test, svn, etc), ça peut rapidement devenir ingérable.
[^] # Re: Changer le répertoire courant
Posté par chimrod (site web personnel) . Évalué à 1.
Je n'ai rencontré aucun problèmes avec.
Pour svn par exemple, j'ai pris l'habitude de le lancer dans un shell :
Et ça fonctionne sans problème.
[^] # Re: Changer le répertoire courant
Posté par Balkoth . Évalué à 7.
Il y a même une option qui fait ça très bien, pas besoin de définir une fonction.
:set autochdir
[^] # Re: Changer le répertoire courant
Posté par LupusMic (site web personnel, Mastodon) . Évalué à 1.
Ce n'est pas une question de rencontrer ou non des problèmes. De devoir continuellement se demander dans quel répertoire tu es, c'est pénible. Je préfère asseoir ma réflexion depuis un unique point de départ, plutôt que de devoir toujours changer de point de référence dans ma réflexion. Ce n'est pas une question d'affichage, c'est vraiment une question de référentiel.
Et je on ne commit pas directement, on teste d'abord, saligaud :p
[^] # Re: Changer le répertoire courant
Posté par barmic . Évalué à 2.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Changer le répertoire courant
Posté par gpe . Évalué à 2.
Oui moi aussi je préfère rester sur un emplacement fixe. En général en tête de l'arbo des sources. Comme ça quand on veut ouvrir un autre fichier ça évite de devoir tout remonter depuis le fichier courant pour redescendre ensuite vers le fichier cherché.
# Mon astuce récente, dont je ne sais plus me passer.
Posté par Kangs . Évalué à 3.
shift+k sur une fonction C par exemple, je l'ai découverte par hasard (fausse manipe)
Marche bien sous vim, mais sous gvim c'est pas top.
[^] # Re: Mon astuce récente, dont je ne sais plus me passer.
Posté par Mr. Magne . Évalué à 3.
Il y a un plugin pour gvim (man.vim):
Et avec ça dans le .vimrc, c'est tout beau dans gvim
# Preview de VIM 7.4
Posté par Michaël (site web personnel) . Évalué à 4.
Pour la version 7.4, l'intégration d'un interpréteur ELISP est prévue, elle ouvrira les portes de l'édition de texte efficace aux utilisateurs de Vim.
[^] # Re: Preview de VIM 7.4
Posté par Jean-Marc Liotier (site web personnel) . Évalué à 3.
Trop gros, passera pas...
[^] # Re: Preview de VIM 7.4
Posté par zebra3 . Évalué à 6.
Bah oui, si on intègre un mode EMACS dans vim, il faudra plus de RAM.
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: Preview de VIM 7.4
Posté par GeneralZod . Évalué à 3.
ça va, le moindre gadget embarque au moins 16Mo, ce qui suffit très largement pour faire tourner vim dans Emacs OS ;)
[^] # Re: Preview de VIM 7.4
Posté par zebra3 . Évalué à 1.
Ça suffit pour Vim, mais Emacs dans 16 Mo, comment dire…
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: Preview de VIM 7.4
Posté par Michaël (site web personnel) . Évalué à 3.
Chez moi d'après TOP j'ai ça:
donc le seul de ces quatre programmes qu'on puisse espérer lancer avec 16Mo de RAM est
nvi
et pasvim
. Lest tailles de VIM (80 Mo) et Emacs dans un terminal (100 Mo) ont le même ordre de grandeur.[^] # Re: Preview de VIM 7.4
Posté par BB . Évalué à 1.
Le SIZE doit pouvoir dépasser la mémoire dispo. (tant que ça dépasse pas le maximum d’addressage), il me semble, c’est le RESIDENT qui est pertinent comme espace effectivement utilisé.
De plus je suppute que la mémoire occupée est fortement dépendante des options/extensions utilisées, sans parler des options de compilation (il y a des chances pour que ta distrib. te propose plusieurs paquets binaires pour vim).
[^] # Re: Preview de VIM 7.4
Posté par BB . Évalué à 1.
Pour donner de l’eau à mon moulin
VIRT RES
40M 8M (vim-gtk — scripting python&co+gui)
25M 5M (vim-nox — scripting python&co)
13M 4M (vim)
[^] # Re: Preview de VIM 7.4
Posté par Michaël (site web personnel) . Évalué à 3.
Il me semble que RES est la RAM effectivement utilisée (la RAM pas le SWAP) tandis que SIZE est la somme des tailles des segments TEXT, DATA et STACK autrement dit la place que prend le programme en mémoire.
Après vérification dans
ports/editors/vim/Makefile
il semblerait que cette version devim
est compilée avecce qui intègre tous les interpréteurs correspondants à
vim
.[^] # Re: Preview de VIM 7.4
Posté par claudex . Évalué à 2.
Tu es sûr de tes chiffres? Parce qu'en démarrant Vim et utilisant l'outil de KDE pour la consommation mémoire, j'ai:
« Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche
[^] # Re: Preview de VIM 7.4
Posté par Miod in the middle . Évalué à -2.
En quoi est-ce surprenant ? Vim, depuis les versions 6.x, est devenu un bloatware. Prétendre que vim est moins gourmand qu'emacs est une gageure. De nos jours, sauf vouloir utiliser nvi qui est bien largement suffisant pour un programmeur C ou un administrateur système, il est préférable de lancer emacs puis M-x viper-mode 5, que lancer vim.
[^] # Re: Preview de VIM 7.4
Posté par Michaël (site web personnel) . Évalué à 2.
Disons que c'était une sorte de moment de solidarité avec Charlie Hebdo!
[^] # Re: Preview de VIM 7.4
Posté par lendemain . Évalué à 2.
Si vim veux être à jour il devrait miser sur guile.
A ce propos l'équipe éclipse a décidé d'intégré clojure en tant que language d'extension.
# Bien utile aussi...
Posté par pini . Évalué à 4.
... et que j'utilise beaucoup, en combinaison avec une limite sur la longueur des lignes (set tw=whatever), c'est gqap pour justifier le paragraphe courant.
Quand on édite du texte et qu'on rajoute du contenu, c'est très pratique : on rallonge les lignes et hop "gqap", tout est de nouveau tout bien aligné :)
[^] # Re: Bien utile aussi...
Posté par Sebastien MICHEL (site web personnel) . Évalué à 1.
par habitude moi c'est vapgq ;-)
[^] # Re: Bien utile aussi...
Posté par jseb . Évalué à 3.
Moi je fais «gqip» , en plus en bépo, c'est extrêmement rapide à taper.
Je m'en sers souvent pour justifier un paragraphe quand je tape un mail (oui, je tape mes mails avec vim sous mutt, et alors ?)
Discussions en français sur la création de jeux videos : IRC libera / #gamedev-fr
[^] # Re: Bien utile aussi...
Posté par Nicolas Évrard (site web personnel, Mastodon) . Évalué à 2.
Une touche de moins: j'utilise gq}, ça ne justifie pas tout (mais c'est pas grave car souvent le début est déjà bien justifié) mais jusqu'à la fin du paragraphe.
[^] # Re: Bien utile aussi...
Posté par Artefact2 (site web personnel) . Évalué à 3.
Plus rapide avec emacs: M-q par défaut :) (Et ça s'adapte suivant le mode choisi, par exemple cela va justifier en conservant les // en début de ligne si on modifie du code C++)
J'ai rien contre vim, mais cette commande est pratique (quelque soit l'éditeur), et tout le monde mérite de la connaître.
[^] # Re: Bien utile aussi...
Posté par Artefact2 (site web personnel) . Évalué à -3.
C'est assez désespérant de voir qu'un post qui apporte quelque chose d'utile (le mien) est moinssé alors que le gros troll velu de base (http://linuxfr.org/news/vim-f%C3%AAte-son-20e%C2%A0anniversaire#comment-1286536) est à +5…
[^] # Re: Bien utile aussi...
Posté par Couz . Évalué à 2.
Je pense qu'il faut faire la différence entre un troll/blague que tout le monde attendait avec impatience, et un commentaire sans rapport avec la choucroutte.
# Et ce qu'on utilise pas
Posté par Nicolas Évrard (site web personnel, Mastodon) . Évalué à 3.
J'adore vim et je l'utilise tous les jours.
Mais il y a une chose que je n'utilise pas bien que j'en connaisse l'existence depuis fort longtemps.
C'est l'utilisation des balises pour lancer des commandes.
Je fais tout en mode visuel quand je dois agir sur une portion de texte. Ou alors j'utilise les raccourcis w,e,b,),} et leurs combinaison avec i ou parfois a.
Alors je me demande comment vous faites pour savoir que vous voulez agir sur la ligne courante + le 25 qui suivent ? Pour moi c'est pas assez sémantique et probablement source de plus d'erreurs que d'autre chose.
[^] # Re: Et ce qu'on utilise pas
Posté par mornik . Évalué à 2.
Je travail beaucoup avec le numéro des lignes affichées
[^] # Re: Et ce qu'on utilise pas
Posté par mandre . Évalué à 4.
:set relativenumber
devrait faire ton bonheur.[^] # Re: Et ce qu'on utilise pas
Posté par mornik . Évalué à 1.
Merci ! A noter que ça ne marche que sous vim 7.3 (donc indispo sur les dépôts de certains systèmes).
Mais c'est bien classe :D
# Easter eggs
Posté par jseb . Évalué à 2.
:help!
:help holy-grail
Discussions en français sur la création de jeux videos : IRC libera / #gamedev-fr
[^] # Re: Easter eggs
Posté par mornik . Évalué à 0.
et aussi :h 42 !!
# eclipse
Posté par BAud (site web personnel) . Évalué à 2.
et pendant ce temps-là, eclipse n'a que 10 ans ;-) http://www.eclipse.org/10years/
vu sur http://developers.slashdot.org/story/11/11/02/1729211/open-source-eclipse-celebrates-10th-birthday
[^] # Re: eclipse
Posté par zebra3 . Évalué à 10.
En comptant le temps de chargement, on peut enlever cinq ans à son âge…
Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur
[^] # Re: eclipse
Posté par mornik . Évalué à 1.
Et quitte à parler du gros bas de poitrine on peut rappeler que le projet eclim lui permet d'apparaitre plus sympathique ;-)
# Mon astuce.
Posté par Grunt . Évalué à 2.
Une astuce pour rendre vim franchement plus agréable à utiliser:
À copier dans le .bashrc.
THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.
[^] # Re: Mon astuce.
Posté par Nicolas Évrard (site web personnel, Mastodon) . Évalué à 0.
En utilisant emacs t'as fait une grosse typo: par agréable tu voulais probablement écrire lourd.
[^] # Re: Mon astuce.
Posté par Michaël (site web personnel) . Évalué à 2.
Qu'est-ce que tu entends par lourd? Sur mon système (FreeBSD 8.2 sur AMD64) j'ai 80 Mo pour VIM et 100 Mo pour Emacs: la différence de poids n'est donc pas dans la taille mémoire.
https://linuxfr.org/news/vim-f%C3%AAte-son-20e%C2%A0anniversaire#comment-1286857
[^] # Re: Mon astuce.
Posté par Tuxologue . Évalué à -3.
De toutes façons ed est l'éditeur standard.
[^] # Re: Mon astuce.
Posté par Anonyme . Évalué à 10.
Une astuce pour rendre bash franchement plus agréable à utiliser :
alias bash='zsh'
À copier dans le
/etc/profile
.[^] # Re: Mon astuce.
Posté par Tuxologue . Évalué à -10.
Gros +1 pour zsh.
[^] # Re: Mon astuce.
Posté par GeneralZod . Évalué à 8.
chsh -s /bin/zsh (ou bien chsh -s /usr/local/bin/zsh sous FreeBSD) c'est même mieux.
# :e Astuce
Posté par kawas44 . Évalué à 4.
Quelques astuces bien utiles
Les text-objects c'est le top ! A apprendre tout de suite
:h text-objects
Ré-ouvrir un fichier avec un encoding différent
:e ++enc=latin1
Ré-ouvrir un fichier au format différent
:e ++ff=dos
Ouvrir un fichier en séparant l'écran horizontalement
:sp
Déplacer la vue en cours à droite par exemple pour passer de horizontale à verticale,
ça marche avec H J K L pour les directions
Ctrl-w K
Tuer le buffer courant
:bd
Voir le buffer contenant dans son nom le mot "codec"
:b codec
Après une commande commençant par ":" genre :bn, on peut rejouer cette commande en faisant @: puis comme c'est un enregistrement on peut faire @@ toutes les fois suivantes.
D'ailleurs les enregistrements, c'est bien pratique, par exemple effacer le ';' à la fin de chaque phrase (oui on peut le faire avec rechercher/remplacer mais c'est pour l'exemple).
Donc on enregistre (q) dans le registre q (q), aller en fin de ligne ($), effacer le caractère courant (x), aller a la ligne suivante (j) et arrêter l'enregistrement (q), ce qui donne :
qq$xjq
Puis on exécute le contenu du registre q en faisant @q
On peut utiliser un nombre d'exécution comme 37@q
Et on répète la dernière exécution avec @@
Oui j'ai désactivé les flèches claviers dans mon vimrc,
et le truc pas pratique quand on n'active pas les retours à la ligne et que la ligne est trop longue pour la voir, c'est qu'il n'y a pas dans Vim d'ascenseur horizontal.
Mais bon ya une commande pour déplacer la vue vers la droite ou la gauche: zL et zH
Voila y'en a plein d'autre et chacun utilise ce qu'il a besoin, c'est l'esprit de Vim :)
# Vim
Posté par Anonyme . Évalué à 1.
# Développement en C avec vim
Posté par Stéphane List (site web personnel) . Évalué à 2.
Aller directement aux déclarations des fonctions dans le code source
Ajouter les lignes suivantes dans votre ~/.vimrc
set tags=./tags,./../tags,./../../tags,./../../../tags,tags
Dans le Makefile, ajouter ctags -R *
pour reconstruire les tags à chaque nouvelle compilation par exemple
Dans VIM, utiliser CTRL+] pour sauter à un tag
CTRL+T pour retourner en arrière
Complétion
CTRL N : auto complétion des noms de fonctions, variables ...
CTRL P : complétion en remontant dans le fichier (P = Previous)
# Save and Quit
Posté par Raphael Berlamont (site web personnel) . Évalué à 2.
Une commande qui bizarrement n'est pas beaucoup utilisée, mais qui permet d'économiser 1 appui de touche :
:x = :wq
C'est quand même 33% de réduction de frappe !
[^] # Re: Save and Quit
Posté par MyLordAngus . Évalué à 3.
A noter qu'il existe aussi la possibilité de quitter en sauvant en faisant la combinaison ZZ, sans deux-points devant, pas mal rapide aussi.
[^] # Re: Save and Quit
Posté par Benoît Sibaud (site web personnel) . Évalué à 2.
Pas exactement pareil (source http://vimdoc.sourceforge.net/htmldoc/editing.html#:quit ) :
:wq Write the current file and quit. Writing fails when the file is read-only or the buffer does not have a name. Quitting fails when the last file in the argument list has not been edited.
=> si possible on sauvegarde, et si possible on quitte (donc la date du fichier est modifiée si possible)
:x Like ":wq", but write only when changes have been made.
=> si possible et si modifié on sauvegarde, et si possible on quitte (donc la date du fichier est modifiée seulement en cas de modification)
ZZ Write current file, if modified, and quit (same as ":x"). (Note: If there are several windows for the current file, the file is written if it was modified and the window is closed).
[^] # Re: Save and Quit
Posté par Michaël (site web personnel) . Évalué à 2.
Si tu comptes la validation (qui fait partie de la commande, car sans elle il ne se passe rien) cela fait 25%.
# Vim et ses petits
Posté par napster2core . Évalué à 10.
Vim (vi) a aussi influencé beaucoup de logiciels/plugins. Par exemple le fameux Vimperator que j'utilise au quotidien. Rien de plus confortable que de retrouver ses habitudes et de ne pas avoir à quitter son clavier quand on est programmeur/adminsys (ssh, console, etc... pour les admins).
Sinon un petit xkcd pour la route (bon il est plutôt pro emacs, mais bon... trollons le jeudi comme qui dirait !):
Si tu ne sais pas demande, si tu sais partage !
# En vrac
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 2.
Installer vundle, puis mettre dans son .vimrc:
Puis aussi, en vrac:
[^] # Re: En vrac
Posté par mackwic . Évalué à 5.
Ça a l'air très bien mais... ça fait quoi ton truc ?
[^] # Re: En vrac
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 3.
La partie Vundle/Bundle, c'est un peu comme le CPAN.
Ça installe les plugins directement à partir du site de vim ou de github, ça permet de les mettre à jour…
J'ai laissé une partie des plugins les plus utiles que j'utilise.
Je conseille vraiment snipmate (insertion rapide de code), mru (accès aux fichiers "most recently used"), et surround (gestion des conteneurs de toute sortes: parenthèses, tags xml, etc.).
charge/ouvre directement vimrc
ignore ces extensions lors de la complétion de noms de fichier
Crée et ouvre le fichier dont le nom est sous le curseur
Inverse les raccourcis pour les marques, afin d'avoir par défaut aussi la position de la colonne
textobjects pour sélectionner des begin/end en latex
Remplacer foo par bar et bar par foo (marche aussi avec la sélection visuelle ou un intervalle).
[^] # Re: En vrac
Posté par lmg HS (site web personnel) . Évalué à 2.
Seul bémol cela ne gère pas les dépendances -- du moins la dernière fois que j'ai vérifié. À contrario de vim-addon-manager de Marc Weber.
PS: les deux omapping auraient dû être définis locaux au buffers (la)tex.
# colorscheme en 256 couleurs
Posté par Étienne . Évalué à 2.
Pour le colorscheme, j'utilise inkpot qui permet d'utiliser les 256 couleurs du terminal et est très agréable. Et dans le vimrc :
Étienne
[^] # Re: colorscheme en 256 couleurs
Posté par riri le breton (site web personnel) . Évalué à 1.
Je préfère xoria256 qui a des couleurs assez prononcées pour la syntaxe mais en restant doux. Voici la partie graphique de mon
vimrc
# Goto declaration or file
Posté par Ririsoft . Évalué à 2.
Vous êtes sur une variable ou une fonction et vous vous posez la question : "Mais où est-elle définit ? Comment est-elle initialisée ?" La commande magique "Goto Declaration" :
gd
cherche une variable définie localement en prioritégD
cherche une variable définie globalement en prioritéÇa marche même avec les langages non typés comme Python, dans ce cas ça vous amène à la première utilisation de la variable.
De même, vous êtes sur une instruction
#include "foobar.h"
ousource foobar.sh
et vous voulez ouvrir le fichier correspondant. Rien de plus simple, "Goto file" :gf
# plein de tricks suplémentaires =)
Posté par sputnick (site web personnel, Mastodon) . Évalué à 3.
Une commande bien pratique :
et encore mieux, depuis son poste, on ouvre un vimdiff sur deux fichiers "distants" :
Pour créer des fichiers HTML à partir des sources :
Une page HTML pour se créer ses couleurs persos :
http://www.sputnick-area.net/scripts/vim-color.html
Reselectionner en visual mode (après une opération réalisee)
gv
Tout re-indenter:
gg=G
Ouvrir un fichier dans deus moitiés horizontales :
vim -o fic1 fic2
Ouvrir un fichier dans deus moitiés horizontales :
vim -O fic1 fic2
Utiliser un squelette de code lorsqu'on ouvre un fichier d'un type donné pour l a première fois :
autocmd BufNewFile *.py 0r ~/.vim/skeleton.py
Quotter toutes les variables en bash (fonctionne aussi pour les langages qui mettent des $ devant les variables : php, perl...)
%s:\v"@<!\$(\k+):"$\1":gc
Le pliage de code : les folds : selectionnes avec shift+v des lignes puis :
zf # pour fermer
zo # pour ouvrir
Afficher les tampons
:display || :reg
Se déplacer au millieu de la fenetre en mode vertical
M
en mode horizontal
gm
Ouvrir tous les fichiers en arguments de vim dans des tabs
vim -p *fichiers # naviguer avec ctrl+PageNext ctrl+pageBefore (ou bien gt / gT )
Ouvrir un tab en plus :
:tabedit fic
Tout fermer
:qa
Créer des marques, des repères dans le code:
m[a-z] # choisir une lettre
retour à la marque choisie:
'[a-z]
liste des marques:
:marks
Inverser la casse en mode commande:
~
On ne peut pas mettre d'array dans le string...
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.