如何在從文件管理器或通過快捷方式啟動的終端應用程序中禁用 Ctrl+S?
我已經使用此處的說明在終端中成功禁用了
Ctrl
+ 。但是,如果我從“終端外部”啟動終端程序(即終端 vim),+仍然會凍結螢幕。S``Ctrl``S
我所說的“在終端之外”是什麼意思:
- 使用鍵盤快捷鍵執行類似
kitty -e vim
在終端中打開 vim 的操作- 使用vimserver從文件管理器啟動終端 vim,最後幾乎和上面一樣
有沒有解決的辦法?(除了改掉用
Ctrl
+不斷儲蓄的習慣S
;)(我不能也不想使用 gVim 是有原因的。
stty -ixon
從 vim 內部執行是行不通的,我敢肯定有充分的理由不這樣做——我對 stty 還不是很熟悉……)
將此添加到您的
~/.vimrc
:silent !stty -ixon
如果這會產生非 tty 之
vim
類的問題gvim
(不知道,無法對其進行測試),請嘗試以下操作:silent !test -t 0 && stty -ixon
看起來他們決定
-ixon
在最近版本的 vim 中設置預設值,所以這很快就會不再是 vim 的問題(請注意,問題發起者的原始更新檔是未經測試的垃圾,但最終更新檔是正確的)。通常(與其他程序一起),沒有通用的解決方案;-)
xterm 有一個
ttyModes
資源(和-tm
選項),可用於設置初始模式,但不支持-ixon
. 我認為kitty
甚至沒有。從 vim 內部執行
stty -ixon
不起作用這是因為
vim
在通過 執行外部命令之前恢復終端的初始(通常是非原始)狀態:!command
,然後在回复“按 ENTER 或鍵入命令”提示時將其更改回原始模式,因此執行的任何更改command
都將失去。作為額外的說明,在這個網站和其他地方傳播的常見民間傳說(這
^S
/只是從之前的時間和等^Q
的不合時宜的遺留物)是錯誤的;軟體流控制是您必須在沒有RTS/CTS 帶外信號的任何串列線路上使用的東西(尤其是在具有高波特率的線路上),並且在任何類型的虛擬 tty 上完全沒用。less``tmux
看到這個問題只是盲目地
IXON
關閉(在這種情況下由本地 tty 上的 ssh 客戶端)可能導致人們使用實際的串列線路連接到他們的設備。大多數呼叫cfmakeraw
(或完全複製它)的程序必然會以同樣的方式失敗(script(1)
這是第一個想到的)。