MacでのAlt + Dotの同等/代替


36

Linuxシェルで見逃していることの1つは、Alt + Dotショートカットです。前のコマンドの最後の引数を挿入します。それは些細なテクニックのように見えますが、本当に便利です。

すなわち、これを入力した場合:

$ ls /Applications/MAMP/conf/apache/

次回コマンドとショートカットを入力するだけで、引数が完成します。

$ cd 'alt+dot'

Macでは、2つの選択肢があります。Esc + Dotを押すか、マジックスペースセットアップ!$!*を入力します

ただし、どちらの選択肢も最後に使用した引数を挿入しますが、Alt + Dotを繰り返し入力するようにコマンド履歴をスクロールバックすることはできません。

私は今のところこのオプションで生きることができますが、誰かがそれを行うより良い方法を知っているかどうかを知りたいです。

回答:


21

Esc-dotを何度も押すことができます。alt-dotと同じことができます。しかし、あなたと同じように、alt-dotよりも入力するのが面倒です。


3
私は何度も押すことができますが、それは最初に動作するだけです
パブラソ2009

2
気にしないで、あなたは正しい。escを放してもう一度押すだけです。その後、期待どおりに履歴をスクロールします。オプションキーをメタとして扱うと他のショートカットが台無しになるので、これが最もクリーンなソリューションです。
パブラソ09

1
これを行う最も簡単な方法は、Richard Hoskinsの回答で説明されているように、ターミナル設定で「メタとしてオプションキーを使用」をチェックすることです。
ノクターン14

32

Terminal.appの[設定]-> [設定]で、[キーボード]タブを選択します。「オプションキーをメタとして使用する」がチェックされていることを確認します。


3
ところで、これはalt + dotの問題を解決しますが、]、}、|などの別のキーボードの組み合わせを台無しにしてしまうことに言及する必要があります。私のキーボード(スペイン語)はoption + somekeyを使用して入力します。まあ、あなたはそれをすべて持つことはできません。
パブラソ09

7
iTermの場合は、[設定]、[プロファイル]> [キー]を開き、オプションキーの選択+Escが下部のように機能します。
イヴァンチャウ14

5

option+を使用.

これはbashの機能であり、Linuxの機能ではないことに注意してください。Macにもbashがあります。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ではショートカットはデフォルトで有効になっていません。リチャードの答えをご覧ください。
パブラソ09

2

Terminal.appを開いて設定を入力し、[設定]> [キーボード]に移動して[メタキーとしてオプションを使用する]をオンにすると、altを使用するbashショートカットを使用できます。次に例を示します。

Alt+ B:単語を後方にスキップ

Alt+ F:単語を前方にスキップ

ソース


1
スーパーユーザーへようこそ!これは理論的には質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう。今のところ、私はあなたのために答えを編集しました。
デアホッホステープラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.