Détails divers dans Vim
-
Par défaut, sur des fichiers avec de trèèèèèès longues lignes, la coloration syntaxique s'arrête. C'est parce que la valeur de
synmaxcol est de 3000 caractères pour préserver les performances. S'il faut vraiment outrepasser cette limite, c'est possible dans le buffer courant avec :set synmaxcol=6000 par exemple.
-
Lire des logs Apache en couleur : installer ce fichier de syntaxe dans ~/.vim/syntax/ et ajouter dans ~/.vimrc cette ligne :
autocmd BufRead *access*log*,*hosting.ovh.net*.log setf httplog (adapter les noms de fichiers, évidemment)
(plus simple que lnav)
-
Passer d'une sélection par caractères (v) à une sélection par lignes : V (v majuscule) tout simplement. Et inversement.
Utile pour sélectionner un bloc de lignes du genre if (…) { … } quand on a le curseur dans le bloc, en incluant le if : va}V
-
Faire en sorte que _ soit considéré comme un caractère délimiteur de mots (word boundary) et qu'il ne fasse plus partie du mot :
set iskeyword-=_
Ce qui permet d'utiliser par exemple le déplacement par e dans "ceci_est_un_exemple" pour aller à la fin de "ceci", puis "est", puis "un", etc.
-
Lister toutes les commandes (tous les "raccourcis clavier") avec l'origine (qui crée ce "raccourci") :
:verbose map (La première colonne, c'est le mode) ou pour un seul mode :nmap (mode normal) :imap (mode insertion) etc.
-
Faire un diff avec vimdiff ou gvimdiff en ignorant les changements d'espaces :
vimdiff -c 'set diffopt+=iwhite' fichierA fichierB dans le terminal
-
Afficher les numéros de lignes sur le bord gauche dans Vim, uniquement pour du code :
mettre dans ~/.vimrc
autocmd BufEnter *.php,*.tpl,*.sh,*.py,*.java,*.html,*.css,*.scss,*.js,*.twig setlocal number
-
Et afficher ces numéros en gris :
highlight LineNr ctermfg=grey
-
Donner un fond de couleur à une fenêtre particulière pour la distinguer :
(ça peut être une version précédente dans Git, un buffer readonly ou toute autre chose…)
hi ColorColumn ctermbg=253 (gris clair, par exemple)
puis
setlocal wincolor=ColorColumn
C'est un hack puisqu'on utilise un groupe highlight pour autre chose mais comme il sert peut, ça passe…
-
Ne pas copier les numéros de ligne en sélectionnant avec la souris :
:set mouse+=a
-
On peut avoir une modeline dans un fichier HTML
<!-- vim: set nowrap: -->
(il faut avoir set modeline dans son .vimrc ou la conf par défaut)
-
Changer des valeurs telles que
true en false ou yes en no en une combinaison de touches : utiliser l'extension CtrlXA qui étend les possibilités de Ctrl a et Ctrl x au-delà d'incrémenter et décrémenter des chiffres (ou des listes de chiffres, d'ailleurs, par g Ctrl a)
-
Ouvrir un terminal dans une fenêtre de Vim :
:term ou :terminal
Passer du mode shell au mode normal de Vim pour pouvoir copier-coller dans Vim : Ctrl w N (N majuscule, càd Maj n)
Revenir dans le shell : i
Coller dans le shell : Ctrl w " suivi du registre ! (donc après un simple yank il faut encore ajouter ") (risque de confusion avec Ctrl r ")
-
Quand tu fais
vim foo/bar/baz alors que le répertoire n'existe pas, et que tu t'en aperçois au moment de sauver... :!mkdir -vp %:h (mouais, pas facile à retenir)
-
Futile mais amusant, insérer du texte en couleur dans Vim avec les codes couleurs ANSI : saisir Ctrl v puis Échap puis [ puis le code couleur dans cette liste, par exemple 32 pour vert, puis m puis le texte puis, pour arrêter la couleur, Ctrl v puis Échap puis [0m. Au final, ça doit ressembler à
^[[32mCoucou^[[0m. Sauver le fichier, faire cat fichier et le texte doit s'afficher en vert. Pour voir la couleur dans Vim directement, installer le script AnsiEsc.
-
Par défaut, la fonction "omnicomplete" pour HTML met les balises en majuscules. Du style
<bloCtrl-x Ctrl-o produit <BLOCKQUOTE>. Ça fait très 1995 😅 Pour éviter ça, il faut copier le fichier $VIMRUNTIME/autoload/htmlcomplete.vim dans ~/.vim/autoload/htmlcomplete.vim et remplacer l'appel à toupper par tolower et le tour est joué.