Как мне получить управление + стрелка влево, чтобы вернуться на одно слово в iTerm2?

114

Я читал руководство по Linux и заметил, что в нем сказано, что я могу использовать control + left и control + right для перемещения вперед и назад в терминале во время редактирования.

«Нажатие клавиши Ctrl и клавиши со стрелкой влево или вправо перемещает слово назад или вперед за раз, как и нажатие клавиши Esc, а затем B или F.»

На OS X control+leftи control+rightнормально контролируют пробелы. Я отключил их. Я также попытался использовать панель настроек для установки сочетаний клавиш:

введите описание изображения здесь

введите описание изображения здесь

Однако это не работает и вызывает эту ошибку:

введите описание изображения здесь

Кроме того, если я нахожусь в iTerm и использую alt+escapeтогда B или F, персонаж перемещается вперед и назад. Это происходило до того, как мои изменения в конфигурации. Но я бы очень хотел иметь возможность использовать управление + клавиши со стрелками.

УХО
источник
Между прочим, более экономным способом достижения этого может быть просто сопоставить команду + left и command + right вместо ctrl + left и ctrl + right. Мне не нужно было отключать что-либо в масштабе всей системы, чтобы добиться этого.
Доктор Ирокез

Ответы:

135

удар

Просто добавьте следующее ~/.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 по умолчанию не использует readlineбиблиотеку и поэтому не читает ~/.inputrc. Чтобы получить ту же функциональность, вы можете добавить следующее к вашему ~/.zshrc- это снова будет использовать altключ:

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

См. Эту документацию для получения дополнительной информации о встроенном редакторе zsh-строк (zle).


Почему это? Вы настроили свой профиль для использования значений по умолчанию Xterm:

введите описание изображения здесь

Вот почему вам нужно «поймать» эту последовательность и сказать, readlineчто делать.


Если вышеупомянутое все еще не работает, и вы используете OS X 10.9 (Mavericks) или там, где-то рядом, вам, вероятно, нужно отключить глобальные сочетания клавиш управления полетами, которые не позволяют клавишам Ctrl + стрелка достигать iTerm, даже если само управление полетами отключено. Вы можете сделать это из Системных настроек → Клавиатура → Сочетания клавиш → Управление полетом :

настройки клавиатуры для управления полетом

slhck
источник
4
Я пытаюсь следовать инструкции, чтобы заставить работать клавиши alt + left и alt + right. Я добавил две строки в мой файл .inputrc, но единственное, что происходит, когда я нажимаю клавиши, это то, что либо «D», либо «C» печатается в оболочке. Я использую iTerm2 с оболочкой zsh. Есть идеи?
Flo
1
@Flo Попробуйте добавить строки bindkey -e, bindkey '^[[1;9C' forward-wordи bindkey '^[[1;9D' backward-wordв вашей ~/.zshrcвместо этого. IIRC zsh не читает .inputrc- или, по крайней мере, у меня так работает.
slhck
2
Не работает для меня ctrl-left / right + bash, но работает нормально, если я настроил его для alt-left / right.
Далин
3
Добавлена ​​правка о ярлыках управления полётами, которая мешала работать самым непрозрачным образом. Надеюсь, это спасет кого-то от того же, что я только что сделал ...
rubyruy
12
Для OSX + zsh + iTerm2 + ctrl-left / right используйте следующее:bindkey -e; bindkey '\e\e[C' forward-word; bindkey '\e\e[D' backward-word
Артур Бодера
46

Рабочий раствор для зш. Простой, понятный, из коробки.

  1. Перейти к: ⌘, Preferences → Profiles → Keys → Keyboard Behavior

  2. Загрузить пресет: Natural Text Editing

Загрузить пресет "Редактирование естественного текста"

Счастливый мучитель
источник
Спасибо @Happy Torturer, я считаю, что это лучший ответ в основном потому, что у меня нет обычного Terminal.app этой проблемы, поэтому я не хочу изменять bash / zsh, просто хочу работать так же, как в Terminal.app.
galuszkak
Это, это, это. Большое спасибо за это решение! Я прошел этот сводящий с ума процесс с каждым Mac, который я получаю. Теперь я знаю самый простой способ сделать это. Спасибо!
Вернонк
8

Я исправил это так:

В верхнем меню; перейти к

Profiles 
-> Open profiles... 
-> Edit profiles... (button) 
-> Keys (tab) 
-> Load Preset... (dropdown) 
->  Choose "Natural text editing". Done! :-)
rassom
источник
все, что у меня есть под этой предустановкой - «Заводские настройки»
MaylorTaylor
7

Я использовал другой подход. Используя BetterTouchTool, я запрограммировал специальное сочетание клавиш для iTerm2. Когда я нажимаю alt-left в iTerm2, он отправляет сочетание клавиш ctrl-left с действием «Отправить сочетание клавиш для конкретного приложения». Приложение iTerm2. Я сделал то же самое для alt-right, сопоставленного ctrl-right.

Эффект заключается в том, что нажатие alt-left или alt-right в iTerm отправляет ctrl-left или ctrl-right непосредственно в iTerm2, минуя обычный общесистемный ярлык для перемещения рабочего стола влево или вправо. Таким образом, я получаю типичное поведение mac в iTerm2, на локальных терминальных сессиях, но также и на удаленных сессиях SSH, и я могу использовать стандартный ctrl-left / ctrl-right для перемещения на другие рабочие столы. Я написал это здесь:

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

chmac
источник
2
BetterTouchTool не является открытым исходным кодом и вполне может делать то, что вам не хотелось бы. Парень говорит, что он студент, но с таким же успехом может быть агентством из трех писем.
эвакуировать
7

На самом деле, я обнаружил, что самым простым решением было перейти к настройкам моего профиля (находится в разделе «Профили / ключи»), убрав ярлыки профиля, вызывающие проблемы (поскольку профиль переопределяет глобальный в iTerm), в моем случае alt + left и alt + right, а затем глобальный ярлыки отлично сработали для меня!

Кроме того, если вы используете OS X, вероятно, лучше придерживаться общесистемных сочетаний клавиш, то есть вместо этого использовать alt + left и alt + right вместо этого, поскольку в терминале другое поведение в конечном итоге неизбежно вызовет боль.

Кроме того, решение chmac использовать Better Touch Tool было элегантным способом изменить поведение control + arrow только в iterm.

nayyarv
источник
на самом деле это лучшее решение. Это сбивает с толку, так как большинство из нас переходят на Keysвкладку. Вместо этого мы должны перейти на Profilesвкладку -> Профиль (например, по умолчанию) -> ключи.
Paschalis
Это определенно самое безопасное и простое решение.
эвакуировать
2

Этот пост учит этому и другим ярлыкам te ← Удалить, чтобы удалить слово:

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

Seralto
источник
Это фактически не отвечает на вопрос, который касается использования <ctrl> <left>
DavidPostill
Все, что вам нужно сделать, это использовать ярлык, который соответствует вашим потребностям. "<ctrl> <left>" или что вы хотите.
Серальто
1
Поэтому, пожалуйста, указывайте основные части ответа по ссылочной ссылке (ссылкам), так как ответ может стать недействительным, если связанные страницы изменятся.
DavidPostill
1

Вам нужно перейти на Profilesвкладку и удалить отображение для alt+ leftи alt+, так rightкак по умолчанию выводятся некоторые шестнадцатеричные значения.

Sid
источник
Это сделало это для меня!
Филипп