« Vim » : différence entre les versions

De Disposition de clavier bépo
Ligne 45 : Ligne 45 :
Nota : les adeptes du Bépo-intl n'ont pas besoin de ce mapping, {W} étant déjà placé sur la touche [T].
Nota : les adeptes du Bépo-intl n'ont pas besoin de ce mapping, {W} étant déjà placé sur la touche [T].


===[HJKL] <-> {CTSR}, premier essai ===
===[HJKL] -> {CTSR} ===


L'objectif principal est d'utiliser les touches de déplacement case-à-case de Vim :
L'objectif principal est d'utiliser les touches de déplacement case-à-case de Vim :
Ligne 76 : Ligne 76 :
|}
|}


Enfin, il faut replacer {HJKL}. En première approche, on se contente d'échanger les touches deux à deux :
Ce qui donne :
 
  " {cr} = « gauche / droite »
{| border="1" class="wikitable"
|-
!  Bépo  !!  Qwerty  !!  Commande  !!
|-
|   h ||  c || change  || changer
|-           
|   H ||  C || Change  || changer jusqu'à la fin de ligne
|-           
|   j ||  t || till    || jusqu'au caractère suivant
|-           
|   J ||  T || Till    || jusqu'au caractère précédant
|-           
|   k ||  s || suppr.  || supprimer le caractère et insérer
|-           
|   K ||  S || Suppr.  || supprimer la ligne et insérer
|-           
|   l ||  r || replace || remplacer le caractère
|-           
|   L ||  R || Replace || remplacer à partir du caractère
|-
|}
 
  " {CTSR} = « gauche / bas / haut / droite »
  noremap c h
  noremap c h
noremap r l
" {ts} = « ligne suivante / précédente »
noremap t gj
noremap s gk
" g{ts} = « haut / bas »
noremap gt gj
noremap gs gk
" {CR} = « haut / bas de l'écran »
  noremap C H
  noremap C H
  noremap t j
  noremap R L
" {TS} = « joindre / aide »
  noremap T J
  noremap T J
noremap s k
  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


===[HJKL] <-> {CTSR}, variante #1 ===
==={HJKL} <- [CTSR] ===


La commande « Change » — [C] en Qwerty — est très souvent couplée avec une commande de déplacement telle que [w][b][t]… Or, par défaut elle a été placée en {H}, sur la rangée du bas. À l'inverse, « Replace » s'utilise seul mais est placé en {L}, sur la rangée du haut.
Maintenant il faut replacer {HJKL}. En première approche, on pourrait se contenter d'échanger les touches deux à deux, mais il est plus opportun de regrouper les commandes C et T sur la ligne du haut, S et R sur la ligne du bas. En effet, la commande « Change » — [C] en Qwerty — est très souvent couplée avec une commande de déplacement telle que [w][b][t]…
 
On peut donc raisonnablement intervertir ces deux touches :


{| border="1" class="wikitable"
{| border="1" class="wikitable"
Ligne 136 : Ligne 101 :
!  Bépo  !!  Qwerty  !!  Commande  !!
!  Bépo  !!  Qwerty  !!  Commande  !!
|-
|-
|   h ||  c || replace || remplacer le caractère
|   h ||  r || replace || remplacer le caractère
|-             
|-             
|   H ||  C || Replace || remplacer à partir du caractère
|   H ||  R || Replace || remplacer à partir du caractère
|-             
|-             
|   j ||  t || till    || jusqu'au caractère suivant
|   j ||  t || till    || jusqu'au caractère suivant
Ligne 148 : Ligne 113 :
|   K ||  S || Suppr.  || supprimer la ligne et insérer
|   K ||  S || Suppr.  || supprimer la ligne et insérer
|-             
|-             
|   l ||  r || change  || changer
|   l ||  c || change  || changer
|-             
|-             
|   L ||  R || Change  || changer jusqu'à la fin de ligne
|   L ||  C || Change  || changer jusqu'à la fin de ligne
|-
|-
|}
|}
Ligne 156 : Ligne 121 :
{L} devient ainsi la touche « Change », c'est juste à coté de {D} (« Delete »), donc assez cohérent.
{L} devient ainsi la touche « Change », c'est juste à coté de {D} (« Delete »), donc assez cohérent.


