Dans vim, comment puis-je remapper <tab> sans également remapper <Ctrl + i>?

14

J'aime utiliser tab pour passer d'une fenêtre à l'autre, donc je l'ai map <tab> <C-W><C-W>dans mon .vimrc. Pourtant, j'ai remarqué que cela fait en sorte que Ctrl + I ne se comporte plus comme Ctrl + I, mais comme Ctrl + W, Ctrl + W. Comment puis-je remapper juste <tab>mais pas <C-i>?

Jonathan
la source

Réponses:

10

En raison de la façon dont la saisie au clavier est gérée en interne, cela n'est malheureusement généralement pas possible aujourd'hui, même dans GVIM. Certaines combinaisons de touches, comme Ctrl+ non alphabétique, ne peuvent pas être mappées, et Ctrl+ lettre vs Ctrl+ Shift+ lettre ne peuvent pas être distinguées. (À moins que votre terminal n'envoie un code termcap distinct , ce que la plupart ne font pas.) En mode insertion ou en ligne de commande, essayez de taper la combinaison de touches. Si rien ne se passe / n'est inséré, vous ne pouvez pas utiliser cette combinaison de touches. Cela s'applique également à <Tab>/ <C-I>, <CR>/ <C-M>/ <Esc>/ <C-[>etc. (La seule exception est <BS>/ <C-H>.) Ceci est un problème connu et fait l'objet de diverses discussions sur vim_dev et le canal IRC #vim.

Certaines personnes (avant tout Paul LeoNerd Evans) veulent corriger cela (même pour la console Vim dans les terminaux qui prennent en charge cela), et ont flotté diverses propositions, cp. http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

Mais à ce jour, aucun correctif ou volontaire ne s'est encore présenté, bien que beaucoup aient exprimé le souhait de l'avoir dans une future version majeure de Vim 8.

Ingo Karkat
la source
1
ce problème de mappage / reconnaissance des codes clés a-t-il été résolu dans Vim 8, à partir de maintenant (année 2017)? Je trouve que je peux toujours reproduire l'exemple de Jon sur mon Vim 8.0
llinfeng
@llinfeng: Non, malheureusement pas. Bram travaille actuellement à l'intégration d'un terminal dans Vim; cela semble utiliser une bibliothèque produite par Paul Evans, donc peut-être que cela conduira éventuellement à une amélioration des clés manipulées. (Mais c'est de la pure spéculation en ce moment.)
Ingo Karkat
0

Tous les raccourcis ne sont pas possibles dans Vim, surtout s'il est sous un terminal. Je ne recommande pas d'utiliser un raccourci d'onglet à cet effet. Mais une solution alternative pourrait être la suivante:

" Note: Allows faster switching between windows with "Ctrl+w"! By Questor
nnoremap <silent> <C-w> <C-w><C-w>
inoremap <silent> <C-w> <Esc><C-w><C-w>
vnoremap <silent> <C-w> <Esc><C-w><C-w>

Voir un exemple d'utilisation dans https://github.com/eduardolucioac/groovim/blob/master/.vimrc

[]

Eduardo Lucio
la source