#1 Le 10/07/2007, à 20:36
- scholi
Liste de Commandes/Fonctions utile sous VIM
Bon, je ne vanterais pas ici vim (meilleur édtieur de l'univers pour ceux qui l'ignorent encore). Le but de se post n'est pas de faire un concours entre vim et emac, ni de faire un tutoriel (il en existe déjà pas mal j'imagine). Le but et de rassembler les commandes "spécial" (pas besoin de poster :w pour enregistrer).
Notation: en rouge la commande, en noir l'explication et en bleu des exemples
En mode insertion
CTRL-R = fonction Evalue la fonction donnée
CTRL-R = 6*7 va écrire 42
CTRL-R = strftime("%c") va inscrire l'heure (allez voir la doc de strftime pour une meilleur compréhension du %c,)
En mode commande (mode normal)
CTRL-A incrémente le chiffre sous le curseur
CTRL-X décrémente le chiffre sous le curseur
:edit rcp://host/file permet d'éditer un fichier distant (accessible normalement avec sftp)
xp s'est connu, mais pratique si on inverse souvent deux lettres. On pourrait même le "binder" avec une touche:
:set imap F5 <Esc>xp$a Lie la touche F5 (en mode insértion) avec l'échange des deux caractères (celui sous avec celui juste après le curseur) tout en revenant en mode insertion à la fin de la ligne.
V entre dans le mode visuel par ligne entière (plus besoin de tapper $ à chauqe fois)
% recherche la parenthèse ouvrante/fermante correspondante
:arge fichier1 fichier2 fichier3 ouvre les fichiers: fichier1, fichier2 et fichier3 tout en conservant ceux déjà ouvert.
gf edite le fichier dont le nom est sous le curseur
* Recherche l'occurrence suivante du nom sous le curseur
# Recherche l'occurrence précédente du nom sous le curseur
mode commande et insertion
CTRL-RIGHT avance d'un mot (comme avec w, sauf que cela fonctionne aussi en mode insertion)
CTRL-LEFT recule d'un mot (comme avec b)
divers
<cword> permet de désigner le mot sous le curseur.
:map <C-W> :!lynx http://fr.wikipedia.org/wiki/<cword><CR><CR>
Cherche sous wikipedia le mot placé sous le curseur (utiliser links à la place de lynx si vous n'avez pas ce dernier)
/\cTruc recherche sans tenir compte de la casse (truc,Truc,TRuc,etc)
:set background=dark adapte la coloration syntaxique pour un fond foncé
:set background=light adapte la coloration syntaxique pour un fond clair
:map F5 :w<CR>:!aspell -c %<CR>:e %<CR> exécute une correction orthographique (nécessite aspell) à chaque pression de F5
Lancer un lien dans une fenêtre firefox:
function! Browser ()
let line = getline (".")
let line = matchstr (line, "http://[^ ]*")
exec "!firefox ".line
endfunction
map <Leader>w :call Browser ()<CR>
Si ça ne marche pas, remplacer firefox par mozilla-firefox (et n'oubliez pas d'installer firefox )
Modifier la ligne de status (voir http://www.point-libre.org/~dimitri/blog/index.php/2006/08/01/138 pour plus de détails)
déjà pour l'afficher il faut tapper :set laststatus=2
:set statusline=%a\ %t%1*%m%*%10l/%2*%L%*%6c%V
Allons-y pour les détails :
* %a si vous avez ouvert plusieurs fichiers, affiche le numéro de buffer sous la forme (1 of 4) pour le premier des quatre fichiers ;
* %t pour le nom du fichier sans le chemin ;
* %1* ce qui suit est affiché suivant le schéma de coloration User1 jusqu'au prochain motif %* (idem pour %2* et User2) ;
* %m affiche [+] lorsque le fichier est modifié et [-] s'il n'est pas modifiable ;
* %10l le numéro de ligne courante occupant au minimum la place de 10 caractères (c'est juste pour la mise en forme) ;
* %L le nombre de lignes du fichier ;
* %6c le numéro de la colonne courante sur 6 caractères ;
* %V le numéro de colonne virtuelle (tient compte de la place réellement occupée par les multi-caractères comme la tabulation, l'espace insécable, etc.)
Le truc qui est monstre trop cool, rajouter l'heure courante dans la statusline! (attention, elle se met à jour seulement lorsqu'elle se rafréchit (si vous partez prendre un café, il faudra déplacer le curseur avant de connaître l'heure courante en revenant)
:set statusline=%a\ %t%1*%m%*%10l/%2*%L%*%6c%V\ \ %{strftime('%H:%M')}
ou encore
set laststatus=2
set statusline=%<%f%=\ [%1*%M%*%n%R%H]\ %-19(%3l,%02c%03V%)%O'%02b'\ \ %{strftime('%H:%M')}
hi User1 term=inverse,bold cterm=inverse,bold ctermfg=red
Dernière modification par scholi (Le 11/07/2007, à 17:00)
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Hors ligne
#2 Le 13/07/2007, à 00:02
- meuhlavache1
Re : Liste de Commandes/Fonctions utile sous VIM
merci
Hors ligne
#3 Le 13/07/2007, à 08:30
- scholi
Re : Liste de Commandes/Fonctions utile sous VIM
Si vous cherchez une commande spécial que vous ne trouvez pas ou si vous rêver d'un truc, postez le là, je vais essayer de vous aider!
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Hors ligne
#4 Le 13/07/2007, à 15:48
- abetsic
Re : Liste de Commandes/Fonctions utile sous VIM
Bonjour,
je cherche une fonction (ou un plugin) qui me permettrais de compléter mon code lorsque je suis dans un fichier c.
Par exemple j'écris ça :
#ifdef USE_SEMAPHORE
et automatiquement il écrit sur la ligne du dessous :
#endif //USE_SEMAPHORE
puis place le curseur entre ces deux lignes avec la bonne indentation.
J'ai réussi à faire quelque chose de similaire pour les accolades, parenthèses :
inoremap {<cr> {<cr>}<esc>O
inoremap (<space> ()<left>
Mais là ce que je cherche est un peu plus poussé et le inoremap donne quelque chose de bizarre quand je l'utilise sur une séquence de caractères.
Si tu as une idée sur comment faire ça, je suis preneur
Hors ligne
#5 Le 19/07/2007, à 19:15
- scholi
Re : Liste de Commandes/Fonctions utile sous VIM
désolé, je n'avais pas vu ton message avant... Je vais voir si j'arrive à qqch, mais là c'est qqch dont je ne vois pas du premier coup la solution (je ne suis pas encore (malheureusement) le vim master, seulement le vim disciple).
Mhmm un avant goût:
inoremap #ifdef #ifdef<space><esc>o#endif<esc>kA
si tu veux qu'il copie le nom pour rajouter // NOM après le #endif, il faudra passer par une fonction
Voila comment commencer (elle ne marche pas encore complètement)
function! Matchifdef(){
let line=getline(line("."))
if line == '^#ifdef \(\w\+\)$'
return "<esc>o#endif<esc>k<tab>"
}
Dernière modification par scholi (Le 19/07/2007, à 20:42)
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Hors ligne
#6 Le 23/07/2007, à 21:53
- ziouplaboum
Re : Liste de Commandes/Fonctions utile sous VIM
Hors ligne
#7 Le 24/07/2007, à 08:39
- scholi
Re : Liste de Commandes/Fonctions utile sous VIM
la classe Merci bcp!
Bon je vais apporter 2-3 trucs vite fait:
:1,10%!sort trie les 10 premières lignes
~ change la casse (majuscule/minuscule) des caractères
~w change la casse d'un mot
Si vous utilisez LaTeX, n'oubliez pas d'installer Vim-LaTeX, un plugin très efficace!
LA fonction très très utile que j'ai mis du temps à découvrir: CTRL-P complète le mot en court par le mot présent dans le document commençant par les mêmes lettres. (si plusieurs mots commencent par les mêmes lettres, faites défiler les choix en ré appuyant sur CTRL-P)
Dernière modification par scholi (Le 24/07/2007, à 08:55)
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Hors ligne
#8 Le 26/07/2007, à 11:52
- ziouplaboum
Re : Liste de Commandes/Fonctions utile sous VIM
Regardes l'origine du fichier:
viemu.com
Ou comment permettre à microsoft word, visual studio etc de se comporter comme vim !
Comme quoi même les idées les plus tordus trouvent prenneur et dévellopeur! Ça me fait penser à vimperator, une extension de firefox qui donne à firefox le comportement de vim... À tester c'est rigolo.
Hors ligne
#9 Le 26/07/2007, à 21:35
- Grand Hibou
Re : Liste de Commandes/Fonctions utile sous VIM
cool tout ça!
là il y a le tuto complet montré plus haut, en 7 leçons séparées :
http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
Dernière modification par Grand Hibou (Le 26/07/2007, à 21:41)
"Certains disent qu'en faisant marcher le cd de windows vista à l'envers on entendrait des voix vous commandant d'adorer Satan. Mais c'est rien ça. Quand vous le faites marcher à l'endroit, il vous installe windows vista!"
Hors ligne
#10 Le 17/09/2007, à 14:05
- scholi
Re : Liste de Commandes/Fonctions utile sous VIM
je viens de trouver le must! Je savais que SHIFT-INSERT permettait de coller le contenu du presse papier, mais je ne sais pas comment copier un bout de texte dans le presse-papier (du système et non de vim).
"*y
permet de copier la sélection dans le presse papier
"*p
permet de coller le contenu du presse-papier (analogue à CTRL-V sous windows et à SHIFT-INSERT sous Linux)
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Hors ligne
#11 Le 18/09/2007, à 00:30
- itsmokes
Re : Liste de Commandes/Fonctions utile sous VIM
Bonjour
à propos de vim, est ce qu'il y a une commande ou autre (.vimrc ?) permettant
d'ouvrir un fichier (vim filename.txt) directement en mode insertion ?
(le mode par défaut étant command)
Hors ligne
#12 Le 18/09/2007, à 09:13
- scholi
Re : Liste de Commandes/Fonctions utile sous VIM
il suffit de lancer evim au lieu de vim ou de lancer
vim -y
EDIT: ce site va bcp t'aider: http://vim.dindinx.net/traduit/html/starting.txt.php
Dernière modification par scholi (Le 18/09/2007, à 09:19)
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Hors ligne
#13 Le 18/09/2007, à 10:18
- pixi-pix
Re : Liste de Commandes/Fonctions utile sous VIM
emacs est tellement plus simple
Hors ligne
#14 Le 18/09/2007, à 13:23
- Spalax
Re : Liste de Commandes/Fonctions utile sous VIM
Don't feed the troll...
Hors ligne
#15 Le 18/09/2007, à 16:09
- scholi
Re : Liste de Commandes/Fonctions utile sous VIM
deux dernier message hors sujet. On ne va pas débattre si emacs ou vim est mieux. Chacun à son avis voila tout. Je dirais simplement pour clore le sujet que emacs est pour les geeks (car il permet de lire les mails, de joueur et plein d'autre trucs inutile dans un éditeur de texte). De plus il est plus abordable pour un noob que vim, mais se dernier reste bien plus complet et flexible (grâce aux scriptes).
EDIT: Merci de créer un autre sujet ailleurs si vous voulez argumenter, ce n'est vraiment pas le but de se poste
Dernière modification par scholi (Le 18/09/2007, à 16:10)
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Hors ligne
#16 Le 19/09/2007, à 01:41
- itsmokes
Re : Liste de Commandes/Fonctions utile sous VIM
merci scholi
mais j'ai oublié de préciser ouvrir vim en mode insertion directement
et non gvim. ( ben oui je préfère vim à gvim )
Parce que vim file (en mode cmd) puis maj+inser pour coller un buffer
et paf ça marche pas (ou mal des caractères disparaissent) parce que j'ai oublié de passer en insertion (touche inser) avant.
Bon enfin c'est un détail.
Dernière modification par itsmokes (Le 19/09/2007, à 02:43)
Hors ligne
#17 Le 19/09/2007, à 08:08
- scholi
Re : Liste de Commandes/Fonctions utile sous VIM
heu pas tout compris là...
vim -y pour avoir vim en mode insertion
et
evim pour avoir gvim en mode insertion
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Hors ligne
#18 Le 19/09/2007, à 08:38
- pixi-pix
Re : Liste de Commandes/Fonctions utile sous VIM
De plus il est plus abordable pour un noob que vim
je dirais que c'est pour les gens qui ne veulent que coder et pas jouer a qui se souvient du racouci de la mort qui tue avec "*$p_" pour faire un header...
Enfin je ne troll pas mais pas la peine d'insulter la communaute de emacs en disant que ne sont que des noobs...
Hors ligne
#19 Le 19/09/2007, à 21:22
- itsmokes
Re : Liste de Commandes/Fonctions utile sous VIM
heu pas tout compris là...
vim -y pour avoir vim en mode insertion
$ vim foo
J'obtiens vim en mode cmd et je reste en console. Pour passer en mode insertion
obligé de taper la touche Inser.
Ce que je souhaiterais, c'est m'affranchir de la dernière étape, Si je fais :
$ vim -y foo
j'obtiens vim en mode insert mais en interface graphique, ce que je ne souhaite pas.
ps : je tourne sous debian/gnome le comportement de la console est peut-être différent de celui d'Ubuntu ?
Dernière modification par itsmokes (Le 19/09/2007, à 21:43)
Hors ligne
#20 Le 19/09/2007, à 21:42
- scholi
Re : Liste de Commandes/Fonctions utile sous VIM
en effet... J'avais testé sous windows et ça fonctionnait en mode commande, mais sous mon ubuntu ça m'ouvre aussi gvim. En plus c'est nul, car ça ouvre vim en mode easy, c'est à dire que c'est impossible de taper des commandes avec <Esc>.
je vais voir si je trouve une solution simple...
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Hors ligne
#21 Le 19/09/2007, à 21:44
- itsmokes
Re : Liste de Commandes/Fonctions utile sous VIM
Tu as répondu pendant que j'éditais mais tu m'as compris
Hors ligne
#22 Le 19/09/2007, à 21:50
- scholi
Re : Liste de Commandes/Fonctions utile sous VIM
je crois que j'ai la solution:
vim +set\ im
ou pour ne pas se casser les *** a le tapper à chaque fois rajouter "set im" dans le vimrc
echo set im >> ~/.vimrc
EDIT: Ah oui est bien sur pour passer en mode commande il ne faut plus faire <Esc> mais CTRL-O
C'est ça la beauté de vim, on peut TOUT faire. Sauf le café (ça c'est le point négatif)
Dernière modification par scholi (Le 19/09/2007, à 21:56)
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Hors ligne
#23 Le 19/09/2007, à 22:17
- scholi
Re : Liste de Commandes/Fonctions utile sous VIM
sinon pour enter en mode insertion tout en gardant un vrai vim (et pas un vim easy), il suffit de rajouter uen ligne contenant la commande start dans le .vimrc:
echo start >> ~/.vimrc
PS: vérifie que tu as bien viré le "set im" du .vimrc si tu as suivis mon post précédent
Je pense que c'est ce que tu cherchais, car vim se comporte normalement. <Esc> fonctionne très bien et tu n'as pas besoin de faire de CTRL-O à la place
Dernière modification par scholi (Le 19/09/2007, à 22:32)
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Hors ligne
#24 Le 19/09/2007, à 23:00
- itsmokes
Re : Liste de Commandes/Fonctions utile sous VIM
Super.
tout bonnement excellent
merci beaucoup
Hors ligne
#25 Le 21/09/2007, à 10:42
- CasseTaTele
Re : Liste de Commandes/Fonctions utile sous VIM
Salut, merci pour ces commandes,
je rajouterai
[ctrl]+n et [ctrl]+p pour l'auto-complétion
sinon comment on fait pour copier un bout de texte et en faire plusieurs copies ?
pour le moment, je sélectionne le texte à copier puis je fais 'y' (en mode commande) pour copier , et 'p' pour coller mais en faisant 'p' le tampon se vide et je peux pas coller plusieurs fois le meme texte...
Hors ligne