だから私は尋ねるこの問題シェルのディレクトリショートカット情報。アイデアは、/home/Documents/foo
と入力してファイルを開くことができることですC-x C-f ~foo/file
。
もしそうなら、emacsバッファでzshの「名前付きディレクトリ」をエミュレートする方法はありますか?
しかし、私が使用したいショートカット定義はすでに.zshrcにあります。自分で読むことができるソリューションがあればボーナスポイントです。
ベストアンサー1
~
ファイル名の拡張を担当するEmacsコンポーネントはexpand-file-name
残念ながらCで書かれており、その中のコードは以下がユーザー名であると仮定しています~
。幸いなことに、Emacsには関数の周りにラッパーを追加する一般的な方法があります。
続行するのに役立つ完全にテストされていないコードは次のとおりです。詳細については、Emacs Lisp マニュアルの「Emacs Lisp 関数のアドバイス」を参照してください。基本的なアイデアは、defadvice
実際のコードの前に実行するコードを追加することですexpand-file-name
。私のコメントで私が必然的に犯す間違いを指摘してください(修正方法を知っているかどうか)。
(defvar expand-file-name-custom-tilde-alist
'(("foo" . "/home/Documents/foo")))
(defadvice expand-file-name (before expand-file-name-custom-tilde
(name &optional default-directory)
activate compile)
"User-defined expansions for ~NAME in file names."
(save-match-data
(when (string-match "\\`\\(\\(.*/\\)?~\\([^:/]+\\)\\)/" name)
(let ((replacement (assoc (match-string 3 name) expand-file-name-custom-tilde-alist)))
(when replacement
(setq name (replace-match (cdr replacement) t t name 1)))))))
.zshrc
塗りつぶすショートカットexpand-file-name-custom-tilde-alist
(またはエイリアスを同期するために選択したテクノロジ)を解析する練習として残します。