web-dev-qa-db-ja.com

「/」の代わりに「\」を使用してシェルバッファのパスをオートコンプリートするために、ウィンドウの下でemacsを取得するにはどうすればよいですか?

私はemacsを使用してLinux、Windows、OSXで作業していますが、Windowsの下のシェルバッファーに関する1つの厄介な問題を除いて、すべて問題ありません。

ファイル名の自動補完は(標準のウィンドウよりも優れていますが)うまく機能しますが、ディレクトリのスラッシュ区切り記号を使用してパスを生成するため、まったく役に立ちません。これはWindowsでは機能しないので、タブを避けてコマンドプロンプトにすべてを入力するように強制するか、emacsをあきらめてWindowsの壊れたコマンドウィンドウを使用する必要があります(たとえば、コピーすることさえ難しい場合) n分割線の問題のため、合理的に貼り付けます)。

Windowsのパス名の補完に「/」の代わりに「\」を使用するようにemacsに指示する方法はありますか?

6
6502

簡単な答え:変数comint-completion-addsuffixを使用します。

長い答え:「emacsシェル完了ウィンドウ」をグーグルで検索すると、 http://www.gnu.org/software/emacs/windows/Sub_002dprocesses.html になりました。これは、変数comint-completion-addsuffixを示しています。補完文字を制御します。 \SPACEの短所に設定すると、必要な処理が実行されます。あなたはこれを行うことができます

  1. M-xカスタマイズ変数RETcomint-completion-addsuffix RET
  2. 値メニューを選択します
  3. サフィックスペアを選択します
  4. ディレクトリサフィックスの後に\を入力します。
  5. ファイルサフィックスの後にスペース文字を入力します。
  6. [将来のセッション用に保存](または現在のセッション用に保存)を選択します

それを行うと、行が追加されます

'(comint-completion-addsuffix (quote ("\\" . " ")))

〜/ .emacsファイルの正しい場所に移動します。

(Emacs 22.3でテスト済み。)

更新:

Emacs 23.3では、先頭の円記号がスラッシュに変更されているというコメントの意味がわかります。 comint-dynamic-complete-filenameが壊れているため、説明except that it won't change parts of the filename already entered in the bufferの一部が正しくありません。

23.3のLISP/comint.elを22.3に置き換えることはうまくいくようです。そのファイルの3062行目から始まる3行を置き換えます。

     (delete-region filename-beg filename-end)
     (if filedir (insert (comint-quote-filename filedir)))
     (insert (comint-quote-filename (directory-file-name completion)))

これらの行で(22.3から):

     (insert (comint-quote-filename
          (substring (directory-file-name completion)
             (length filenondir))))

M-x byte-recompile-directoryを実行します。

4
Larry Engholm

(setq comint-completion-addsuffix (quote ("\\" . " ")))私の~\.emacs私のためにトリックをしました。

0
dr jerry