回答:
あなたは押すことができますCtrl- Alt- ereadlineの機能を実行するためにshell-expand-line
、エイリアス、歴史や単語展開を行います。一部のキーボードでMetaはそうではないことに注意してくださいAlt。Escその後、押す必要があるかもしれませんCtrl-e
関数alias-expand-line
とhistory-and-alias-expand-line
はデフォルトではバインドされていませんが、次のような行を~/.inputrc
ファイルに追加することでバインドできます。
"\e\C-l": alias-expand-line
これになるだろうCtrl- - Alt(l小文字「エル」)を行うのみエイリアス展開を。
"\C-i": "\e\C-l\e\e"
両方を実行するマクロ作成alias-expand-line
とをcomplete
。上記の回答のバインディングと、Esc-Escのデフォルトのバインディングがそのまま残っているかどうかに依存します。デフォルトの補完を行いたい場合は、Esc-Escを実行できます。
ESC C-e
BashではC-x a
機能しますが、Zsh では機能します。OS Xでもテスト済み
Control-x: history-and-alias-expand-line
。
これは実際にあなたがやろうとしていることを実行するはるかに簡単な方法かもしれません(bash
バージョン> = 4.2.29):
shopt -s direxpand
shopt -s expand_aliases
shopt
のman
ページ:https : //www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html
alias ll='ls -l
、シェルは 'll'をコマンド/関数 'll'として解釈しますが、これは存在しない可能性があります。
これは動作しません。しかし、私はあなたがやりたいことをするためにこのようなことができると推測しています/期待しています。独自の完了スクリプトを使用する必要があります。これはあなたがそれを作る方法です:
_ll()
{
COMPREPLY=(ls -l)
#The next line does not work. I just hope there were a way to replace that word
COMP_WORDS[COMP_CWORD-1]="ls -l"
}
complete -F _ll ll
完全なbash_completionファイル(http://caliban.org/bash)を入手し、上記のスクリプトを、URLから取得したスクリプトが参照するbash_completion.dディレクトリ内のファイルに配置します。うまくいかない場合は教えてください。
ありがとう。
zshをインストールしてシンプルなソリューションを探している人にとって、globaliasはあなたの友人かもしれません
すべてのグロブ式、サブコマンド、およびエイリアス(グローバルを含む)を展開します。
# .zsrc:
alias S="sudo systemctl"
$ S<space>
# expands to:
$ sudo systemctl
インストールするには、「globalias」を.zshrcプラグインリストに追加するだけです
plugins=(... globalias)
次に、を押し
SPACE
て、作成したコマンドの展開をトリガーします。コマンドラインを展開せずにスペースのみを挿入する場合は、
CTRL+SPACE