簡體   English   中英

Vim:映射在命令行模式下可用的鍵序列

[英]Vim: Mapping a key sequence that works in command-line mode

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留在命令行模式但仍使用綁定,如何使它工作?

解決方案是使用Ctrl+C強制取消所有輸入內容。 這可以成功發出以下:update

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

提示:您需要配置終端/外殼程序設置,以確保Ctrl + S不會發送“ XOFF”信號,這會使其暫時停止接受鍵(然后通過Ctrl + Q關閉)。 這是一次性配置,通過在Shell或終端客戶端上進行配置可能就足夠了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM