4

Bash スクリプトの編集 ファイル名を変数に割り当てたい。

例 inputfile=foo.txt

標準で。'=' の後に最初にスペースを挿入しないと、ファイル名を完成させることができません。

これに対する解決策はありますか?

4

2 に答える 2

3

まず第一にcomint-dynamic-complete、Emacs 24.1 以降では廃止されています。置換機能はcompletion-at-point.

ここで、シェル スクリプト バッファで実際に何が行われているかを見始めると、completion-at-point最終的には comint になることになります。特に、関数comint--match-partial-filenameは、あなたが説明した動作の説明に有望に見えます。

私がそれを正しく読んだ場合、ここでの問題は、少なくともPOSIXライクなシステムでは、「=」がファイル名の有効な部分と見なされることです( variable を参照comint-file-name-chars)。したがって、補完メカニズムはファイル名 "inputfile=/..." を補完しようとしますが、これは明らかに見つかりません。

ファイル名に「=」をまったく使用しない場合 (または、作業完了が他の欠点よりも優先されるほどめったに使用しない場合)、(setq comint-file-name-chars "[]~/A-Za-z0-9+@:_.$#%,{}-")シェルスクリプトモードフックでのようなことを検討することをお勧めします (POSIX システムを使用している場合; Windows では少し異なるように見えます)。

それが役立つことを願っています。

于 2016-11-25T08:36:53.773 に答える