5
noremap <C-S> :update<CR>      
vnoremap <C-S> <ESC>:update<CR>
inoremap <C-S> <ESC>:update<CR>

これらは、バッファを保存することによって Vim が Ctrl+S に応答するように設定したバインドです。私はこれを実際には使用しませんが、離乳のオン/オフや他のエディターとのやり取りの短い期間には非常に便利です。

とにかく、次のようなバインドを使用しても、Vim がコマンドライン モード (:コマンドまたは/検索の入力) のときに Ctrl+S を押すと失敗する場合があります。

noremap! <C-S> <ESC>:update<CR>

それは基本的にコマンドエントリを終了し(明らかに、コマンドまたは検索を送信します。これは、! をバインドしても望ましく<ESC>ありません)、実行に失敗します:update

Vim をコマンド ライン モードのままにしてバインドを使用している場合、どうすれば動作させることができますか?

4

1 に答える 1

5

解決策は、Ctrl+C入力したものを強制的にキャンセルするために使用することです。これにより、次のメッセージが正常に発行されます:update

cnoremap <C-S> <C-C>:update<CR>

警告: ターミナル/シェル設定を構成して、Ctrl+S が一時的にキーの受け入れを停止する "XOFF" シグナルを送信しないようにする必要があります (その後、Ctrl+Q でオフになります)。これは、シェルまたは端末クライアントのいずれかで構成することでおそらく十分な 1 回限りの構成です。

于 2013-07-15T21:01:37.930 に答える