Was ist los mit Vims üblichem: w? Ich vermute , ctrl-s Ihre xterm friert , weil es alle Ausgaben in Terminals gefriert. ('stty -ixon' könnte helfen)
Yoni H
17
Das Drücken von (Escape Shift Doppelpunkt w Enter) dauert etwa dreimal länger als das Drücken von Strg-s. Obwohl ich festgestellt habe, dass das Drücken von Strg-s mehr zum Karpaltunnel führt als zum Eintreten des Esc-Shift-Doppelpunkts, verteilt es die Belastung, zwei Optionen zum Speichern zu haben.
Eric Leschinski
Antworten:
138
Ctrl+ Sist ein allgemeiner Befehl für Terminals, die Aktualisierung zu beenden. Es war eine Möglichkeit, die Ausgabe zu verlangsamen, damit Sie sie auf Terminals lesen können, die keinen Scrollback-Puffer haben. Finden Sie zuerst heraus, ob Sie Ihr xterm so konfigurieren können , dass es Ctrl+ San die Anwendung weiterleitet . Dann funktionieren diese Kartenbefehle:
funktioniert mit OSX, iTerm2, ZSH, oh-my-zsh, wenn Sie "stty -ixon" in die .zshrc-Datei aufnehmen
Richard
4
"stty -ixon" in Ihrer .bashrc ist auch für Terminal.app mit bash erforderlich.
Jonathan Potter
@ ned-batchelder Ist es in Ordnung, wenn Sie stattdessen Strg-W zuordnen? Wird es ein Problem mit vim- oder terminal-Standardbefehlen geben?
Thi G.
@ ThiG. <C-W>wird normalerweise für Fensteraufteilung und Fensterbefehle verwendet
Juve
5
Übrigens war der Grund, warum mich die Suchmaschinen hier gelandet haben, danke.
Timothy LJ Stewart
69
Unter Linux mit VI möchten Sie drücken Ctrl- Sund Ihr Dokument speichern lassen. Dies hat bei mir funktioniert . Fügen Sie die folgenden drei Zeilen in Ihre .vimrc-Datei ein . Diese Datei sollte sich in Ihrem Home-Verzeichnis befinden: /home/el/.vimrc Wenn diese Datei nicht vorhanden ist, können Sie sie erstellen.
:nmap <c-s> :w<CR>
:imap <c-s> <Esc>:w<CR>a
In der ersten Zeile steht: Durch Drücken von Ctrl- Sinnerhalb eines Dokuments wird eine :w <enter>Tastaturkombination ausgeführt.
In der zweiten Zeile heißt es: Drücken von Ctrl- Sinnerhalb eines Dokuments im Einfügemodus kehrt in den normalen Modus zurück, führen Sie a aus :w <enterund drücken Sie a, um in den Einfügemodus zurückzukehren. Ihr Cursor kann sich während dieses Ereignisses bewegen.
Möglicherweise stellen Sie fest, dass durch Drücken von Ctrl- Sein 'XOFF' ausgeführt wird, das den Empfang von Befehlen verhindert (wenn Sie ssh verwenden).
Um dies zu beheben, platzieren Sie diese beiden Befehle in Ihrem ~ / .bash_profile
bind -r '\C-s'
stty -ixon
Dadurch wird die Bindung von Ctrl- Sdeaktiviert und alle XOFF-Bildschirmmeldungen beim Drücken von Ctrl- entfernt S. Hinweis: Nachdem Sie Änderungen an Ihrem .bash_profile vorgenommen haben, müssen Sie es mit dem Befehl 'source .bash_profile' oder logout / login erneut ausführen.
Für das Gnome-Terminal war es genug, 'stty -ixon' zu meiner .bashrc hinzuzufügen.
DavidG
1
: imap <cs> <Esc>: w <CR> a <----- Dies funktioniert nicht wie erwartet, wenn am Anfang der Zeile steht ('a' wird angehängt anstatt eingefügt, was ich tun würde erwarten von). Gibt es eine Möglichkeit, 'a' oder 'i' zu machen, je nachdem, wo sich der Cursor befindet?
Alexander am
Könnten Sie bitte erklären, warum Sie 2 imapBefehle verwenden? Es scheint, als ob Sie nur brauchen imap <c-s> <Esc>:w<CR>a. Vielen Dank.
Gwintrob
Ich dachte, die 2. imap-Befehlszeile hätte Bedeutung, aber bei näherer Betrachtung tut sie nichts. Ausgezeichneter Fang, ich habe die lahme Linie entfernt.
Eric Leschinski
1
Gibt es einen Grund, warum Sie ein anstelle von i verwenden?
DemiImp
11
vim
# ~/.vimrc
nnoremap <c-s> :w<CR> # normal mode: save
inoremap <c-s> <Esc>:w<CR>l # insert mode: escape to normal and save
vnoremap <c-s> <Esc>:w<CR> # visual mode: escape to normal and save
Sollte es nicht sein vnoremap <c-s> <Esc>:w<CR> # visual mode: escape to normal and save?
BlackBeltScripting
10
Mac OSX Terminal + zsh?
In Ihrem .zprofile
alias vim="stty stop '' -ixoff; vim"
Warum? Was ist los? Siehe hier , aber im Grunde genommen wird für die meisten Terminals ctrl+s bereits für etwas verwendet, also dieser Alias vim, damit wir diese Zuordnung deaktivieren, bevor wir vim ausführen.
In Ihrer .vimrc
nmap <c-s> :w<cr>
imap <c-s> <esc>:w<cr>a
Warum? Was ist los? Dieser sollte ziemlich offensichtlich sein, wir ordnen ctrl+s nur verschiedenen Tastenanschlägen zu, je nachdem, ob wir uns im normalen Modus oder im Einfügemodus befinden.
Antworten:
Ctrl+ Sist ein allgemeiner Befehl für Terminals, die Aktualisierung zu beenden. Es war eine Möglichkeit, die Ausgabe zu verlangsamen, damit Sie sie auf Terminals lesen können, die keinen Scrollback-Puffer haben. Finden Sie zuerst heraus, ob Sie Ihr xterm so konfigurieren können , dass es Ctrl+ San die Anwendung weiterleitet . Dann funktionieren diese Kartenbefehle:
Übrigens: Wenn Ctrl+ SIhr Terminal einfriert, geben Sie Ctrl+ ein Q, um es wieder in Betrieb zu nehmen.
quelle
<C-W>
wird normalerweise für Fensteraufteilung und Fensterbefehle verwendetUnter Linux mit VI möchten Sie drücken Ctrl- Sund Ihr Dokument speichern lassen. Dies hat bei mir funktioniert . Fügen Sie die folgenden drei Zeilen in Ihre .vimrc-Datei ein . Diese Datei sollte sich in Ihrem Home-Verzeichnis befinden:
/home/el/.vimrc
Wenn diese Datei nicht vorhanden ist, können Sie sie erstellen.In der ersten Zeile steht: Durch Drücken von Ctrl- Sinnerhalb eines Dokuments wird eine
:w <enter>
Tastaturkombination ausgeführt.In der zweiten Zeile heißt es: Drücken von Ctrl- Sinnerhalb eines Dokuments im Einfügemodus kehrt in den normalen Modus zurück, führen Sie a aus
:w <enter
und drücken Siea
, um in den Einfügemodus zurückzukehren. Ihr Cursor kann sich während dieses Ereignisses bewegen.Möglicherweise stellen Sie fest, dass durch Drücken von Ctrl- Sein 'XOFF' ausgeführt wird, das den Empfang von Befehlen verhindert (wenn Sie ssh verwenden).
Um dies zu beheben, platzieren Sie diese beiden Befehle in Ihrem ~ / .bash_profile
Dadurch wird die Bindung von Ctrl- Sdeaktiviert und alle XOFF-Bildschirmmeldungen beim Drücken von Ctrl- entfernt S. Hinweis: Nachdem Sie Änderungen an Ihrem .bash_profile vorgenommen haben, müssen Sie es mit dem Befehl 'source .bash_profile' oder logout / login erneut ausführen.
Weitere Informationen: http://vim.wikia.com/wiki/Map_Ctrl-S_to_save_current_or_new_files
quelle
imap
Befehle verwenden? Es scheint, als ob Sie nur brauchenimap <c-s> <Esc>:w<CR>a
. Vielen Dank.vim
zsh (wenn Sie verwenden)
Bash (wenn Sie verwenden)
quelle
vnoremap <c-s> <Esc>:w<CR> # visual mode: escape to normal and save
?Mac OSX Terminal + zsh?
In Ihrem .zprofile
Warum? Was ist los? Siehe hier , aber im Grunde genommen wird für die meisten Terminals ctrl+s bereits für etwas verwendet, also dieser Alias vim, damit wir diese Zuordnung deaktivieren, bevor wir vim ausführen.
In Ihrer .vimrc
Warum? Was ist los? Dieser sollte ziemlich offensichtlich sein, wir ordnen ctrl+s nur verschiedenen Tastenanschlägen zu, je nachdem, ob wir uns im normalen Modus oder im Einfügemodus befinden.
quelle