vim personnalisé avec les commandes emacs (mode insertion uniquement)


10

J'étais un emacsutilisateur et je dois passer à vim. Mais je manque quelques commandes emacs de base en vimmode insertion:

  1. C-A
  2. C-E
  3. C-K
  4. C-Y
  5. C-x C-s
  6. ... et quelques autres

Je sais que je peux appuyer sur Escape, puis sur certaines des touches suivantes et enfin sur la touche i:

  1. ^
  2. $
  3. d$
  4. p
  5. :w [Entrer]
  6. ...

Cependant, j'aimerais rester en vimmode insertion et éviter d'appuyer sur les touches Escape/ i.

Sur le web, j'ai trouvé des personnalisations pour emacs( vi-mode, vip, viper, vimpulse, vim-mode, evil). Mais pas encore trouvé le contraire: personnaliser vimpour utiliser les emacscommandes ...

Je m'intéresse aux emacscommandes en vim mode insertion uniquement. Juste quelques commandes de base, comme les bashcommandes: C-A, C-E, C-K, C-Y, C-U... (eh oui C-Uest pas un défaut de emacscommande , mais je l' aime trop).

Réponses:


7

Je réponds à cette question quatre ans plus tard car la réponse fournie est une solution partielle qui ne répond pas complètement à la question d'origine.

J'ai exactement le même désir qu'olibre, et je voulais trouver une solution complète. J'y arrive d'un point de vue différent - je suis habitué à l'édition de ligne Emacs en bash - mais le problème est le même. Je veux reporter cela en mode d'insertion Vim (uniquement).

Ce qui suit répond à toutes les demandes de raccourcis clavier dans la question initiale posée par olibre, plus quelques extras:

" Mimic Emacs Line Editing in Insert Mode Only
inoremap <C-A> <Home>
inoremap <C-B> <Left>
inoremap <C-E> <End>
inoremap <C-F> <Right>
" â is <Alt-B>
inoremap â <C-Left>
" æ is <Alt-F>
inoremap æ <C-Right>
inoremap <C-K> <Esc>lDa
inoremap <C-U> <Esc>d0xi
inoremap <C-Y> <Esc>Pa
inoremap <C-X><C-S> <Esc>:w<CR>a

Les seules liaisons que je n'arrive pas à travailler à ce stade sont <Alt-B>et <Alt-F>, ce qui sauterait des mots entiers. Chaque fois que je lie <Esc>, <Alt>ou des <Meta>combinaisons, gVim (v7.4 sur Windows) génère des caractères accentués. N'hésitez pas à modifier cette réponse si vous avez une solution à ce problème. J'ai obtenu des combinaisons Alt au travail basé sur un autre poste suggestion d'utiliser uniquement les caractères spéciaux. Je les ai insérés ci-dessus.

Éditer

- (modifier n'est pas par affiche de réponse originale) -

J'ai utilisé ce qui suit sous Neovim et Windows 10. Vous devrez peut-être changer le "A" en "M" sur d'autres systèmes d'exploitation car "alt" pourrait être "méta" ailleurs. Je n'ai pas assez joué avec.

inoremap <A-x> <Esc>:
inoremap <A-f> <Esc>lwi
inoremap <A-b> <Esc>bi
inoremap <A-S-f> <Esc>lWi
inoremap <A-S-b> <Esc>Bi

Juste une petite suggestion: je pense que ce <Esc>paserait mieux pour<C-Y>
Yamaneko

Il semble que <C-K>cela ne fonctionne pas lorsque le curseur se trouve à l'extrême gauche - il devrait supprimer la ligne entière mais Esc>lDalaissera le premier caractère non effacé.
Ying Xiong

7

Vous pouvez mapper n'importe quelle commande en mode insertion à tout ce qui utilise la :imapcommande, ou enregistrer la saisie en utilisant :im. Pour votre premier mappage, vous pouvez taper (en mode normal):

:im <C-A> <esc>^i

Qui passe en mode normal (avec échappement), appuie ^pour vous et revient en mode insertion. Voir l'aide pour plus d'informations:

:help :imap ou plus court: :h :im

Notez que vous pouvez remplacer les mappages de clés existants. Mettez les commandes dans votre .vimrcfichier de configuration si vous voulez qu'elles soient là pour chaque document.


merci pour vos conseils +1 :-) Mais savez-vous si ce type de mappage a déjà été configuré? (par exemple sans écrasement des mappages de clés existants). Où trouver un tel projet / configuration? Je préférerais réutiliser quelque chose de déjà fait (et robuste), plutôt que d'essayer de le faire moi-même (et de manquer quelque chose d'important). Vive
olibre

