題 如何在iTerm2中獲得控制+向左箭頭返回一個單詞?


我正在閱讀Linux手冊,我注意到它說我可以使用control + left和control + right在編輯時在終端中前進和後退單詞。

“按Ctrl鍵加上左或右箭頭鍵一次向後或向前移動一個單詞,按下Esc然後按B或F.

在OS X上 control+left 和 control+right 通常控制空間。我禁用了那些。我還嘗試使用首選項窗格來設置鍵盤快捷鍵:

enter image description here

enter image description here

但是這不起作用並導致此錯誤:

enter image description here

此外,如果我在iTerm並使用 alt+escape 然後B或F角色來回移動。這是在我的任何配置更改之前發生的。但我真的希望能夠使用控制+箭頭鍵。


102
2017-11-14 18:43


起源


順便說一句,實現這一目標的更簡約的方法可能只是將command + left和command + right映射到ctrl + left和ctrl + right。我不需要在系統範圍內禁用任何東西來完成此任務。 - Doctor Mohawk


答案:


慶典

只需添加以下內容即可 ~/.inputrc

"\e[1;5D": backward-word
"\e[1;5C": forward-word

看到 這個存檔的維基文章 進一步解釋。如果你想使用 ALT 鍵而不是單詞到單詞的移動(如默認的OS X行為),使用:

"\e[1;9D": backward-word
"\e[1;9C": forward-word

zsh的

zsh默認不使用 readline 圖書館因此不會閱讀 ~/.inputrc。要獲得相同的功能,您可以將以下內容添加到您的 ~/.zshrc  - 這將再次使用 ALT 鍵:

bindkey -e
bindkey '^[[1;9C' forward-word
bindkey '^[[1;9D' backward-word

看到 這個文件 有關內置zsh行編輯器(zle)的更多信息。


為什麼是這樣?您已將配置文件設置為使用Xterm默認值:

enter image description here

這就是為什麼你需要“捕捉”這個序列並告訴你 readline 該怎麼辦。


如果上面仍然無法使用並且您正在使用OS X 10.9(Mavericks)或那些,那麼您可能需要禁用全局任務控制快捷方式,以防止Control +箭頭鍵到達iTerm,即使Mission Control本身已被禁用。你可以這樣做 系統偏好設置→鍵盤→快捷方式→任務控制

mission control keyboard prefs


129
2017-11-14 19:15



我嘗試按照指令使alt + left和alt + right鍵工作。我將兩行添加到我的.inputrc文件中,但是當我按下鍵時發生的唯一事情是“D”或“C”被打印到shell。我正在使用iTerm2和zsh shell。有任何想法嗎? - Flo
@Flo嘗試添加行 bindkey -e, bindkey '^[[1;9C' forward-word 和 bindkey '^[[1;9D' backward-word 到你的 ~/.zshrc 代替。 IIRC zsh不會讀 .inputrc  - 或者至少它對我有用。 - slhck
使用ctrl-left / right + bash不適合我,但如果我將其設置為alt-left / right,則可以正常工作。 - Dalin
添加了有關Mission Control快捷方式的編輯,以防止任何此操作以最嚴重的不透明方式工作。希望它可以幫助某人避免經歷同樣的事情,我剛剛做了... - rubyruy
對於OSX + zsh + iTerm2 + ctrl-left / right,請使用以下命令: bindkey -e; bindkey '\e\e[C' forward-word; bindkey '\e\e[D' backward-word - Artur Bodera


zsh的工作解決方案。簡單,直接,開​​箱即用。

  1. 去: ⌘, Preferences → Profiles → Keys → Keyboard Behavior

  2. 加載預設: Natural Text Editing

Load Preset "Natural Text Editing"


33
2017-12-17 19:49



感謝@Happy Torturer,我相信這是最好的答案,主要是因為我沒有簡單的Terminal.app那個問題所以我不想修改bash / zsh,只想在Terminal.app中工作。 - galuszkak
這個,這個,這個。非常感謝你的解決方案!我已經完成了每個Mac的瘋狂過程。我現在知道實現這一目標的最簡單方法。謝謝! - vernonk


我用了不同的方法。運用 BetterTouchTool 我為iTerm2編寫了一個自定義鍵盤快捷鍵。當我在iTerm2中按下alt-left時,它會發送鍵盤快捷鍵ctrl-left,其動作為“將鍵盤快捷鍵發送到特定應用程序”。該應用程序是iTerm2。我做了相同的alt-right映射到ctrl-right。

效果是在iTerm中按下alt-left或alt-right直接向iTerm2發送ctrl-left或ctrl-right,繞過通常的系統範圍快捷方式向左或向右移動桌面。像這樣我在iTerm2中,在本地終端會話上,以及在遠程SSH會話上獲得典型的mac行為,我可以使用標準的ctrl-left / ctrl-right移動到不同的桌面。我在這裡寫了:

http://www.callum-macdonald.com/2013/04/17/ctrl-left-and-ctrl-right-on-iterm2/


7
2018-04-17 17:16



美麗!謝謝發帖! - Julian A.
BetterTouchTool不是開源的,很可能是你想做的事情。這傢伙說他是學生,但他也可以成為一個三字母代理商。 - revacuate


實際上,我發現最簡單的解決方案是轉到我的配置文件設置(在配置文件/密鑰中找到),刪除有問題的配置文件快捷方式(因為配置文件覆蓋了iTerm中的全局),在我的情況下alt + left和alt + right然後全局快捷方式對我來說非常合適!

此外,如果您使用OS X,最好堅持使用系統範圍的快捷方式,即使用alt + left和alt + right代替此目的,在終端中具有不同的行為最終會導致痛苦。

除了chmac使用Better Touch Tool的解決方案之外,這是一種優雅的方式來改變控制+箭頭在iterm中的行為。


7
2018-03-20 08:09



實際上這是最好的解決方案。這讓我們大多數人都感到困惑 Keys 標籤。相反,我們必須去 Profiles 選項卡 - >配置文件(例如默認) - >鍵。 - Paschalis
這絕對是最安全,最簡單的解決方案。 - revacuate


我這樣修好了:

在頂部菜單;去

Profiles 
-> Open profiles... 
-> Edit profiles... (button) 
-> Keys (tab) 
-> Load Preset... (dropdown) 
->  Choose "Natural text editing". Done! :-)

6
2017-11-30 16:22



我在該預設下的所有內容都是“出廠默認值” - MaylorTaylor


這篇文章教這個和其他快捷方式⌥←刪除刪除一個單詞:

http://elweb.co/making-iterm-2-work-with-normal-mac-osx-keyboard-shortcuts/


2
2018-06-02 14:51



這實際上沒有回答關於使用<ctrl> <left>的問題 - DavidPostill♦
您所要做的就是使用符合您需要的快捷方式。 “<ctrl> <left>”或任何你想要的。 - Sérgio Toledo
因此,請引用參考鏈接中答案的基本部分,因為如果鏈接頁面發生變化,答案將變為無效。 - DavidPostill♦


你需要進入 Profiles 選項卡並刪除映射 ALT+剩下 和 ALT+ 默認情況下,它輸出一些十六進制值。


1
2018-01-05 23:13



這樣做對我來說! - Philip