Dans la série : on en découvre tous les jours…
Entrer des caractères spéciaux
Pour entrer des caractères comme ^X
, il faut taper ^V^X
.
Commencer par ^V
permet aussi d’entrer des caractères à partir de leur code.
Un extrait
du wiki de vim
à ce sujet :
- By decimal value:
^Vnnn
(with 000 <= nnn <= 255) - By octal value:
^VOnnn
or^Vonnn
(with 000 <= nnn <= 377) - By hex value:
^VXnn
or^Vxnn
(with 00 <= nn <= FF) - By hex value for BMP Unicode codepoints:
^Vunnnn
(with 0000 <= nnnn <= FFFF) . - By hex value for any Unicode codepoint:
^VUnnnnnnnn
(with 00000000 <= nnnnnnnn <= 7FFFFFFF)
Pour entrer des caractères spéciaux comme les symboles mathématiques,
on peut utiliser les digraph
: ça consiste à taper ^K
, suivi de deux
caractères.
Par exemple :
^K=>
donne ⇒^K=<
donne ≤^K(-
donne ∈^K?=
donne ≃^KFA
donne ∀^KSE
donne §^KNS
donne un espace insécable
On peut voir la table avec :
:help digraph-table
Les digraphes des caractères grecs et des symboles mathématiques les plus courant sont résumés ici.
Pour rechercher des caractères UTF-8, voir unicode-table ou fileformat.info. Ou encore mieux, on peut les dessiner sur mausr pour essayer de lui faire deviner ce qu’on cherche !
Mode visuel
Nombre de ligne
Si on met l’option showcmd
(sc
) un nombre correspondant à la taille de la
zone sélectionnée est affiché à la fin de la ligne de commande. Très pratique
pour connaître le nombre de lignes sélectionnées par exemple.
Plus ponctuellement, ou pour avoir plus d’information,
on peut aussi utiliser g CTRL-g
. On obtient avoir une information du genre :
Selected 4 of 1116 Lines; 36 of 10718 Words; 244 of 77026 Bytes
ou avec une autre configuration :
5 sur 283 Lignes ; 28 sur 1155 Mots ; 189 sur 7975 Caractères ; 189 sur 8048 octets sélectionnés
Re-sélectionner
Quand on applique une commande (une substitution par exemple) sur une sélection,
celle-ci se désélectionne.
Pour la sélectionner à nouveau, il suffit de faire gv
.
Mettre des options pour vim dans un fichier
J’utilise principalement ça dans mes fichiers
txt2tags
pour indiquer à vim
la langue pour la correction orthographique.
A la fin du fichier, j’ajoute :
%============================================
%<!-- vim: spell spelllang=fr
-->
%============================================
Pour plus d’information :
:help modeline
(ou chercher modeline
dans la page d’aide sur les options).
Recherche
* et
*
pour chercher le mot sous le curseur et#
pour chercher à l’envers ;g*
similaire à*
mais même si la chaîne n’apparaît pas comme un mot (g#
) ;
A la suite d’une telle recherche, si on veut l’étendre à une recherche case-insensitive, on peut juste :
- se mettre en mode recherche avec
/
, - puis, rappeler la dernière recherche avec la flèche vers le haut,
- ajouter
\c
(voir ci-dessous), - et enfin
<CR>
.
Casse (majuscules/minuscules)
La propriété booléenne ignorecase
permet d’ignorer la casse dans les recherches.
Mais si on veut juste l’ignorer dans une recherche particulière,
il n’est pas utile de modifier la propriété,
il suffit d’utiliser \c
n’importe où dans la chaîne à chercher.
Inversement, si ignorecase
est positionnée,
on peut utiliser \C
dans une recherche pour tenir compte de la casse.
Passer du .ml au .mli et inversement
Il est très pratique d’avoir une touche (ici ,s
) qui permet de passer
du fichier .ml
au fichier .mli
en inversement
quand on édite du ocaml.
J’ai adapté ce truc en partant de la version de
Stefano Zacchiroli paru dans
Caml Weekly News, for the week of 11 to 18 November, 2003,
mais j’ai ôté la partie Python qui ne semble pas indispensable :
if !exists("g:did_ocaml_switch")
let g:did_ocaml_switch = 1
fun OCaml_switch()
if (match(bufname(""), "\\.mli$") >= 0)
let fname = substitute(bufname(""), "\\.mli$", ".ml", "")
exec "arge " . fname
elseif (match(bufname(""), "\\.ml$") >= 0)
let fname = bufname("") . "i"
exec "arge " . fname
endif
endfun
map ,s :call OCaml_switch()
endif
Plugins
- Pathogen est un gestionnaire de plugins ;
- lightline permet de configurer une jolie ligne d'état ;
- syntastic détecte les erreurs de compilation lors de la sauvegarde d’un fichier ;
- le plugin AnsiEsc permet de voir un fichier texte contenant du formatage (couleurs…).
Autres astuces
q:
pour voir l’historique des commandes. Permet de les modifier, de les rejouer, etc.k
,K
,t
,T
: déplacement vers une lettre, et;
pour répéter la même recherche.- le caractère
@
permet de refaire la dernière commande:
(peut être précédé d’un nombre pour spécifier le nombre de fois). - en mode insertion, on peut utiliser
^R
pour insérer ce qui est dans le registre courant (dernière chose coupée par exemple). - le registre courant s’appelle 0 (ou
"
), mais il y a une pile LIFO de 1 à 9, si bien que quand on faitcw
, on place le mot coupé dans le registre 0, –mais ce qui y était devient le registre 1– (<- non pas tout de suite) et donc si on faitcw^R0
on remplace le mot courant par ce qu’il y avait dans le registre courant avant. /toto/e
recherchetoto
et se place à la fin,c//e
: si on fait ça pendant une recherche sur/toto
, c’est comme uncw
sauf que ça ne remplace quetoto
, et non pas jusqu'à la fin du mot.- quand on a une longue ligne qui est repliée sur plusieurs lignes,
les déplacements peuvent être fastidieux, mais
gj
etgk
(oug
+ flèche) permettent de se déplacer verticalement dans la ligne. ~
permet d’inverser la casse d’une lettre, cela permet donc de passer de minuscule à majuscule et inversement. Pour mettre en majuscules, c’estU
, etu
pour mettre en minuscules. On put aussi utiliser :g~
//{déplacement}// comme par exempleg~w
inverse la casse jusqu'à la fin du mot ;gU
//{déplacement}// comme par exemplegU$
met en majuscule jusqu'à la fin de la ligne ;gu
//{déplacement}// comme par exemplegut.
met en minuscules jusqu’au caractère ‘.’ suivant.
Voir aussi :
- Emoticônes et autre binettes
- Expressions régulières (vim et autres)
- Vim et la sélection d'objet
- Jenkins : premiers pas
- Vim et le greffon syntastic
- Vim et la correction orthographique
- Vim en client/serveur
- Ocamlmerlin sous vim
- Les outils que j'utilise
- Perl pour faire des scripts efficaces
- Trac : un outil de gestion de projet
- Mercurial : encore un gestionnaire de version
- Linux : ramassis d'astuces diverses
- COQ : un assistant de preuve formelle
- SVN : gestion de version
- Make : aide mémoire
- Afficher un pourcentage dans une page HTML
- VNC : Virtual Network Computing
- Git : déménagement d'un dépôt
- Quelques liens au sujet de l'analyse statique
- Ocaml: mon principal langage de développement
- Disque dur externe
- Les profiles dans Firefox
- Cryptographie et mail sous Android
- Quelques liens au sujet du C
- Git rebase : pour diviser un commit