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
Vim n'utilise que très peu de raccourcis en Ctrl+{} et est conçu pour faire toutes les opérations en mode « dactylo », c'est-à-dire avec les doigts proches de la position de repos. L'objectif est la prévention des TMS ; le prix à payer est un temps d'apprentissage assez long.
Parmi les fonctionnalités de base qui tuent, il y a le déplacement du curseur avec HJKL (équivalent des flèches) ou WEB pour le mot-à-mot (équivalent de Ctrl+flèche). 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.
TODO : ajouter des liens vers des tutoriels Vim.
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. Reste à voir à l'usage si ça suffit pour utiliser Vim confortablement, à suivre…
Ces lignes sont à ajouter au fichier ~/.vimrc.
[HJKL] <-> {CTSR}, premier essai
On se contente ici d'échanger les touches deux à deux : c'est le strict minimum pour utiliser Vim, et ces touches sont tellement standard que la question de leur positionnement ne se pose même pas.
" {CTSR} = « gauche / bas / haut / droite » noremap c h noremap C H noremap t j noremap T J noremap s k noremap S K noremap r l noremap R L " {H} = « Change » (h = bloc, H = jusqu'à la fin de ligne) noremap h c noremap H C " {K} = « Suppr. » (k = caractère, K = ligne) noremap k s noremap K S " {L} = « Remplace » (l = caractère, L = texte) noremap l r noremap L R " {J} = « Till » / « Jusqu'à » noremap j t noremap J T " Les raccourcis {gt} et {gs} (= [gj] et [gk]) ne fonctionnent pas, voilà une correction : noremap gt gj noremap gs gk " Le placement de {W} est catastrophique, mais ça se soigne : noremap è w noremap È W noremap <C-è> <C-W>
Noter que les touches {É}{Ç}{À} sont réaffectables facilement. Par exemple, on peut faire de {É} une touche « début de ligne » :
noremap é ^ noremap É 0
[HJKL] <-> {CTSR}, variante
En Bépo, les commandes gj et surtout gk (bas / haut) sont difficiles à faire. On peut contourner la difficulté en utilisant {J} et {K} pour ces commandes-là, et {Ç} pour J (joindre deux lignes) et K (aide).
" Flèches : [HJKL] <-> {CSTR} " {cstr} = « gauche / bas / haut / droite » noremap c h noremap t gj noremap s gk noremap r l " {ST} = « ligne suivante / précédente » noremap T j noremap S k " {CR} = « haut / bas de l'écran » noremap C H noremap R L " conséquence : cCrRsStT sont inutilisables " {J} = « Till » / « Jusqu'à » noremap j t noremap J T " {H} = « Change » (h = bloc, H = jusqu'à la fin de ligne) noremap h c noremap H C " {L} = « Remplace » (l = caractère, L = texte) noremap l r noremap L R " {K} = « Suppr. » (k = caractère, K = ligne) noremap k s noremap K S " effet domino : J et K manquent à l'appel noremap ç J noremap Ç K " {W} est mal placé, ça a déjà été dit ? noremap è w noremap È W noremap <C-è> <C-W>
C'est surtout pour un usage littéraire de Vim que cette variante est appréciable, les longues lignes de texte étant alors plus faciles à manipuler.
Problèmes rencontrés
- {t} et {s} ne fonctionnent pas avec l'explorateur « :Ex », c'est ballot — penser à utiliser les flèches dans ce cas.
- {h} (=[c]) est plus utilisé que {l} (=[r]), il faudrait peut-être intervertir ces deux touches.
À 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/
Autres applications « à la Vim »
Bon nombre d'applications courantes utilisent les touches de déplacement de Vim :
- beaucoup d'outils standard du shell : man, more, less…
- la plupart des gestionnaires de fenêtres en mosaïque : Wmii, Dwm, Xmonad, Awesome…
- certains logiciels comme aptitude, mutt, ou même Firefox avec l'extension Vimperator…
- même Emacs dispose d'un mode Vim qui
le rend utilisablepermet de déplacer le curseur sans bouger les mains (pas testé ;-))
Par contre, ces applications n'utilisent pas le fichier ~/.vimrc, et pour la plupart d'entre elles la syntaxe de configuration est complètement différente. Liste à compléter.
- aptitude : http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s04s02.html
- less : http://unixhelp.ed.ac.uk/CGI/man-cgi?lesskey
- Vimperator : http://vimperator.cutup.org/index.php?title=Configuration (syntaxe globalement compatible avec Vim)
Pire : certaines applications ne sont pas adaptables au Bépo, les touches de commande étant codées en dur (!). Liste à compléter.
- vifm
À compléter.