Ctrl + sのマッピングが機能しない


9

Ctrl+ をマップsしてファイルを保存しようとしていますが、機能しません。

私のマッピング:

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

挿入モードでは/:echo "Saved"、代わりに下隅に表示され、saved通常モードでは同じものが表示されます。何が悪いのですか?

これは私のvimrcの最上部にあるので、他のコードが問題を引き起こしていないはずです。OSXターミナル内でVimを実行しています。


端末からVimを使用していますか?Control + Sは、ターミナルによってピックアップされる特別なキーバインドでもあります。これは、「出力の停止」を意味します... gVimから上記の2つのキーバインドを試したところ、動作するようです。
Martin Tournoij、2015年

' I am also running vim inside the Mac terminal.'はい、ターミナル経由でvimを実行しています。CtrlやCmdの代わりにAltを使用する方が良いでしょうか?
iProgram 2015年

ちなみに、この質問は何度も尋ねられました;-)答えを書く時間はありませんが、そのリンクはあなたに役立つはずです...
Martin Tournoij

OSVでCmd-Sに保存をバインドする<D-s>には、ターミナルVimで機能するかどうかはわかりませんが、マッピングは試してみることができます。MacVimではすでにデフォルトになっています。
joeytwiddle 2015年

回答:


6

Vimが別のツール(gitなど)で起動された場合でも、この回避策が確実に実行されるようにするために、~/.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

これはLinux、GVim、Mac OS XおよびMacVimで私のために働いています。

警告:

  • Windows、またはsttyコマンドのないその他のOSでは、Vimが起動するたびに上記のエラーが発生する可能性があります。(silent!ミュートするかもしれません。)

  • シェルですでにこのTTY設定が無効になっている場合は、もちろん、VimLeave自動コマンドによって再び有効になります!現在の設定を検出して復元することは、@ aPyDeveloperのアプローチの利点です。


これと、OS XおよびWindowsでの互換性の問題を処理する@aPyDeveloperのソリューションの組み合わせは、ここやWikiに投稿するのに最適です。

stty -gとのどちらかを選択しないようにするstty --saveために、ixオプションのみについて次のテストを試すことができます。

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

2

リンクを提供してくれた@Carpetsmokerに感謝します。

このスクリプトを追加すると、bash_profileうまくいきます。

vim()
{
    # osx users, use stty -g
    local STTYOPTS="$(stty --save)"
    stty stop '' -ixoff
    command vim "$@"
    stty "$STTYOPTS"
}

ここへのリンクです。http://vim.wikia.com/wiki/Map_Ctrl-S_to_save_current_or_new_files

の前のスペースも削除する必要がありました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.