端末で作業するときは、現在のプロンプトから最後の行の最後の引数を挿入することが⌥.(他の多くの場合と同様に)便利であることがわかりました。alt.ただし、最後の行をコメントアウトすると機能しません(家庭set -o interactivecomments
)。
正確なユースケースは考えられませんが、これは何度も起こりました。実行する前に実現したコマンドが当時必要でなかったことに気づき、そのコマンドの最終パラメータを後続のコマンドに入力したかったのです。 。
私はコメントアウトされたすべてを無視するロジックがあることを知っています。なぜなら、それは決して解釈されず、したがってそれらのどれもパラメータとして表示されないからです。しかし、私が望むことをする方法はありますか?
私が望むものを実行する代替コマンドにバインドされている別のキーストロークを使用する必要がある場合は理想的ではありませんが、使用できます。
私はZshを使用していますが、Bashソリューションが機能する可能性があり、Zshで実行する必要がある作業に近いかもしれません。
ベストアンサー1
このコマンドをコメントアウトしないでください。
:
代わりに を前に置くと、#
コマンドテキスト引数になります。nullユーティリティ:
、実行時に何もしない。引数は依然としてコマンドなので、タグ付けされ解析されますが、他の処理は実行されません。
場合によっては、これは不適切です。特にコマンドを評価する場合はそうです。それ自体副作用があります。簡単な例は次のとおりです。コマンドの置き換え:
$ : log $(find -print -delete) --target /var/run/cache
この場合、元のコマンド自体は実行されなくても、内部コマンドが$(...)
実行され、引数に置き換えられます。:
ダメージが少ない場合は${foo:=default}
パラメータ拡張、値を割り当てる副作用があります$foo
。
最後に、リダイレクトまたはパイピングが引き続き発生します。
$ : foo > outfile
$ : bar | grep x | ...
どちらの場合も、空の出力が宛先に送信され、ファイルを切り捨てたり生成したり、後続のコマンドを実行したりして、空の入力が気に入らないことがあります。
コマンドに関する特別な懸念がない場合は、これは完全に安全であり、次のことができます。扱いにくい、吹くそしてすべてのPOSIX互換シェル(ただし、後続のalt-.アクションはどこでも動作しません)
目的の最後の単語の場合、zshはコマンドラインを操作するために使用できるカスタマイズ可能なキーバインディングとコマンドを提供します。bindkey '^K' kill-region
その単語の前に戻ることができる場合は、行の先頭までCtrl-eraseを使用すると、safeコマンドを使用して興味のある単語を残すことができます。K: