Das Zuordnen von Strg + s funktioniert nicht


9

Ich versuche, Ctrl+ zuzuordnen s, um meine Datei zu speichern, aber es funktioniert nicht.

Meine Zuordnungen:

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

Im Einfügemodus sehe ich /:echo "Saved"in der unteren Ecke statt savedund im normalen Modus sehe ich dasselbe. Was mache ich falsch?

Dies befindet sich ganz oben in meinem vimrc, sodass mein anderer Code kein Problem verursachen sollte. Ich verwende Vim im OSX-Terminal.


Verwenden Sie Vim von einem Terminal aus? Control + S ist auch eine spezielle Tastenkombination, die vom Terminal erfasst wird, was "Ausgabe stoppen" bedeutet ... Wenn ich die obigen 2 Tastenkombinationen von gVim versuche, scheint es zu funktionieren.
Martin Tournoij

' I am also running vim inside the Mac terminal.' Ja, ich laufe vim über das Terminal. Wäre es besser, Alt anstelle von Strg oder Cmd zu verwenden?
iProgramm

Diese Frage wurde übrigens oft gestellt ;-) Ich habe keine Zeit, eine Antwort zu schreiben, aber dieser Link sollte Ihnen helfen ...
Martin Tournoij

Um die Speicherung an Cmd-S unter OSX zu binden, können Sie versuchen, eine Zuordnung <D-s>vorzunehmen, obwohl ich nicht sicher bin, ob dies in Terminal Vim funktioniert, und es ist ohnehin bereits eine Standardeinstellung in MacVim!
Joeytwiddle

Antworten:


6

Um sicherzustellen, dass diese Problemumgehung auch dann ausgeführt wird, wenn Vim von einem separaten Tool (z. B. git) gestartet wird , habe ich Folgendes in meinem ~/.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

Dies hat bei mir unter Linux, GVim, Mac OS X und MacVim funktioniert.

Vorsichtsmaßnahmen:

  • Unter Windows oder anderen Betriebssystemen, denen der sttyBefehl fehlt , werden bei jedem Start von Vim wahrscheinlich Fehler auftreten! ( silent!könnte das stumm schalten.)

  • Wenn in Ihrer Shell diese TTY-Einstellung bereits deaktiviert war, VimLeaveschaltet der Autobefehl sie natürlich wieder ein! Das Erkennen und Wiederherstellen der aktuellen Einstellungen ist beim Ansatz von @ aPyDeveloper von Vorteil.


Eine Kombination aus dieser und der Lösung von @ aPyDeveloper, die Kompatibilitätsprobleme unter OS X und Windows behandelt, kann hier und / oder im Wiki veröffentlicht werden!

Um die Wahl zwischen stty -gund zu vermeiden stty --save, können Sie den folgenden Test nur für die ixOption versuchen .

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.