Mapper la touche d'échappement à: q dans vim en mode normal

0

J'utilise vim en tant que spectateur dans Midnight Commandder et je souhaite visualiser et fermer rapidement un fichier. Comment mapper la touche d'échappement à :qen mode normal pour que vim ne quitte que si rien n'est changé?

Oxy
la source
Pourquoi ne pas utiliser un "spectateur" réel au lieu d'un éditeur?
Romainl
Parce que cela me donne beaucoup plus de fonctionnalités telles que la mise en surbrillance du code configurable. Et je peux éditer le fichier dans le cas où j'aime et quitter sans douleur s'il n'est pas modifié.
Oxy

Réponses:

0

Pour le faire uniquement pour la vimsession en cours, tapez les commandes suivantes (in vim). (Des espaces sont ajoutés pour plus de clarté. Ne tapez pas d’espace sauf là où je l’ai indiqué Space.)

:mapSpaceCtrl+ VEscSpace:qCtrl+VEnterEnter

Pour le faire uniquement pour le reste de la session Terminal en cours, tapez les commandes suivantes (dans Terminal, c’est-à-dire le shell). (Les sauts de ligne sont ajoutés pour plus de clarté. Tapez les informations suivantes sur une seule ligne; ne tapez pas Entersauf si j'ai indiqué Enter.)

E  X  I  N  I  T  =
"  :  m  a  p  Space  Ctrl+ V  Esc  Space  :  q  Ctrl+V  Enter  "  Enter

et alors

export EXINITEnter

Pour rendre les modifications «permanentes» (c'est-à-dire jusqu'à ce que vous modifiiez les fichiers), insérez les commandes ci-dessus (le EXINIT="…"et export EXINIT) dans votre .bash_profileet / ou .bashrc. (Vous pouvez les regrouper sur la même ligne, en les séparant ;. Vous pourrez peut-être abréger cela en les combinant export EXINIT="…".) il suffit de taper les EXINITcommandes ou sourcele fichier dans lequel vous avez placé les EXINITcommandes.

Remarque: si vous n'utilisez pas bash comme shell principal, vous devrez peut-être modifier ce qui précède pour votre shell.

Sinon, essayez de mettre la :map …commande dans votre .exrcfichier.


Au cas où cela ne serait pas évident,

: carte chaîne 1  chaîne 2

(in vi/ vim) crée un mappage (traduction) de sorte que, lorsque vous tapez (en mode commande), l'éditeur agit comme si vous l'aviez saisi . Et + est le caractère super-escape qui indique à / et au shell (en fait, probablement tous les programmes, ou du moins la plupart d'entre eux) que le caractère suivant est censé être interprété comme un caractère textuel littéral, et non comme un contrôle. personnage. Notez que + suivi de vous donne un caractère de retour chariot, qui est souvent affiché comme ; mais, dans un , cela est interprété comme un .string1string2CtrlVvivimCtrlVEnter^M:map string2Enter

G-Man
la source
Merci G-Man. La première approche fonctionne parfaitement bien (mais est inutile comme vous le savez). Le second ne fonctionne pas. Je suis sous Mac OS. Avez-vous une idée pourquoi cela ne fonctionne pas?
Oxy
J'ai suivi la même procédure avec ~/.exrcfichier et cela ne fonctionne pas aussi bien.
Oxy
@Oxy: J'ai modifié la réponse pour clarifier un éventuel malentendu. Je ne sais pas pourquoi ça ne marche pas. Pouvez-vous obtenir d'autres commandes grâce à l' vimune de ces techniques? Par exemple, avez-vous déjà un ~/.exrcdont le contenu fonctionne? Si vous tapez export EXINIT=":map q jjjj"; vim some_file, est-ce que ( q) fait descendre votre curseur de quatre lignes? Si vous tapez export EXINIT=":set list"; vim some_file, cela s'affiche-t-il $aux extrémités des lignes (et affiche-t-il les tabulations sous la forme ^I)?
G-Man
Non, ça ne va pas. Bizarre!
Oxy
Bien, videvrait être vile monde autour, mais OS X n'est pas Linux. Essayez d’effectuer des recherches visur OS X (commencez par man vi, puis recherchez Super User, puis Google) pour voir s’il existe une façon différente de vous permettre de passer des commandes d’initialisation.
G-Man