''À compléter avec le fragment de fichier .vimrc.''
" {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


===[HJKL] <-> {CTSR}, variante #2 ===
===Variante pour {ST} ===


En Bépo, les commandes gj et surtout gk (bas / haut) sont difficiles à faire. On peut contourner la difficulté en utilisant :
En Bépo, les commandes gj et surtout gk (bas / haut) sont difficiles à faire. On peut contourner la difficulté en utilisant :
Ligne 165 : Ligne 141 :
* {ç} pour J (joindre deux lignes) et {Ç} pour K (aide)
* {ç} pour J (joindre deux lignes) et {Ç} pour K (aide)


La section 2.2 devient alors :
  " {ctsr} = « gauche / bas / haut / droite »
  " {ctsr} = « gauche / bas / haut / droite »
  noremap c h
  noremap c h
Ligne 176 : Ligne 153 :
  noremap T j
  noremap T j
  noremap S k
  noremap S k
" Conséquence : les commandes cCrRsStT sont inutilisables.
" On met cCtT sur la rangée du haut et rRsS sur celle du bas :
" {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
  " Effet domino : J et K manquent à l'appel
  " Effet domino : J et K manquent à l'appel
  noremap ç J
  noremap ç J

Version du 23 mai 2008 à 17:33

Attention

Page en cours de construction

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.

[W] -> {È}

W E B sont les trois commandes de déplacement mot-à-mot de Vim. Le placement de {W} est catastrophique, mais ça se soigne :

 Bépo   Qwerty   Commande 
 è  w word mot suivant
 È  W Word mot suivant (délimiteur = espace)
 e  e end fin de mot
 E  E End fin de mot (délimiteur = espace)
 b  b back mot précédant
 B  B Back mot précédant (délimiteur = espace)

On conserve donc {B} et {E}, mais on utilise {È} comme commande {W} :

noremap è w
noremap È W
noremap <C-è> <C-W>

Nota : les adeptes du Bépo-intl n'ont pas besoin de ce mapping, {W} étant déjà placé sur la touche [T].

[HJKL] -> {CTSR}

L'objectif principal est d'utiliser les touches de déplacement case-à-case de Vim :

 Bépo   Qwerty   Commande 
 c  h gauche
 t  j bas
 s  k haut
 r  l droite

Les majuscules ont une fonction différente :

 Bépo   Qwerty   Commande 
 C  H haut de l'écran
 T  J Join joindre les lignes
 S  K Help aide
 R  L bas de l'écran

Ce qui donne :

" {cr} = « gauche / droite »
noremap c h
noremap r l
" {ts} = « ligne suivante / précédente »
noremap t gj
noremap s gk
" g{ts} = « haut / bas »
noremap gt gj
noremap gs gk
" {CR} = « haut / bas de l'écran »
noremap C H
noremap R L
" {TS} = « joindre / aide »
noremap T J
noremap S K

{HJKL} <- [CTSR]

Maintenant il faut replacer {HJKL}. En première approche, on pourrait se contenter d'échanger les touches deux à deux, mais il est plus opportun de regrouper les commandes C et T sur la ligne du haut, S et R sur la ligne du bas. En effet, la commande « Change » — [C] en Qwerty — est très souvent couplée avec une commande de déplacement telle que [w][b][t]…

 Bépo   Qwerty   Commande 
 h  r replace remplacer le caractère
 H  R Replace remplacer à partir du caractère
 j  t till jusqu'au caractère suivant
 J  T Till jusqu'au caractère précédant
 k  s suppr. supprimer le caractère et insérer
 K  S Suppr. supprimer la ligne et insérer
 l  c change changer
 L  C Change changer jusqu'à la fin de ligne

{L} devient ainsi la touche « Change », c'est juste à coté de {D} (« Delete »), donc assez cohérent.

" {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

Variante pour {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 2.2 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 est appréciable, les longues lignes de texte étant alors plus faciles à manipuler.

Remarques

Noter que les touches {É}{Ç}{À} sont réaffectables facilement, ainsi que {W} qui fait désormais double-emploi (sauf en Bépo-intl). Par exemple, on peut faire de {É} une touche « début de ligne » :

noremap é ^
noremap É 0

Parmi les 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 utilisable permet 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.

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.