4

長い間、私は次のようなものを入力できることに慣れています。

$ opt / foo / m

など、さまざまな環境内でプロジェクトをナビゲートします。これは本当に便利です。$optを設定するだけです(たとえば、/ home / $ USER / projects / opt-そして開発ユーザーからqaに移動し、ライブに移行します。$optは$optです。

bash4.2のリリースの時点で、この動作は変更されています。これで、タブ補完により$記号がエスケープされます。

$ opt / foo => \ $ opt / foo <=まったく意味がありません!

メンテナがこれがどのように機能するかについて話し合っている間、私は自分の快適ゾーンに戻るために使用できる新しい習慣のセットを見つけたいと思います。良いトリックは何でしょうか?私の指が学ぶことができる何か、いくつかのルートを構成して、私がどこにいるかを気にせずにそこから行くことができます。

4

4 に答える 4

1

完璧ではありませんが、回避策は、ESC ctrl-eを使用して、タブを押す前に変数を強制的に展開することです(少なくともemacsモードでは... viモードについてはわかりません)

于 2011-09-23T19:05:38.217 に答える
0

frankcの答えに基づいて:以下を入れてみてください~/.inputrc

"TAB": "\M-\C-e\M-\C-t"
"\M-\C-t": complete

次に、新しいシェルを開始します。これは何をしますか:

  • TABキーを変更して、ESC-Ctrl-eESC-Ctrl-tの2文字を挿入します。
  • ESC-Ctrl-tをcomplete関数にマップします。これは、通常、Tabキーを押したときに呼び出される関数です。(ESC-Ctrl-tの代わりに他のキーの組み合わせを使用できますが、通常は使用されません。)

ESC-Ctrl-eはすでにshell-expand-line関数にマップされているため、Tabキーを押すと、bashは最初に変数($opt)を展開し、次に通常どおりオートコンプリートします。

于 2011-11-01T08:16:17.020 に答える
0

ここや他の場所で提案された回避策は、私にとって完全に失敗したか、入力するのが面倒でした。

最終的に、友人はzshell(zsh)の使用を推奨しました。できます!.zshrcを空白のままにして、カスタマイズは行いませんでした。

これで、タブ補完が正常に戻りました。これは、私が慣れているものとは少し異なります。古いbashスタイルとviスタイルの組み合わせです。タブを押すと、複数のオプションのリストが表示されます。次に、もう一度タブを押すと、そのリストから選択が開始され、viのように交互に表示されます。

私はかなり幸せです。

于 2012-01-05T20:01:40.410 に答える
0

zshソリューションが私のために働いたすべてです。.bashrc => .zshrcを変換するのは簡単で、複雑なシェル関数/エイリアスがいくつかあります。

私は同意します。世界で、bashメンテナがこの非常に基本的なタブ補完機能をどのように壊したのか。

私が試したことのない別の解決策は、別のディストリビューションのbashを使用することです。私はこれをMint13リリースでのみ見ました。Ubuntu /Fedorabashは正常に動作します。

于 2013-11-03T16:45:50.620 に答える