Эквивалент / Альтернативы для Alt + Dot в Mac

36

Одна вещь, которую мне не хватает в оболочке Linux - это сочетание клавиш Alt + Dot . Что он делает, это вставляет последний аргумент предыдущей команды. Это кажется тривиальной техникой, но она действительно полезна.

т.е. если вы наберете это:

$ ls /Applications/MAMP/conf/apache/

В следующий раз вам просто нужно набрать команду + ярлык, и аргумент будет завершен за вас.

$ cd 'alt+dot'

На Mac я знаю 2 альтернативы; нажав Esc + Dot или набрав ! $ , ! * с волшебной установки пространства .

Однако, хотя обе альтернативы вставляют последний использованный вами аргумент (аргументы), они не могут прокручивать историю команд назад, как это происходит при многократном вводе Alt + Dot .

Я могу жить с этими вариантами пока, но я хотел бы знать, знает ли кто-нибудь лучший способ сделать это.

pablasso
источник

Ответы:

21

Вы можете нажать клавишу Esc-dot много раз, она выполняет те же действия, что и alt-dot. Но, как и вы, я считаю, что печатать печатать гораздо сложнее, чем alt-dot.

simonp
источник
3
Я могу нажать на нее много раз, но это работает только в первый раз
pablasso
2
Неважно, ты прав. Вам просто нужно отпустить клавишу esc, чтобы снова нажать ее, затем она работает, как и ожидалось, прокручивая историю. Учитывая, что обработка ключа опции как мета портит некоторые другие ярлыки, это самое чистое решение.
Паблассо
1
Самый простой способ сделать это - проверить «Использовать ключ опции как мета» в настройках терминала, как описано в ответе Ричарда Хоскинса.
Ноктюрн
32

В Terminal.app, Настройки-> Настройки, выберите вкладку Клавиатура. Убедитесь, что установлен флажок «Использовать ключ опции как мета».

Ричард Хоскинс
источник
3
Кстати, я должен упомянуть, что, хотя это решает проблему alt + dot, он спутывает другие комбинации клавиш, такие как],} или |. Моя клавиатура (испанский) использует option + somekey для их ввода. Ну, вы не можете иметь все это.
Паблассо
7
Для iTerm откройте «Настройки», «Профили»> «Ключи», кнопка «Выбор опции» действует как +Escвнизу.
Иван Чау
5

Используйте option+.

Обратите внимание, что это особенность bash, а не linux. На Mac тоже есть удар. Alt-. является ярлыком для встроенной функции bash insert-last-argument. Прочтите раздел READLINE на странице руководства bash, чтобы узнать, как можно связать это с другой комбинацией клавиш.


Вклеиваем несколько релевантных частей:

   Readline Initialization
       Readline  is customized by putting commands in an initialization file (the
       inputrc file).
       The  default key-bindings may be changed with an inputrc file.  Other pro-
       grams that use this library may add their own commands and bindings.

       For example, placing

              M-Control-u: universal-argument
       or
              C-Meta-u: universal-argument
       into the inputrc would make M-C-u execute  the  readline  command  univer-
       sal-argument.

   Readline Key Bindings
       The  syntax  for  controlling  key bindings in the inputrc file is simple.
       All that is required is the name of the command or the text of a macro and
       a  key  sequence to which it should be bound. The name may be specified in
       one of two ways: as a symbolic key name, possibly with Meta-  or  Control-
       prefixes, or as a key sequence.

       When using the form keyname:function-name or macro, keyname is the name of
       a key spelled out in English.  For example:

              Control-u: universal-argument
              Meta-Rubout: backward-kill-word
              Control-o: "> output"

       In the above example, C-u is bound  to  the  function  universal-argument,
       M-DEL is bound to the function backward-kill-word, and C-o is bound to run
       the macro expressed on the right hand side (that is, to  insert  the  text
       ``> output'' into the line).

       In  the  second form, "keyseq":function-name or macro, keyseq differs from
       keyname above in that strings denoting an entire key sequence may be spec-
       ified  by placing the sequence within double quotes.  Some GNU Emacs style
       key escapes can be used, as in the following  example,  but  the  symbolic
       character names are not recognized.

              "\C-u": universal-argument
              "\C-x\C-r": re-read-init-file
              "\e[11~": "Function Key 1"


   Commands for Manipulating the History
       insert-last-argument (M-., M-_)
              A synonym for yank-last-arg.
Даг Харрис
источник
1
Спасибо, я знаю, что это функция bash, но ярлык не включен по умолчанию, по крайней мере, не в Terminal.app, поскольку по умолчанию мета-ключ отсутствует. Смотрите ответ Ричарда.
Паблассо
2

Если вы откроете Terminal.app и введете настройки, перейдите в «Настройки»> «Клавиатура» и отметите «Использовать опцию как мета-ключ», вы можете использовать сочетания клавиш bash, которые используют alt, например:

Alt+ B: Пропустить слово назад

Alt+ F: Пропустить слово вперед

Источник

Alain
источник
1
Добро пожаловать в Супер пользователя! Хотя это может теоретически ответить на вопрос, было бы предпочтительным включить здесь основные части ответа и предоставить ссылку для справки. На данный момент я отредактировал ответ для вас.
Der Hochstapler