58 votes

Comment mapper ctrl x ctrl o sur ctrl espace dans vim terminal?

Après avoir cherché un peu sur le net, il semble que je ne puisse pas mapper l'espace ctrl sur rien / beaucoup. Y at-il un moyen de le faire aujourd'hui, ce que j'ai trouvé était généralement âgé de 2 ans.

58voto

pablox Points 969

J'ai rencontré le même problème, la réponse courte est oui, vous pouvez, et pas seulement dans la version graphique. Ajouter ceci sur vous .vimrc est suffisant:

 inoremap <C-Space> <C-x><C-o>
inoremap <C-@> <C-Space>
 

26voto

romainl Points 55506

Le problème semble être que le Terminal.application ne pas interpréter <C-Space> correctement et Vim, il comprend qu' <C-@> qui est intégré dans la cartographie (:help CTRL-@).

Peut-être que vous pourriez aller avec quelque chose comme ce qui suit dans votre .vimrc:

if !has("gui_running")
    inoremap <C-@> <C-x><C-o>
endif

qui semble fonctionner, ici, mais je n'aime pas l'idée de l'annulation de la built-ins comme ça.

Au lieu de cela, vous devriez essayer avec <Leader> (:help leader), elle offre des possibilités énormes pour la définition de vos propres mappings et (selon le mapleader vous choisissez) n'interfère pas avec OS/application spécifique raccourcis/limites et, par conséquent, être plus portable.

Avec ce dans mon .vimrc:

let mapleader=","
inoremap <leader>, <C-x><C-o>

Je viens de frapper ,, pour l'ensemble de la méthode des noms.

6voto

oliver Points 2296

Le nitpicker a cassé la solution de pablox. Le nœud de la solution était sur le point de remapper. Ainsi, lorsque vous désactivez le remappage, cela ne peut pas fonctionner.
Si vous voulez vraiment ajouter un noremap , voici à quoi ça ressemble:

 inoremap <expr><C-space> neocomplete#start_manual_complete()
imap <C-@> <C-Space>
 

Ce qui ne fonctionnera pas : inoremap <C-@> <C-Space> - car la partie <C-Space> ne sera pas remappée elle-même.

4voto

Benoit Points 35553
  • Avez-vous essayé :inoremap <c-space> <c-x><c-o> ?
  • Ctrl-X Ctrl-O fait-il quelque chose lorsque vous tapez en mode insertion? Est-ce que omnifunc défini?

3voto

user2609980 Points 1104

Ajoutez le code suivant à ~/.vimrc :

 " Ctrl-Space for completions. Heck Yeah!
inoremap <expr> <C-Space> pumvisible() \|\| &omnifunc == '' ?
        \ "\<lt>C-n>" :
        \ "\<lt>C-x>\<lt>C-o><c-r>=pumvisible() ?" .
        \ "\"\\<lt>c-n>\\<lt>c-p>\\<lt>c-n>\" :" .
        \ "\" \\<lt>bs>\\<lt>C-n>\"\<CR>"
imap <C-@> <C-Space>
 

Source: https://coderwall.com/p/cl6cpq

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X