« Vim » : différence entre les versions

De Disposition de clavier bépo
Ligne 270 : Ligne 270 :
*celui de [[Utilisateur:Nemolivier|NémOlivier]] est [[Utilisateur:Nemolivier/vimrc|là]]
*celui de [[Utilisateur:Nemolivier|NémOlivier]] est [[Utilisateur:Nemolivier/vimrc|là]]


== Autres applications « à la Vim » ==
== « Bépo-Vimification » du poste de travail ==
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 ===
Bon nombre d'applications courantes utilisent les touches de déplacement de Vim, sans toutefois utiliser le fichier ~/.vimrc pour la configuration de ces touches. Moyennant un effort de configuration, on peut donc disposer d'un mode Vim, avec les touches de déplacement en {CTSR}, sur l'ensemble de son poste de travail.


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.
Certaines applications comme Vifm ne sont pas configurables du tout, on n'en parlera donc pas ici.
 
=== Firefox ===
 
[http://vimperator.mozdev.org/ Vimperator] est une extension Firefox permettant 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 pour les champs texte.


Voir http://vimperator.cutup.org/index.php?title=Configuration pour la configuration de Vimperator.
Voir http://vimperator.cutup.org/index.php?title=Configuration pour la configuration de Vimperator.
Ligne 283 : Ligne 286 :
''À compléter.''
''À compléter.''


=== Emacs ===
=== Thunderbird ===


Emacs dispose d'un mode Vim qui <del>le rend utilisable</del> permet de déplacer le curseur sans bouger les mains (pas testé ;-)).
[http://muttator.mozdev.org/ Muttator] est l'équivalent de Vimperator pour Thunderbird. Le projet est encore en début de développement, mais serait d'ores et déjà utilisable (non testé).


''À compléter par un utilisateur Emacs.''
''À compléter.''


Note : OpenKomodo dispose également d'un mode Vim. Par ailleurs il y a un plugin Vim pour Visual Studio.
=== IDEs ===
Vim n'est qu'un éditeur texte, pas un IDE. Cependant, la plupart des IDEs disposent d'un mode Vi, nativement ou non :
* Emacs dispose nativement d'un mode Vi qui <del>le rend utilisable</del> permet de déplacer le curseur sans bouger les mains (pas testé ;-)). ''À compléter par un utilisateur Emacs. (Gaëtan ?)''
* Komodo et OpenKomodo disposent nativement d'un mode Vi. ''À compléter par un utilisateur Komodo.''
* il y a un [http://vimplugin.org/ plugin Vim] pour Eclipse ; il y a aussi le projet [http://eclim.sourceforge.net/ Eclim], qui permet d'utiliser Vim comme éditeur de texte dans Eclipse. ''À compléter par un utilisateur Eclipse. (Crako ?)''
* [http://www.viemu.com/ ViEmu] propose un plugin Vim (non-libre) pour Visual Studio, ainsi que pour Word™ et Outlook™. ''À compléter par un utilisateur Windows™.''


=== Outils du shell ===
=== Outils du shell ===
Ligne 295 : Ligne 303 :
* man, more, [http://unixhelp.ed.ac.uk/CGI/man-cgi?lesskey less]…
* man, more, [http://unixhelp.ed.ac.uk/CGI/man-cgi?lesskey less]…
* [http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s04s02.html aptitude] : installation de paquets DEB
* [http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s04s02.html aptitude] : installation de paquets DEB
* w3m : navigateur web
* mutt : client mail
* mutt : client mail
* cmus : lecteur de musique
* cmus : lecteur de musique
Pour les plus gravement atteints : http://vim.wikia.com/wiki/Use_vi_shortcuts_in_terminal (mais le remmap du .vimrc n’est pas lu, à fouiller).
* Pour les plus gravement atteints : http://vim.wikia.com/wiki/Use_vi_shortcuts_in_terminal
* zsh possède un mode vi, malheureusement, il ne lit pas le .vimrc pour les attributions des touches, il faut ajouter ça à votre {{C|.zshrc}} :
* zsh possède un mode vi, il suffit d'ajouter ça à votre {{C|~/.zshrc}} :
  # Mode vim
  # Mode vim
  bindkey -v
  bindkey -v

Version du 21 juin 2008 à 19:00

Attention

Page en cours de construction

Vim est un éditeur de texte ergonomique. Cette page regroupe les informations relatives à son utilisation avec la disposition fr-dvorak-bépo.

Ergonomie

Pourquoi Vim ?

Vim a été optimisé 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 se passer complètement de la souris tout en diminuant 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. Quand on maîtrise les bases de Vim, le gain en confort et en productivité est tel qu'on n'utilise plus aucun autre éditeur.

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

À faire : ajouter des liens vers des tutoriels Vim.

Objectifs 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.

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 Vim / fr-dvorak-bépo — version PDF

Principe

  • {ctsr} remplace [hjkl] pour les touches de direction
  • réciproquement :
    • {H} remplace [R] (remplacer)
    • {J} remplace [T] (jusqu'à)
    • {K} remplace [S] (supprime et insère)
    • {L} remplace [C] (modification de texte), juste à coté de {D} (couper)
  • {É} remplace [W] (mot suivant), le {W} étant beaucoup trop loin en Bépo

C'est la solution la plus simple pour utiliser Vim confortablement en Bépo. :-/

~/.vimrc

Créer un fichier ~/.vimrc.bepo avec le contenu suivant :

" {W} -> [É]
" ——————————
" On remappe W sur É :
noremap é w
noremap É W
" efface un mot quand on n’est pas au début
noremap daé daw
noremap daÉ daW
" Pour faciliter les manipulations de fenêtres, on utilise {W} comme un Ctrl+W :
noremap w <C-w>
noremap W <C-w><C-w>

" [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
" pour la correction orthographique
noremap ]k ]s
noremap [k [s

" Désambiguation de {g}
" —————————————————————
" ligne précédante/suivante (à l'intérieur d'une phrase)
noremap gs gk
noremap gt gj
" onglet précédant/suivant
noremap gb gT
noremap gé gt
" premier/dernier onglet
noremap gB :exe "silent! tabfirst"<CR>
noremap gÉ :exe "silent! tablast"<CR>
" replis suivant / précédent
noremap zs zj
noremap zt zk
" si les chiffres mappés en direct
" va au début de la ligne écran
noremap g" g0


" <> en direct
" ————————————
noremap « <
noremap » >

Remplacer la section « <> en direct » par les lignes suivantes pour avoir les chiffres en accès direct en mode normal :

" Chiffres en accès direct
" ————————————————————————
noremap " 1
noremap 1 "
noremap « 2
noremap 2 <
noremap » 3
noremap 3 >
noremap ( 4
noremap 4 (
noremap ) 5
noremap 5 )
noremap @ 6
noremap 6 @
noremap + 7
noremap 7 +
noremap - 8
noremap 8 -
noremap / 9
noremap 9 /
noremap * 0
noremap 0 *

Puis, inclure ce fichier dans la configuration de Vim en ajoutant la ligne suivante dans le fichier ~/.vimrc :

source ~/.vimrc.bepo

Nota : les utilisateurs de Vimperator peuvent ajouter la même ligne dans le fichier ~/.vimperatorrc.

~/.vim/after/ftplugin/netrw.vim

Ex est le plugin d'exploration de fichiers de Vim. On le lance avec « :Ex », « :Sex », « :Vex », « :Tex », ou même « :e . ».

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 au pire, utiliser la souris
  • 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.). Attention, 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

Le guillemet-apostrophe (rsqm) en direct ne peut pas être réaffecté en une apostrophe droite (probablement parce que le rqsm n'est pas disponible en Latin-1) ; par contre, ils peuvent utiliser la touche {ç} à cet effet :

noremap ç '
noremap Ç `

Par ailleurs, on pourrait échanger {s} et {g} de façon à avoir {g} sous la main gauche et pour une meilleure cohérence des raccourcis de Vim : les commandes correspondant à « s » et « r », respectivement {g} et {h}, se trouveraient alors sous les touches {S} et {R}.

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>
" Même chose, mais en mode visuel
vnoremap <Tab> <Esc>
vnoremap <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

Fixer l’encodage des fichier en utf8

set encoding=utf-8
set fileencoding=utf-8

Plus de détails ici.

Hors sujet, mais vraiment belle astuce

" « v,d » lance firefox et une recherche dans le tlfi la définition du mot courant
vmap ,d :<C-U>!firefox "http://www.cnrtl.fr/lexicographie/<cword>" >& /dev/null<CR><CR>
" « v,s » lance firefox et une recherche dans le tlfi les synonymes du mot courant
vmap ,s :<C-U>!firefox "http://www.cnrtl.fr/synonymie/<cword>" >& /dev/null<CR><CR>
" « v,g » comme ci-dessus mais pour google
vmap ,g :<C-U>!firefox "http://www.google.fr/search?hl=fr&q=<cword>&btnG=Recherche+Google&meta=" >& /dev/null<CR><CR>
" « v,c » comme ci-dessus mais pour le conjugueur
vmap ,c :<C-U>!firefox "http://www.leconjugueur.com/php5/index.php?v=<cword>" >& /dev/null<CR><CR>
" « v,w » comme ci-dessus mais pour wikipedia
vmap ,w :<C-U>!firefox "http://fr.wikipedia.org/wiki<cword>" >& /dev/null<CR><CR>
" ouvre l’url sur laquelle on se trouve, dans firefox
vmap ,o :<C-U>!firefox "<cfile>" >& /dev/null<CR><CR>

Il faut que firefox soit dans le $PATH, sinon, indiquer le chemin complet de l’exécutable. Les raccourcis proposés sont tous en « ,x » pour qu’il n’y ait pas d’interaction malencontreuse avec d’autres commandes, mais on peut changer cette partie.

Variante qui tue, en utilisant un navigateur texte à l'intérieur de Vim :

  • enregistrer browser.vim dans le dossier ~/.vim/plugin/
  • facultatif : remplacer « lynx » par « w3m » partout dans le fichier browser.vim (w3m supporte l'utf-8, contrairement à lynx)
  • ajouter les lignes suivantes dans le fichier ~/.vimrc :
" « v,d » cherche la définition du mot courant dans le TLFI
vmap ,d :call OpenWebBrowser("http://www.cnrtl.fr/lexicographie/<C-R><C-W>")<CR>
" « v,s » cherche les synonymes du mot courant dans le TLFI
vmap ,s :call OpenWebBrowser("http://www.cnrtl.fr/synonymie/<C-R><C-W>")<CR>
" « v,g » cherche le mot courant dans Google
vmap ,g :call OpenWebBrowser("http://www.google.fr/search?hl=fr&q=<C-R><C-W>&btnG=Recherche+Google&meta=")<CR>
" « v,c » cherche le mot courant dans le conjugueur
vmap ,c :call OpenWebBrowser("http://www.leconjugueur.com/php5/index.php?v=<C-R><C-W>")<CR>
" « v,w » cherche le mot courant Wikipedia
vmap ,w :call OpenWebBrowser("http://fr.wikipedia.org/wiki/<C-R><C-W>")<CR>
" ouvre l’URL sur laquelle on se trouve
vmap ,o :call OpenWebBrowser("<C-R><C-A>")<CR>

Exemples de .vimrc

« Bépo-Vimification » du poste de travail

Bon nombre d'applications courantes utilisent les touches de déplacement de Vim, sans toutefois utiliser le fichier ~/.vimrc pour la configuration de ces touches. Moyennant un effort de configuration, on peut donc disposer d'un mode Vim, avec les touches de déplacement en {CTSR}, sur l'ensemble de son poste de travail.

Certaines applications comme Vifm ne sont pas configurables du tout, on n'en parlera donc pas ici.

Firefox

Vimperator est une extension Firefox permettant 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 pour les champs texte.

Voir http://vimperator.cutup.org/index.php?title=Configuration pour la configuration de Vimperator.

Voir également GViMail pour utiliser Vimperator avec Gmail.

À compléter.

Thunderbird

Muttator est l'équivalent de Vimperator pour Thunderbird. Le projet est encore en début de développement, mais serait d'ores et déjà utilisable (non testé).

À compléter.

IDEs

Vim n'est qu'un éditeur texte, pas un IDE. Cependant, la plupart des IDEs disposent d'un mode Vi, nativement ou non :

  • Emacs dispose nativement d'un mode Vi qui le rend utilisable permet de déplacer le curseur sans bouger les mains (pas testé ;-)). À compléter par un utilisateur Emacs. (Gaëtan ?)
  • Komodo et OpenKomodo disposent nativement d'un mode Vi. À compléter par un utilisateur Komodo.
  • il y a un plugin Vim pour Eclipse ; il y a aussi le projet Eclim, qui permet d'utiliser Vim comme éditeur de texte dans Eclipse. À compléter par un utilisateur Eclipse. (Crako ?)
  • ViEmu propose un plugin Vim (non-libre) pour Visual Studio, ainsi que pour Word™ et Outlook™. À compléter par un utilisateur Windows™.

Outils du shell

# Mode vim
bindkey -v

# On remappe pour le bépo
bindkey -a c vi-backward-char
bindkey -a r vi-forward-char
bindkey -a t vi-down-line-or-history
bindkey -a s vi-up-line-or-history
bindkey -a $ vi-end-of-line
bindkey -a 0 vi-digit-or-beginning-of-line 
bindkey -a h vi-change
bindkey -a H vi-change-eol
bindkey -a dd vi-change-whole-line
bindkey -a l vi-replace-chars
bindkey -a L vi-replace
bindkey -a k vi-substitute  

À compléter.

Gestionnaires de fenêtres en mosaïque

Ion, Wmii, Dwm, Xmonad, Awesome… ces gestionnaires de fenêtres sont des alternatives intéressantes pour ceux qui veulent se passer complètement de la souris.

À compléter.