Terminal
螢幕會話中的控制台 vim:重新映射 Ctrl-Shift-Left、Ctrl-Shift-Right 以不刪除行
我有我的 gvim 設置,以便我可以使用 Ctrl-Shift-Right、Ctrl-Shift-Left 等逐字選擇(是的,我知道這是一個壞習慣,但它對我有用..)。
不幸的是,這些組合鍵在螢幕會話內的控制台 vim 中使用時會刪除文本。我相信這是因為這兩個組合鍵會在終端上產生程式碼
Esc``[1;6D
和Esc``[1;6C
,它們分別被解釋為“刪除接下來的 6 行”或“更改下一行”。有什麼方法可以阻止螢幕或控制台 vim 解釋這些組合鍵嗎?
更新:我的 .screenrc 的內容:
sessionname daku startup_message off hardstatus on hardstatus alwayslastline hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a "
很明顯,Vim 沒有鍵序列的綁定,
␛[1;6D
但有一個以 , 開頭的其他鍵序列的綁定(通常由鍵發送)。將重新映射添加到您的以聲明確實是++等等。我認為以下應該可以解決問題:␛[1``␛[1~``Home``.vimrc``␛[1;6D``Ctrl``Shift``Left
noremap <ESC>[1;6D <C-S-Left> noremap! <ESC>[1;6D <C-S-Left> noremap <ESC>[1;6C <C-S-Right> noremap! <ESC>[1;6C <C-S-Right>
這是我的
.vimrc
:function Allmap(mapping) execute 'map' a:mapping execute 'map!' a:mapping endfunction function Allnoremap(mapping) execute 'noremap' a:mapping execute 'noremap!' a:mapping endfunction call Allmap('<ESC>[6D <C-S-Left>') call Allmap('<ESC>[6C <C-S-Right>') call Allnoremap('<C-S-Left> <C-Left>') call Allnoremap('<C-S-Right> <C-Right>')