Le mappage Ctrl + s ne fonctionne pas


9

J'essaie de mapper Ctrl+ spour enregistrer mon fichier mais cela ne fonctionne pas.

Mes cartographies:

map <C-s> :w <CR> :echo "Saved" <CR>
imap <C-s> <Esc> :w <CR> :echo "Saved" <CR> i

En mode insertion, je vois /:echo "Saved"dans le coin inférieur au lieu de savedet quand je suis en mode normal, je vois la même chose. Qu'est-ce que je fais mal?

C'est tout en haut de mon vimrc donc mon autre code ne devrait pas causer de problème. J'exécute Vim à l'intérieur du terminal OSX.


Utilisez-vous Vim depuis un terminal? Control + S est également un raccourci clavier spécial repris par le terminal, ce qui signifie "arrêter la sortie" ... Quand j'essaie les 2 raccourcis clavier ci-dessus de gVim, cela semble fonctionner.
Martin Tournoij

' I am also running vim inside the Mac terminal.' Oui, je lance vim via le terminal. Serait-il préférable d'utiliser Alt au lieu de Ctrl ou Cmd?
iProgram


Pour lier la sauvegarde à Cmd-S sur OSX, vous pouvez essayer de mapper depuis <D-s>bien que je ne sois pas sûr que cela fonctionne dans le terminal Vim, et c'est déjà un défaut dans MacVim de toute façon!
joeytwiddle

Réponses:


7

Pour garantir que cette solution de contournement s'exécute même lorsque Vim est démarré par un outil distinct (tel que git), j'ai ceci dans mon ~/.vimrc:

" Allow us to use Ctrl-s and Ctrl-q as keybinds
silent !stty -ixon

" Restore default behaviour when leaving Vim.
autocmd VimLeave * silent !stty ixon

Cela a fonctionné pour moi sur Linux, GVim, Mac OS X et MacVim.

Mises en garde:

  • Sous Windows, ou tout autre système d'exploitation dépourvu de la sttycommande, ce qui précède générera probablement des erreurs à chaque démarrage de Vim! ( silent!pourrait couper le son.)

  • Si votre shell avait déjà ce paramètre TTY désactivé, bien sûr, la commande VimLeaveautomatique le réactivera! Détecter et restaurer les paramètres actuels est un avantage avec l'approche @ aPyDeveloper.


Une combinaison de cela et de la solution @ aPyDeveloper, qui gère les problèmes de compatibilité sous OS X et Windows, serait géniale à publier ici et / ou sur le Wiki!

Pour éviter de choisir entre stty -get stty --save, vous pouvez essayer le test suivant uniquement pour l' ixoption.

call system("stty -a | grep '\( \|^\)ixon\>' >/dev/null")
let g:ix_at_startup = (v:shell_error == 0)

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.