質問

タブ補完が曖昧なため、プログラミング中にコンピューターで常にビープ音が鳴るような方法でファイル名を付けることがよくあるような気がします。Unix プログラミングをたくさん行う前は、関連するファイルに、その関係を示すために同じプレフィックスを付けて名前を付ける傾向がありました。今度は、より効果的にプログラムするために、フォルダーとファイルの構造と名前に対するアプローチを再考する必要があります。

タブ補完を簡素化するためにプログラミングするときにどのようなヒューリスティックやルールを適用しますか?タブ補完をよりスムーズにするために何かツールを使用していますか (例: emacsのつらら)?

編集:わあ、素晴らしい洞察をありがとう。私の弱点はすべて答えの中に含まれていたと思います。どれも読む価値はありますが、生産性向上に最も優れていると思われる内容を採用しました。

役に立ちましたか?

解決

私は通常、関連ファイルがすべて同じ内にあるプロジェクトに取り組んできました。 ディレクトリ, 、ファイル名自体はその内容を示すために特殊化されています。

もちろん、これではなぜファイル名にタブ補完を行うのかという疑問が生じます。ソースコードを熟読している場合は、次のようなものがあります。 タグ, セデット, 、その他たくさんの 公共事業 これにより、ファイル名をバイパスして、実際に必要な関数/変数に直接ジャンプできます。

それはすべて、実際に何をしようとしているかによって異なり、特定のファイルを見つけることは通常、別の目的を達成するための手段です。

他のヒント

一般的に、

setterm -blength 0

端末のビープ音を無効にします。 GNU画面 また、一部のグラフィック端末には独自のビープ通知設定があります。

特に バッシュ その他 読み込まれた行- ソフトウェアを使用すると、タブ補完の動作を変更できます。 $INPUTRC, /etc/inputrc, 、 そして ~/.inputrc 設定ファイル。例えば、

bell-style none     # never ring the bell
bell-style visible  # use visual bell, if available

show-all-if-ambiguous on  # list all completions instead of ringing the bell

私は私の名前私のファイルタブの完了に関係なく、代わりに私は、私はタブ愚かな取得しないように十分な文字を入力したことを知っているまで、タブをヒットする私の衝動を調整することを認めなければならない。

共通性を持つファイル用のディレクトリは、通常は良いアイデアですが、常に可能ではないかもしれません。そのような場合には、うまく機能単純なアプローチではなく、プレフィックスよりも、接尾辞で共通性を置くことです。例えば、私は、接尾辞として「_test.py」と私のユニットテストに名前を付けます。それを他の方法ラウンド(例えばtest_foo.py)を行うと、すべてのテストファイル用のタブ補完を切り株でしょう。

あなたは階層を平坦化するための一般的な場合には、この考え方を拡張することができます。あなたはクラス階層Person->Employee->Programmerを持っている場合たとえば、あなたがテストprogrammer_employee_person_test.pyを呼び出すことにより、コードのディレクトリ構造をミラーリング避けることができます。再び、識別子のより一般的な構成要素は、名前の後半来ます。

私は、コードの組織ではなく、タブ補完のために理にかなっているものは何でも一緒に行く傾向がある - これは、問題のコードによって異なりますので、直接答えを出すのは難しいですが、適切なサブディレクトリの使用は作るん楽。私はドンに同意します。

その代わりに、私はfind . -name {expr}ようなツール(ファイル名)、grep -r {expr} *(機能DEFS、PROTOSおよび使用)を使用してソース及びそれらの組み合わせをナビゲートします。それは効果的にあなたの全体のソースツリー全体にsed i 's/find/replace'を使用して操作を検索/置換を行うためにシェルスクリプトを記述することが可能です。私はこのようないくつかの便利なスクリプトを提供し、パスに/私の〜に少しのフォルダを持っています。

私は私がやっているものに応じて、編集のためのEclipseのようなIDE、またはVIMと組み合わせます。私は、異なる目的のために両方を使用するように私は、本当に、同じように両方好きです。

のEmacsに関しては、私はそれを好きではない、それを試してみました。それはあまりにも大きくて複雑だと私は(OK、我々は「本物のプログラマが使用して...」の議論を開始する前にのは、そこに停止させ)、それを使用する方法を学ぶよりも、行うには良いものを持っています。だから私はあなたにリンクしたEmacsのツールにコメントすることはできません。私はそれを試してみて、それが助けかどうかを確認思います。

あなたは、メニュー - 完全な代わりの完全なを使用することができます:

bind '"\C-i": menu-complete'
echo '"\C-i": menu-complete' >>~/.inputrc

私はここでの他の回答に同意します:一般に、完成を容易にするため、または関係を表現するためにファイルに名前を付けることは避けてください (ファイルの目的や機能を説明するだけで暗示されるもの以外)。

に関して 完了:はい、次のようなものを使用すると役立ちます つらら. 。柔軟な補完は、プロジェクト ファイル内の検索など、さまざまな方法で役立ちます。たとえば、次を参照してください。 つらら探し.

複数の単純な一致パターンを提供できること ("段階的な完了") も役に立ちます。これは、単一の複雑な正規表現を考え出すよりもはるかに簡単です。同様に、特定のパターンの一致を除外できるようになります ("象以外のものを削り取る") が役に立ちます。最後に、ファイル名の照合では、ディレクトリ コンポーネントも照合できると役立つ場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top