iTerm - переход на одно слово вперед и назад

166

Можно ли настроить iTerm 2 для перехода назад и вперед на одно слово по текущему тексту в командной строке с помощью сочетания клавиш?

синтагма
источник
14
Это на самом деле не отвечает на вопрос, но это актуально: вы можете нажать + опция в любом месте командной строки, чтобы переместить курсор туда.
Дэвид Винецкий
Downvoting не принимать правильный ответ
ПИ-
@ Pi- Почему вы считаете, что принятый ответ не является правильным? 1. Он появился почти за 3 года до того, как набрал большинство голосов. 2. Представляет решение, которое не работает по умолчанию.
синтагма

Ответы:

48

Ctrl-[ bпрыгает назад слово. Вы также можете использовать Escвместо или Ctrl-[, и fидти вперед.

Это Ctrl+ [релиз, а затем bили f. Или Escи bили f.

Дополнительную информацию можно найти в этом другом обсуждении на AskDifferent.

Вольск
источник
3
Было бы лучше, если бы был способ быстро вернуться к множеству слов, удерживая нажатой кнопку, а не вводить последовательность клавиш для каждого слова.
user1717828
Что такое "Ctrl- ["?
Шихао Сюй
Под «Ctrl- [» я имею в виду одновременное нажатие клавиш «Ctrl» и «[».
Вольск,
329

Убить муху из пушки:

  • Перейдите в Настройки ... > Профили > Ключи
  • Нажмите Загрузить предустановку ...
  • Выберите Естественное редактирование текста

Затем вы можете переместить слово назад с помощью Option ⌥+ и слово вперед с помощью Option ⌥+ , перейти к началу строки с помощью fn+ и к концу строки с помощью fn+ . Также вы можете удалить слово назад, используя Option ⌥+ , удалить всю строку, используя Command ⌘+ .

Если пресет не появляется, переустановите iTerm2. Если вы установили его с помощью Homebrew + Cask:

brew cask reinstall iterm2
Рикардо Стювен
источник
49
Это должен быть принятый ответ!
Гайарад
3
Это не работает для меня. Параметры: iTerm2 3.1.2, macOS 10.12.6, немецкая клавиатура. И я не одинок ...
t0r0X
2
Это здорово и добавит большинство ваших потребностей. Однако он не добавляет «начало / конец строки с помощью CMD + стрелка влево / стрелка вправо». Информацию об этом действии смотрите: stackoverflow.com/questions/6205157/…
MikeyN0
38
Моя жизнь изменилась после того, как я увидел этот ответ. Я развелась с женой, теперь я в Ламбо с супермоделью.
Драгос Ризеску
12
Обратите внимание, что это «Настройки»> « Профили» > «Ключи»> «Загрузка настроек», а не «Настройки»> «Ключи»> «Настройки загрузки»
kevin,
148

Мне нравится следующая настройка.

  1. Предпочтения> Ключи (или Предпочтения> Профили> Ключи)
  2. Нажмите на плюс.

двигаться вперед на одно слово

option+right
send escape sequence
f

вернуться на одно слово

option+left
send escape sequence
b

удалить до начала слова ( кредит )

option+delete
send hex code
0x1B 0x08

удалить до конца слова

fn+option+delete
send escape sequence
d

(Я точно не помню, но я думаю, что скопировал этот ответ из ответа Джеррана ниже и добавил к нему больше. Я должен был добавить дополнительную информацию в комментариях или предложить изменения этого ответа. Я не знаю, как улучшить ситуация, но теперь это известно.)

Дэвид Винецки
источник
2
В MacOS 10.12 мне нужно использовать шестнадцатеричный код 0x17 для удаления до начала слова
мидопа
работает как шарм с macOS 10.12 и zsh
Себастьян
1
лучший ответ, когда-либо у вас есть пиво от меня :)
бесконечность
1
Подумайте над ответом Джеррана. Я думаю, что я немного улучшил их ответ и, вероятно, должен был предложить редактирование вместо того, чтобы создавать свой собственный ответ. Я чувствую, что украл это.
Дэвид Винецкий
Ссылался на это : чтобы сделать Esc-b, я должен был отправить 0x1b 0x42, а для Esc-f я должен был отправить 0x1b 0x46: D
Мередит
36

Чтобы перейти вперед (Alt-f), назад (Alt-b) и удалить (Alt-d) слово

  1. Откройте iTerm.
  2. Перейдите в iTerm> Настройки ...> Профили> Ключи
  3. В разделе «Сочетания клавиш профиля» нажмите знак «+».
  4. Введите комбинацию клавиш (опция-b, опция-f, опция-d, опция-левая и т. Д.)
  5. В качестве действия выберите «Отправить Escape-последовательность».
  6. Напишите b, d или f в поле ввода.

Это работает по крайней мере для Bash. Для zsh есть другие способы навигации.

jherran
источник
2
Я попытался добавить опцию + правый ярлык и получил предупреждение о конфликте, потому что я не понимал, что вы можете настроить ключи как в «Предпочтения»> «Ключи»> «Глобальные сочетания клавиш», так и в «Установках»> «Профили»> «Ключи»> «Сочетания клавиш профиля». Настройка его в профиле по умолчанию сработала.
Дэвид Винецки
1
Это работает и для Zsh!
Андрей Абрамов
2
Я думаю, что ваш ответ (к тому же решению) был самым простым для понимания +1
nzaleski
1
Очень полезное объяснение.
Конти
Отлично. Вы также можете использовать Ctrl + F и т. Д., Чтобы клавиша «Alt» находилась в том же положении, и при переключении между ПК и Mac не требуется никаких настроек.
Friederbluemle
12

Подобно другим ответам, но для Zsh мне потребовалось некоторое время, чтобы найти это:

Если вы используете Zsh, например Oh My Zsh, в iTerm, перейдите по ссылке: Предпочтения> Профили > Подменю «Ключи»

Нажмите + знак

Добавьте комбинацию клавиш, выберите «Отправить Escape-последовательность»

входы слева и справа внизу.

оставил:

[1;5D

правильно:

[1;5C
bdanin
источник
1
Ты спас мою жизнь, приятель
Тибо Ной
Это единственное решение, которое сработало для меня
Bryji
Наконец, простое решение, которое работает: D Спасибо, что поделились им с нами!
Перибак
Это должно быть ответом. Upvoted.
Эхимэ
2

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

Открыть настройки

Настройка левой (и / или) правой опции ключа для отправки Esc +

Если вы запутались в своих пресетах, вам может понадобиться загрузить пресет по умолчанию (будьте осторожны, это может стереть ваши пользовательские комбинации клавиш!)

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

Если после этого вы увидите странные символы, вам может потребоваться настроить ~ / .inputrc или / etc / inputrc

Добавьте это к вашему ~ / .inputrc:

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

полный пример inputrc:

# /etc/inputrc - global inputrc for libreadline
# See readline(3readline) and `info rluserman' for more information.

# Be 8 bit clean.
set input-meta on
set output-meta on

# To allow the use of 8bit-characters like the german umlauts, uncomment
# the line below. However this makes the meta key not work as a meta key,
# which is annoying to those which don't need to type in 8-bit characters.

# set convert-meta off

# try to enable the application keypad when it is called.  Some systems
# need this to enable the arrow keys.
# set enable-keypad on

# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys

# do not bell on tab-completion
# set bell-style none
# set bell-style visible

# some defaults / modifications for the emacs mode
$if mode=emacs

# 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 "page up" and "page down" to step to the beginning/end
# of the history
# "\e[5~": beginning-of-history
# "\e[6~": end-of-history

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward

# 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
"\e\e[C": forward-word
"\e\e[D": backward-word

$if term=rxvt
"\e[7~": beginning-of-line
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word
$endif

# for non RH/Debian xterm, can't hurt for RH/Debian xterm
# "\eOH": beginning-of-line
# "\eOF": end-of-line

# for freebsd console
# "\e[H": beginning-of-line
# "\e[F": end-of-line

$endif
yosefrow
источник
1
Отлично ... ткс.
Пайварик
Нет проблем! Рад, что это помогает :)
yosefrow
2

Вы можете set -o viперевести свой терминал в режим vi, чтобы использовать обычные команды vi motion (добавьте строку, .bash_profileчтобы сохранить настройки навсегда).

Таким образом, как если бы в vi вы могли нажать Esc, затем bпереместиться на одно слово назад ( wвперед), перейти в начало строки с помощью 0или найти символ назад с помощью F+ символа.

Нажмите, iчтобы вернуться в обычный режим и вставить.

Те, кто знаком с vi, могут сделать гораздо больше. Шпаргалку можно найти здесь .

sebnukem
источник
2
Вим решает все! : D
Брено Сальгадо
Нажатие Escзатем, Iчтобы просто перейти к началу строки, немного менее удобно, чем Ctrl-a- этот вариант использования часто случается, когда вы просто хотите изменить имя команды. Поэтому я использую режим vi с некоторыми изменениями привязки клавиш в iTerm2 для отображения Ctrl-Aи аналогично escape-последовательности Esc+0. Таким образом, эти случаи еще быстрее, так как это заканчивается в режиме редактирования.
rfabbri
-1

С iTerm2 3.1.4 я смог настроить следующее без добавления индивидуальных сопоставлений клавиш.

  1. Перейдите в « Настройки»> «Профили»> «Ключи»
  2. Влево / Вправо ⌥ Клавиша: выберите Esc +

С новым терминальным сеансом вы теперь можете использовать:

Option ⌥+ fполучить вперед

Option ⌥+ bполучить вперед

Option ⌥+ Delete ⌫Удалить слово

Fate.AKong
источник
2
Как это отличается от другого высоко оцененного ответа? apple.stackexchange.com/a/293988/237
user151019