這邊標題應該下的不是很好,其實問題和 gnome-teminal 應該是沒什麼關係的。
在 windows 透過 pietty (快換 putty 吧) 連上 server 時,都是直接用 Ctrl + 左/右 來切換 windows, .screenrc 設定方式如下:
bindkey 33[C next
bindkey 33[D prev
不過當 client 是 Ubuntu 時,在 gnome-terminal 操作時,Ctrl + arraow 卻完全沒有效果。後來友人提示在 screen 底下可以先 ctrl + V,再按下 key binding,screen 會把收到的 key code 顯示出來,方便 debug。嘗試了不少種組合都沒有成功。
當 Google 第一頁搜尋結果無法找到方法時,只好往第二頁找屍體。慢慢看到有人提到需要修改 /etc/inputrc 的設定:
# allow the use of the Home/End keys
"e[1~": beginning-of-line
"e[4~": end-of-line
# allow the use of the Delete/Insert keys
"e[3~": delete-char
"e[2~": quoted-insert
....
# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"e[1;5C": forward-word
"e[1;5D": backward-word
"e[5C": forward-word
"e[5D": backward-word
"ee[C": forward-word
"ee[D": backward-word
設定檔中間可以看到 Ctrl + arrow 已經被轉成 forward-word 等操作,把那幾行註解掉即可。
ps. 除了 ssh client 這邊的 inputrc 需要修改外,server side 若有 inputrc 也需要一起修改,不然 client 送過去的 key binding 還是會被 server 改掉。
感謝大大分享!!!
補一下,gnome-ternimal 的 signal 有一點差異:
bindkey "^[[1;5C" next
bindkey "^[[1;5C" prev