シェルプロンプトでzshの行をコメントアウトする簡単で安全で信頼性の高い方法はありますか?

シェルプロンプトでzshの行をコメントアウトする簡単で安全で信頼性の高い方法はありますか?

命令を打った後に最初に別のことをしなければならないことに気づくことが多く、すべてを覚えてすべてのパラメータを把握したり、後で再入力したくないので、通常最初#に履歴に保存しておくので、私は分を使うことができます。

setopt interactivecomments通常、.zshrcですでにその機能を有効にしていますが、設定されていsudoない操作を実行するために一部のサーバーで共有アカウントを使用する必要があるため、その行の#前に追加すると迷惑な応答が表示されることがあります。

zsh: command not found: #

大丈夫です。ただ使用すれば良いと思うかもしれませんが、:それほど簡単ではありません。

$ : do_thing "1" && do_thing "2" && do_thing "3"

do_thing "2" && do_thing "3"場合によってはあまり問題ではないかもしれませんが、このような場合はどうですか?

$ : cd /some/deeply/nested/directory && rm -rf *

ほとんどのコマンドはそうではありません。だから有害です。しかし、この場合は、私が入力したコマンドを実行する前に他のタスクを実行する必要があることに気付くので、常にコマンドを実行したくありません。しかし、

入力したコマンドを保存する安定した、迅速で無害で簡単な方法は何ですか?

echo同じ問題があり、:あまりエレガントに見えませんでした。

{私が見るには、and}または(and内のすべてをグループ化することは効果があるようですが、)どちらもそうしません。彼らは私に与えた。

zsh: parse error near `}'

そして

zsh: parse error near `)'

ベストアンサー1

ただ使用小さなpush-line部品、これはデフォルトでこの目的で使用されるモードでAlt+Qと+にバインドされています。CtrlQemacs

これにより、これまでに入力した内容が保留されます(キューからバッファスタックzsh ドキュメントから) 追加のコマンドを入力できるように編集バッファをクリアします。他のコマンドが終了した後に実行するコマンドは、プッシュ古いコンテンツは編集バッファとして自動的に呼び出されます。

zshより良いウィジェット(ただし、制御できない状況で使用している場合は役に立ちません~/.zshrc)は、push-inputウィジェット全体をプッシュすることです。入力するそして現在の行だけではありません。複数行のコマンドを入力するときは、プロンプトの後に$PS2コマンドを続行することをお勧めします。

bindkey '^Q' push-input
bindkey '^[q' push-input

Altプッシュされた行または入力は、+ Gget-lineウィジェット)を使用して検索することもできます。


別のシェルで動作するもう1つの方法は、モードまたはモードでCtrl+の行を削除し、それをキリングに保存することです。UemacsEscddvi

Ctrl後でモードで+を使用するか、コマンドモードで/を使用して呼び出すことができます。モードでは、+ループを使用してナビゲートすることもできます。YemacspPviemacsAltY殺人リング(過去の切り取り/コピーした文字列を思い出してください)。

モードでは、vi名前付きレジスタにコマンドを保存することもできますvi。たとえば、"xddviコマンドモードでは、行を削除してレジスタに保存し、x後でviを使用して再び呼び出すことができます"xP


interactive_commentsあなたの質問に対するより直接的な答えとして、閉じたときにいくつかのコード(またはリストを含む)をコメントアウトするにはfor _()(短い形式のループfor、ここでは空のリストを繰り返す)、またはif (())(短い形式のループif、ここに空の算術を挿入するは、その前の式はゼロと解釈されます)。

foo && bar || bazこれはand-orリストをコメントアウトしますが、barinfoo; barまたはfoo & baregリストはコメントアウトしません。

これは、これまで入力したテキストが構文的に有効であるため、未完成のコード(たとえば、未完成の引用テキスト、forループ...)には適用されないと仮定します。

同じ注意があるもう1つのアプローチは、:||(始めと)終わりに挿入することです。これにより、有効なコードがすべてコメントアウトされます。


1 技術的に言えば、現在バッファの編集Alt+を使用して改行を入力しEnterたり、履歴スタックまたはバッファスタックで複数行コマンドを呼び出す場合は、まだ複数行を含めることができます。

おすすめ記事