Outils pour utilisateurs

Outils du site


Panneau latéral

linux:vim (lu 56937 fois)

Ceci est une ancienne révision du document !


VIM

Vim est pour moi le meilleur éditeur de texte tout du moins en mode texte.

Voici juste quelques améliorations pour nous rendre la vie plus facile.

Utilisation courante

Ouvrir un fichier à une ligne spécifique (ex: ligne 64)

vim fichier.txt +64

Ouvrir plusieurs fichiers en même temps

vim -o fichier1 fichier2 fichier3

Raccourcis

  • G va à la fin du fichier
  • gg va au début du fichier
  • 123gg va à la ligne 123
  • dd efface la ligne courante
  • 123dd efface les 123 lignes à partir de la ligne courante
  • yy copie la ligne courante
  • 123yy copie les 123 lignes à partir de la ligne courante
  • p colle les lignes copiés sous la ligne courante

Sélection

  • v passe en mode visuel qui permet de faire une sélection de texte
  • Maj + v permet une sélection par ligne
  • Ctrl + v permet une sélection par bloc (ou vertical)

après votre sélection faite

  • x ou d supprime la sélection
  • s supprime et passe en mode insertion
  • un appuie sur : fait apparaître :'<,’> représentant votre sélection. Vous pouvez ensuite faire un remplacement de texte en rajoutant s#texte à remplacer#texte de remplacement#g

