Mac中Alt + Dot的等效项/替代项


36

我从Linux shell中错过的一件事是Alt + Dot快捷方式。它的作用是插入上一个命令的最后一个参数。这似乎是一项琐碎的技术,但确实很有用。

即,如果您输入以下内容:

$ ls /Applications/MAMP/conf/apache/

下次您只需键入命令+快捷方式,参数将为您完成。

$ cd 'alt+dot'

在Mac上,我知道2种替代方法。按Esc + Dot或使用魔术空间设置输入!$!*

但是,尽管这两种选择都确实插入了您使用的最后一个参数,但是它们无法像重复键入Alt + Dot一样在命令历史记录中向后滚动。

我现在可以使用此选项,但是我很想知道是否有人知道更好的方法。

Answers:


21

您可以按Esc点很多次,它执行的操作与Alt点相同。但是,像您一样,我发现键入要比alt点更麻烦。


3
我可以按很多次,但它第一次起作用
pablasso

2
没关系,你是对的。您只需要释放esc再按一次即可,然后按预期方式浏览历史记录。由于将选项键视为meta会混淆其他一些快捷方式,因此这是最干净的解决方案。
pablasso

1
如Richard Hoskins的回答所述,最简单的方法是在“终端”首选项中选中“将选项密钥用作元”。
Nocturne 2014年

32

在Terminal.app的“首选项”->“设置”中,选择“键盘”选项卡。确保选中“将选项密钥用作元”。


3
顺便说一句,我应该提一下,虽然这解决了alt + dot问题,但它弄乱了另一个键盘组合,如],}或|。我的键盘(西班牙语)使用option + somekey进行键入。好吧,你不能拥有全部。
pablasso

7
对于iTerm,打开“首选项”,“配置文件”>“键”,“选择”选项键充当+Esc底部的角色。
Ivan Chau

5

使用option+.

请注意,这是bash而非Linux的功能。Mac也受到打击。Alt- 是内置bash函数的快捷方式insert-last-argument。阅读bash手册页READLINE部分,以了解如何将其绑定到其他按键组合。


粘贴一些相关的部分:

   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中不会启用,因为默认情况下没有meta键。请参阅Richard的答案。
pablasso

2

如果打开Terminal.app并输入首选项,然后转到“设置”>“键盘”并选中“将选项用作元键”,则可以使用使用alt的bash快捷方式,例如:

Alt+ B:向后跳过单词

Alt+ F:向前跳过单词

资源


1
欢迎来到超级用户!虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。现在,我为您编辑了答案。
Der Hochstapler,2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.