[英]How to get Cmd-left/right working with iTerm2 and Vim (without requiring .vimrc changes)?
我希望能夠使用 Option-left 和 Option-right 在 Vim 中跳過單詞(和 Cmd-left/right 轉到行的開頭和結尾),就像在我的 shell 提示符下一樣。 我的 Iterm2 首選項有映射來執行此操作(例如Option-left
到Esc-H
和一個option-right
到Esc-F
以跳過單詞),這在本地 shell 中或當 ssh 到遠程服務器時有效.
當我在本地或遠程使用 Vim 時, option-left
有效,但option-right
無效。 我懷疑這是因為 Vim 自然會監聽Esc-H
,而不是Esc-F
。 我可以通過將 .vimrc 文件修改為Esc-b
到b
和Esc-f
到f
來解決這個問題,但我不想對我連接的每個服務器都這樣做。
同樣,我對 Cmd-left/right 有相同的所需設置,用於轉到行的開頭和結尾。 我可以通過 Iterm2 映射(例如Cmd-left
到Esc-[h
)在 shell 中實現它,但是除非我再次映射鍵(例如Esc-[h
到^
),Vim 根本不會對此做出響應。
更新:我剛剛想出了如何讓 option-left/right 工作。 我將 iTerm2 中的映射分別更改為 escape- escape-[1;5D
和escape-[1;5C
。 我仍然想解決 Cmd-left/right 問題(我改變了我的問題標題以反映這一點)。 有任何想法嗎?
為了模仿 OS X 將Cmd-left/right
發送到行首/尾的行為,我在 iTerm2 中添加了以下映射:
Cmd-left
轉義序列[1~
Cmd-right
轉義序列[4~
為了模仿 OS X 將Option-left/right
發送到上一個/下一個單詞的行為,我在 iTerm2 中添加了以下映射:
Option-left
轉義序列[1;5D
Option-right
[1;5C
特別感謝這篇博文追蹤我在cmd-left/right
映射中遺漏的內容
FWIW,在 Mac OS X 10.7.3 上的 iTerm 2 1.0.0.20120203 上,dolan 的回答對我不起作用。 當我按下快捷鍵時,他的解決方案僅將~
和5D
/ 5C
插入到我的終端中。
相反,我使用了以下解決方案:
Cmd-left/right
: iTerm 2: 如何設置鍵盤快捷鍵跳轉到行首/行尾?
Option-left/right
以及option-delete
: http : //hackaccident.blogspot.co.at/2007/07/skip-to-next-or-previous-word-in-iterm.html
YMMV,不確定為什么一組解決方案有效,而另一組無效
我沒有 MacOS,所以我不能確切地知道你的情況,但我認識到其他操作系統的問題。
基本上,這意味着終端發送 vim 無法理解的鍵碼。 我過去通過做修復了它
TERM=something
export TERM
在調用 vim 之前
例如,為了在 AIX 5.3 上通過 Putty/screen 獲得所有鍵和語法突出顯示,我需要使用
TERM=iris-ansi vim
如果您傳遞了錯誤的 TERM,則有一個內置終端類型列表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.