Dois-je poser / déplacer ma question sur superuser.com ?
olibre

Merci! Vous pouvez voir si une commande existe avec la commande (logique) :im <c-a>. S'il indique «Aucune cartographie trouvée», vous n'écraserez rien. Je ne pense pas que ça deviendra beaucoup plus robuste que ça ...
Joker

Humm ... Je dois coder, tester ma configuration, puis corriger mes bugs, et encore .... Mais je ne connais pas toutes les vimcommandes ... S'il vous plaît, savez-vous où je peux trouver une liste des :imderniers arguments? Pour votre information, je suis aussi utilisé avec les suivantes bashcommandes: M-backspace, M-F, M-B, M-D... Ce sera bien si quelqu'un a déjà fait et partage son travail, non? (quelque chose comme evil) Par conséquent, je pourrais réutiliser son :immappage de clés sans le faire moi-même (sujet aux erreurs). Est-ce que tu vois ce que je veux dire?
olibre

Je ne comprends peut-être pas exactement ce que vous voulez dire, mais vous pouvez trouver tous les mappages de touches non standard en tapant :im. Pour faire un commentaire de plus haut niveau: si vous voulez pouvoir utiliser Vim sur plusieurs plates-formes / ordinateurs sans toujours avoir à charger vos propres plugins, modes spéciaux ou fichier vimrc, je pense que la meilleure chose à faire est d'apprendre / utiliser autant que possible les commandes Vim standard. J'ai moi-même fait plusieurs mappages de touches, mais j'essaie toujours de trouver l'alternative standard de Vim. Et cela peut être assez rapide. Une chose que je l'ai fait est la carte <esc>pour ;j, rendre votre carte n ° 1 aussi facile que ;jIet n ° 2 ;jA.
Joker

6

Pas une réponse complète, mais connaissez-vous le soi-disant « mode facile » de Vim ( vim -y)? Il est toujours en mode édition par défaut, et fait beaucoup de ce que vous voulez, et n'a pas besoin de vous pour installer ou personnaliser quoi que ce soit. Il fait CTRL-A, C, V, X, Y etc. De la liste des clés :

Key mappings:
    <Down>      moves by screen lines rather than file lines
    <Up>        idem
    Q           does "gq", formatting, instead of Ex mode
    <BS>        in Visual mode: deletes the selection
    CTRL-X      in Visual mode: Cut to clipboard
    <S-Del>     idem
    CTRL-C      in Visual mode: Copy to clipboard
    <C-Insert>  idem
    CTRL-V      Pastes from the clipboard (in any mode)
    <S-Insert>  idem
    CTRL-Q      do what CTRL-V used to do
    CTRL-Z      undo
    CTRL-Y      redo
    <M-Space>   system menu
    CTRL-A      select all
    <C-Tab>     next window, CTRL-W w
    <C-F4>      close window, CTRL-W c

Une version beaucoup plus puissante de ceci est Cream , qui remappe beaucoup plus de touches et rend les commandes de base similaires à d'autres éditeurs que vous connaissez peut-être.

Il y a aussi le plugin Vimacs , qui permet tous les mappages de clés emacs courants. Il est facile à installer et peut faire ce que vous voulez (je ne l'ai jamais essayé).


Très intéressant +1 :-) Je lis / teste tous vos liens ... Je vous donnerai plus de feedback plus tard. Je vous remercie. Vive
olibre

1
Les touches du «mode facile» n'ont rien à voir avec celles d'Emacs. Mais «vimacs» semble une chose intéressante. Je viens de l'installer, et malgré son ancienneté, cela fonctionne toujours.
Hi-Angel
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.