Як я можу отримати керування + стрілка ліворуч, щоб повернути одне слово назад в iTerm2?


114

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

"Натискання клавіші Ctrl плюс клавіша зі стрілкою вліво або вправо одночасно переміщає слово назад або вперед, як і натискання клавіш Esc, а потім B або F."

В ОС X control+leftі control+rightзазвичай керують просторами. Я їх відключив. Я також спробував використовувати панель налаштувань, щоб встановити комбінації клавіш:

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

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

Однак це не працює і викликає цю помилку:

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

Крім того, якщо я перебуваю в iTerm і використовую, alt+escapeтоді B або F символ пересувається вперед і назад. Це відбувалося перед будь-якими змінами мого конфігурації. Але я дуже хотів би мати можливість керування + клавіші зі стрілками.


До речі, більш парсимонічним способом досягти цього може бути просто зіставити команду + ліворуч та команду + право замість ctrl + ліворуч та ctrl + праворуч. Для цього мені не потрібно було відключати нічого системного.
Доктор Мохаук

Відповіді:


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) або там немає, вам, ймовірно, потрібно вимкнути глобальні ярлики управління місією, які не дозволяють клавішам Control + досягати iTerm, навіть якщо сам Mission Control відключений. Це можна зробити за допомогою системних налаштувань → клавіатура → ярлики → контроль місії :

преф. клавіатура управління місією


4
Я намагаюся слідувати інструкції, щоб працювати клавіші alt + ліворуч та 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
Додано редагування про ярлики управління місією, які запобігають роботі будь-якого з них у найбільш обтяжуючий спосіб. Сподіваємось, це рятує когось від того, щоб пройти те саме, що я щойно зробив urgh ...
rubyruy

12
Для OSX + zsh + iTerm2 + ctrl-вліво / вправо використовуйте наступне:bindkey -e; bindkey '\e\e[C' forward-word; bindkey '\e\e[D' backward-word
Артур Бодера

45

Робочий розчин для zsh. Простий, простий, нестандартний.

  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! :-)

Все, що у мене є під цією попередньою установкою, - це "Заводські
настройки

7

Я використовував інший підхід. За допомогою BetterTouchTool я запрограмував користувацьку комбінацію клавіш для iTerm2. Коли я натискаю клавішу alt-вліво в iTerm2, вона надсилає комбінацію клавіш ctrl-left з дією "Надіслати ярлик клавіатури до конкретного додатку". Додаток - iTerm2. Я робив те ж саме для alt-right, відображеного на ctrl-right.

Ефект полягає в тому, що натискання клавіш alt-ліворуч або alt-right в iTerm надсилає ctrl -ліво або ctrl-право безпосередньо до iTerm2, минаючи звичайну ярлик у всій системі для переміщення робочого столу вліво або вправо. Як це я отримую типову поведінку mac в iTerm2, на локальних сеансах терміналів, а також на віддалених сесіях SSH, і я можу використовувати стандартний ctrl-зліва / ctrl-право для переміщення на різні настільні комп’ютери. Я написав це тут:

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


2
BetterTouchTool не є відкритим кодом і може дуже добре робити те, що ви хочете, щоб цього не було. Хлопець каже, що він студент, але він так само міг би бути агентством з трьома листами.
відновити

7

Насправді я знайшов найпростіше рішення - перейти до налаштувань мого профілю (знайдених у Профілях / Ключах), видаливши ярлики профільного профілю (оскільки профіль переосмислює глобальний характер в iTerm), у моєму випадку alt + ліворуч і alt + право, а потім глобальне ярлики прекрасно працювали для мене!

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

Окрім цього рішення chmac щодо використання інструменту Better Touch, було елегантним способом змінити поведінку управління + стрілка лише в iterm.


насправді це найкраще рішення. Це заплутано, оскільки більшість із нас переходить на Keysвкладку. Замість цього нам потрібно перейти до Profilesвкладки -> Профіль (наприклад, за замовчуванням) -> клавіші.
Пасхаліс

Це, безумовно, найбезпечніше і найпростіше рішення.
відновити

2

Ця публікація навчає цього та інших ярликів як ⌥ ← Видалити, щоб видалити слово:

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


Це фактично не відповідає на питання, що стосується використання <ctrl> <left>
DavidPostill

Все, що вам потрібно зробити, - це використовувати ярлик, який відповідає вашим потребам. "<ctrl> <left>" або що завгодно.
Сералто

1
Тому, будь ласка, цитуйте основні частини відповіді з посилань (ів), оскільки відповідь може стати недійсною, якщо змінені сторінки зміняться.
DavidPostill

1

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


Це зробив це для мене!
Філіп
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.