Vim
Vim n'est pas UN éditeur de texte, c'est LE éditeur de texte. Je ne tomberai pas dans le piège grossier du troll Vim/Emacs, puisqu'il est clair Vim est mieux. Je vais tâcher de regrouper sur cette page toutes les infos relatives à l'utilisation de Vim en Bépo.
Ergonomie
Pourquoi Vim ?
Vim a été conçu spécifiquement pour la prévention des TMS :
- il n'utilise que très peu de raccourcis en Ctrl+{}, toutes les commandes se faisant en position « dactylo », c'est-à-dire avec les doigts proches de la position de repos ;
- les déplacements du curseur peuvent (doivent) se faire sans les flèches : [HJKL] déplacent le curseur case à case, [WEB] déplacent le curseur mot à mot (équivalent de Ctrl+flèche) ;
- l'utilisation des différents modes de Vim (normal, insertion, visualisation) permet de réduire très significativement le nombre de frappes effectuées dans la journée.
Le prix à payer est un temps d'apprentissage assez long — plus long que sur n'importe quel autre éditeur de texte.
Là où le bât blesse, c'est que Vim est conçu pour un clavier Qwerty. Il convient donc de reconfigurer Vim pour l'utiliser en Bépo.
Tutoriels et ressources Vim en français
TODO : ajouter des liens vers des tutoriels Vim.
Objectif de cette page
Proposer un fichier ~/.vimrc par défaut aux utilisateurs Bépo :
- Le fait que les touches [HJKL] correspondent à {CTRS} complique singulièrement l'utilisation de Vim aux Bépoïstes, même pour les Vimistes convaincus.
- Vim n'est pas utilisable en l'état avec le Bépo, contrairement à l'Azerty ou même le Dvorak-US, essentiellement parce que les touches {J} et {K} ne sont pas côte-à-côte.
Il serait donc appréciable de s'entendre sur un fichier ~/.vimrc basique avant de le mettre en ligne sur le Wiki.
Une fois ce fichier ~/.vimrc défini, on pourra (devra) constituer une cheat sheet correspondant à cette configuration Bépo, dans le genre de celle-ci : http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
Reconfiguration partielle des touches
On ne cherche ici qu'à implémenter le déplacement en [HJKL] avec le moins d'impact possible sur le reste des commandes Vim.
Aide-mémoire
Fichier ~/.vimrc
" [HJKL] -> {CTSR} " ———————————————— " {cr} = « gauche / droite » noremap c h noremap r l " {ts} = « haut / bas » noremap t j noremap s k " {CR} = « haut / bas de l'écran » noremap C H noremap R L " {TS} = « joindre / aide » noremap T J noremap S K " {HJKL} <- [CTSR] " ———————————————— " {J} = « Jusqu'à » (j = suivant, J = précédant) noremap j t noremap J T " {L} = « Change » (h = bloc, H = jusqu'à la fin de ligne) noremap l c noremap L C " {H} = « Remplace » (l = caractère, L = texte) noremap h r noremap H R " {K} = « Supprime et insère » (k = caractère, K = ligne) noremap k s noremap K S " {W} -> [É] " —————————— " Le placement de {W} est catastrophique, mais ça se soigne ;-) noremap é w noremap É W " Pour faciliter les manipulations de fenêtres, on utilise {W} comme un Ctrl+W : noremap W <C-w>
Ces lignes sont à ajouter au fichier ~/.vimrc. Reste à voir à l'usage si ça suffit pour utiliser Vim confortablement, à suivre…
Problème avec [gj] et [gk]
Avec le fichier de configuration proposé en l'état, les commandes [gj] et [gk] ne fonctionnent pas ; cela est dû au fait que [gt] et [gT] sont déjà affectées à la sélection d'onglets. Les commandes [gj] et [gk] sont utilisées respectivement pour se déplacer ver le bas et vers le haut à l'intérieur d'une ligne, ce qui peut s'avérer nécessaire quand on utilise Vim pour des tâches littéraires.
Pour implémenter [gj] et [gk] il est nécessaire d'utiliser une touche supplémentaire. Voilà trois possibilités de correction.
- Utiliser g{Tab} pour changer d'onglet
On ajoute ces lignes à la fin du fichier ~/.vimrc :
noremap gt gj noremap gs gk noremap g<Tab> gt noremap g<S-Tab> gT
- Utiliser {gc} et {gr} pour changer d'onglet
C'est quasiment la même chose, mais peut-être un peu plus confortable :
noremap gt gj noremap gs gk noremap gc gT noremap gr gt
- Utiliser {Ç} et modifier le comportement de {ST}
En Bépo, les commandes gj et surtout gk (bas / haut) sont difficiles à faire. On peut contourner la difficulté en utilisant :
- {T} et {S} pour [j] et [k]
- {t} et {s} pour [gj] et [gk]
- {ç} pour J (joindre deux lignes) et {Ç} pour K (aide)
La section [HJKL] devient alors :
" {ctsr} = « gauche / bas / haut / droite » noremap c h noremap t gj noremap s gk noremap r l " {CR} = « haut / bas de l'écran » noremap C H noremap R L " {TS} = « ligne suivante / précédente » noremap T j noremap S k " Effet domino : J et K manquent à l'appel noremap ç J noremap Ç K
C'est surtout pour un usage littéraire de Vim que cette variante serait appréciable, les longues lignes de texte étant alors plus faciles à manipuler.
Problème avec :Ex
Ex est un plugin d'exploration de fichiers inclus par défaut dans Vim. Malheureusement, {t} et {s} ne fonctionnent pas comme « bas / haut » avec cet explorateur, car les mappings d'Ex ne sont pas définis dans ~/.vimrc. Deux solutions :
- utiliser les flèches plutôt que {CTSR} avec Ex — voire même, utiliser la souris (horreur !)
- redéfinir les commandes d'Ex dans le fichier ~/.vim/after/ftplugin/netrw.vim comme suit :
nunmap <buffer> t nunmap <buffer> s nunmap <buffer> k nnoremap <buffer> t j nnoremap <buffer> s k nnoremap <buffer> k s
Avec ce fichier, {t}{s} fonctionnent désormais comme bas/haut et {k} permet de changer le type de tri (par nom, par date, etc.). Le seul défaut restant est que l'aide affichée par Ex ne correspond plus à la réalité.
Remarques
Les touches {Ê}{È}{À}{Ç} sont inutilisées par Vim, et peuvent donc être affectées librement. Par exemple, on peut faire de {È} une touche « début de ligne » :
noremap é ^ noremap É 0
À compléter.
Reconfiguration totale des touches
Une option radicale consisterait à reconfigurer toutes les touches en mode normal, afin qu'elles correspondent aux labels du clavier Azerty. On pourrait même générer un tel fichier automatiquement avec les outils du projet Bépo si suffisamment d'utilisateurs étaient intéressés…
Bépo/Qwerty
C'est à priori la meilleure solution du point de vue de l'ergonomie. On peut reprendre les cheat sheets classiques en l'état.
À faire.
Bépo/Azerty
Cette variante permettrait de se référer aux labels des touches du clavier Azerty pour les commandes Vim.
À faire.
Autres options utiles
À ajouter dans le fichier ~/.vimrc.
Appliquer automatiquement les modifications de ~/.vimrc
La première chose à faire pour jouer avec ~/.vimrc !
if has("autocmd") autocmd! bufwritepost .vimrc source ~/.vimrc endif
Voir les espaces insécables
Bien entendu, on peut changer la couleur.
" colore les nbsp highlight NbSp ctermbg=lightgrey guibg=lightred match NbSp /\%xa0/
[Esc] plus accessible
Vim fait un grand usage de la touche Escape qui se trouve loin. On peut modifier le comportement de Tab pour qu’il serves de touche [Esc]. On garde un Tab en Maj+Tab. Attention, à ne pas utiliser dans Vimperator, on y a besoin du Tab…
" Tab fait un Esc, Maj+Tab fait un Tab inoremap <Tab> <Esc> inoremap <S-Tab> <Tab>
[PgUp] / [PgDn] plus accessibles
Vim utilise par défaut Ctrl+[B] et Ctrl+[F] pour aller à la page précédente / suivante. Ce n'est déjà pas la panacée en Qwerty mais en Bépo c'est l'horreur, ces deux touches étant à l'exact opposé l'une de l'autre. Pour y remédier, on peut utiliser les touches [BackSpace] et [Espace], c'est bien plus confortable :
noremap <BS> <PageUp> noremap <Space> <PageDown>
Tant qu'on y est, on peut aussi utiliser [Entrée] pour centrer la page sur le curseur (ne fonctionne pas avec Vimperator) :
noremap <Return> zz
Autres applications « à la Vim »
Bon nombre d'applications courantes utilisent les touches de déplacement de Vim. Certaines applications comme vifm ne sont pas configurables, on n'en parlera donc pas ici.
Vimperator
Cette extension Firefox permet de piloter confortablement Firefox au clavier. Elle peut partager une partie de son fichier de configuration avec Vim, et même utiliser Vim comme éditeur.
Voir http://vimperator.cutup.org/index.php?title=Configuration pour la configuration de Vimperator.
Voir également GViMail pour utiliser Vimperator avec Gmail.
À compléter.
Emacs
Emacs dispose d'un mode Vim qui le rend utilisable permet de déplacer le curseur sans bouger les mains (pas testé ;-)). Par contre, Vim ne dispose pas d'un mode Emacs, on se demande bien pourquoi. :-D
À compléter par un utilisateur Emacs (Gaëtan : ping !).
Note : OpenKomodo dispose également d'un mode Vim. Par ailleurs il y a un plugin Vim pour Visual Studio.
Outils du shell
- man, more, less… : http://unixhelp.ed.ac.uk/CGI/man-cgi?lesskey
- aptitude : http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s04s02.html
- mutt
À compléter.
Gestionnaires de fenêtres en mosaïque
Wmii, Dwm, Xmonad, Awesome… ces gestionnaires de fenêtres sont des alternatives intéressantes pour ceux qui veulent se passer de la souris.
À compléter.