Recherche

  • / recherche en avant
  • ? recherche en arrière
  • * recherche en avant du mot entier sous le curseur
  • # recherche en avant du mot entier sous le curseur
  • g* (et g#) recherche en avant (en arrière) du mot sous le curseur en tant que string
  • g* permet de chercher un nom de variable quelle que soit son préfixe (, . ou $), en PHP par exemple.

Multi fenêtrage

  • Toutes les commandes suivantes commencent par Ctrl+w (w pour window)
    • n crée un split horizontal
    • v crée un split vertical
    • w ou les flèches permettent de naviguer entre les fenêtres
    • < ou > permet d’élargir ou de rétrécir horizontalement une fenêtre
    • - ou + permet d’élargir ou de rétrécir verticalement une fenêtre
    • = permet d’égaliser les tailles des fenêtres ouvertent
  • :split fichier.txt ouvre fichier.txt en split horizontal
  • :vsplit fichier.txt ouvre fichier.txt en split vertical

Commande

A taper dans vim en tapant :

Remplacer le mot TOTO par TATA sur une ligne pour la 1ère occurrence rencontrée

:s/TOTO/TATA

Sur toutes les occurrences de la ligne

:s/TOTO/TATA/g

Sur toutes les occurrences de la page

:%s/TOTO/TATA/g
:%s#original#remplacement#flags

Remplace automatiquement le motif «original» par «replacement». % signifie qu’on travaille sur tout le fichier. Les flags sont :

  • g : remplacer toutes les occurrences du motif s’il apparaît plusieurs fois par ligne
  • i : ne pas être sensible à la casse
  • c : demande confirmation à chaque remplacement (mode interactif)
  • On peut remplacer le motif seulement sur une sélection de plusieurs lignes données (avec <Maj-v>). L’appui sur : fait apparaître :'<,’> sur la ligne de commande, cela désigne l’intervalle sélectionné. Cela donne :

:'<,’>s#original#remplacement#flags

Commenter quelques lignes. Faites une sélection par bloc du 1er caractère de chaque ligne avec Ctrl + v, ensuite tapez Maj + i, tapez votre caractère à placer (ex: , #, …) puis tapez la touche Esc 2 fois de suites et magie… Mettre à jour le fichier si il a été modifié entre temps :e Mettre en surbrilliance le résultat d’une recherche :set hlsearch Pour désactiver :nohlsearch Pour les copier/coller qui partent en vrille :set paste Coloration syntaxique :syntax on Afficher les numéros de lignes :set nu Règles de tabulations Tabulations de 2 espaces :set expandtab :set shiftwidth=4 :set softtabstop=4 :set tabstop=4 Ou en abrégé inclus à la fin du fichier en commentaire (modeline) : vim: ts=4 sts=4 sw=4 et Alignement Pour rendre le code plus beau en alignant les opérateurs, exemple : <code php>array( ‘a’ ⇒ ‘A’, ‘salut’ ⇒ ‘SALUT’, ‘très long’ ⇒ ‘TRÈS LONG’, )</code> Sélectionner les lignes avec avec <S-v> puis taper : :'<,’>Align⇒ <code php>array( ‘a’ ⇒ ‘A’, ‘salut’ ⇒ ‘SALUT’, ‘très long’ ⇒ ‘TRÈS LONG’, )</code> ===== Fichier de conf exemple ===== Finalement, j’ai trouvé un fichier de config qui déchire bien :) <code vim .vimrc> ” /etc/vim/vimrc ou ~/.vimrc “ Fichier de configuration de Vim ” Formation Debian GNU/Linux par Alexis de Lattre “ http://formation-debian.via.ecp.fr/ ” ':help options.txt’ ou ':help nom_du_paramètre’ dans Vim “ pour avoir de l’aide sur les paramètres de ce fichier de configuration ” Avertissement par flash (visual bell) plutôt que par beep set vb “ Active la coloration syntaxique syntax on ” Définit le jeu de couleurs utilisé “ Les jeux de couleur disponibles sont les fichiers avec l’extension .vim ” dans le répertoire /usr/share/vim/vimcurrent/colors/ colorscheme delek “ Affiche la position du curseur ‘ligne,colonne’ set ruler ” Affiche une barre de status en bas de l’écran set laststatus=2 “ Contenu de la barre de status set statusline=%<%f%h%m%r%=%l,%c\ %P ” Largeur maxi du texte inséré “ ‘72’ permet de wrapper automatiquement à 72 caractères ” ‘0’ désactive la fonction set textwidth=0 “ Wrappe à 72 caractères avec la touche '#' map # {v}! par 72 ” Wrappe et justifie à 72 caractères avec la touche '@' map @ {v}! par 72j “ Ne pas assurer la compatibilité avec l’ancien Vi set nocompatible ” Nombre de colonnes (inutile, voire gênant) “set columns=80 ” Nombre de commandes dans l’historique set history=50 “ Options du fichier ~/.viminfo set viminfo=‘20,\”50 “ Active la touche Backspace set backspace=2 ” Autorise le passage d’une ligne à l’autre avec les flèches gauche et droite set whichwrap=<,>,[,] “ Garde toujours une ligne visible à l’écran au dessus du curseur set scrolloff=1 ” Affiche les commandes dans la barre de status set showcmd “ Affiche la paire de parenthèses set showmatch ” Essaye de garder le curseur dans la même colonne quand on change de ligne set nostartofline “ Option de la complétion automatique set wildmode=list:full ” Par défaut, ne garde pas l’indentation de la ligne précédente “ quand on commence une nouvelle ligne set noautoindent ” Options d’indentation pour un fichier C set cinoptions=(0 “ xterm-debian est un terminal couleur if &term =~ “xterm-debian” || &term =~ “xterm-xfree86” set t_Co=16 set t_Sf=^[[3%dm set t_Sb=^[[4%dm endif ” Quand on fait de la programmation, on veut qu’il n’y ait jamais de “ vraies tabulations insérées mais seulement 4 espaces autocmd BufNewfile,BufRead *.c set expandtab autocmd BufNewfile,BufRead *.c set tabstop=4 autocmd BufNewfile,BufRead *.h set expandtab autocmd BufNewfile,BufRead *.h set tabstop=4 autocmd BufNewfile,BufRead *.cpp set expandtab autocmd BufNewfile,BufRead *.cpp set tabstop=4 ” Décommentez les 2 lignes suivantes si vous voulez avoir les tabulations et “ les espaces marqués en caractères bleus “set list “set listchars=tab:>-,trail:- ” Les recherches ne sont pas ‘case sensitives’ set ignorecase ” Le découpage des folders se base sur l’indentation set foldmethod=indent ” 12 niveaux d’indentation par défaut pour les folders set foldlevel=12 “ Police de caractère pour Gvim qui supporte le symbole euro set guifont=-misc-fixed-medium-r-semicondensed-*-*-111-75-75-c-*-iso8859-15 </code> ===== Couleurs ===== Différents thèmes de couleurs sont disponibles par défaut, on peut les choisir en tapant colorscheme puis la touche TAB pour faire défiler les différents thèmes disponibles. Par exemple : :colorscheme delek D’autre thèmes sont disponibles sur le Net, il suffit de les télécharger et de les placer dans /usr/share/vim/vimcurrent/colors/. ===== Coloriser les fichiers de log ===== vim stocke tous ses fichiers de syntax dans /usr/share/vim/vim73/syntax 73 est le numéro de version, il peut donc évoluer. Chaque fichier de syntax permet de définir une colorisation syntaxique. Pour les log, il y a le fichier messages.vim J’ai pu remarquer que en ouvrant le fichier /var/log/messages on obtient une colorisation syntaxique très pratique et que bizarrement en ouvrant /var/log/syslog il n’y a aucune colorisation. Nous allons comprendre pourquoi, grace au fichier /usr/share/vim/vim73/filetype.vim qui permet de définir pour un type de fichier ouvert la syntax à appliquer. Dans notre cas, je me retrouve avec ceci ” Messages au BufNewFile,BufRead /var/log/messages,/var/log/messages.*[0-9] setf messages Qui dit clairement que si j’ouvre le fichier /var/log/messages ou tout autre fichier /var/log/messages. suivi d’un numéro, on applique la colorisation syntaxique défini par le fichier syntax/messages.vim Afin de prendre en compte la plupart des fichiers de log connu, nous allons modifier cette ligne comme suit “ Messages (logs mostly) au BufNewFile,BufRead */log/{auth,cron,daemon,debug,kern,lpr,mail,messages,news/news,syslog,user}{,.log,.err,.info,.warn,.crit,.notice}{,.[0-9]*,-[0-9]*} setf messages Maintenant vous aurez moins mal aux yeux en consultant vos logs ;) ===== Supprimer plusieurs lignes contenant … ===== Suppression des lignes contenant un caractére dans un fichier avec VIM :g/.*com*.*/d Suppression Ligne vide dans un fichier avec VIM :g/^$/d ===== Tweaker vim ===== http://blog.kewah.com/2014/from-sublime-text-to-vim/

linux/vim.1422525755.txt.gz · Dernière modification: 29-01-2015 11:02 de edmc73