Vimで私が見逃している主な機能の1つは、現在のファイルのファイル名を常に%
バッファーに保存することです(詳細)。次のようなコマンドを簡単に起動できます。
;; compile current file
:! gcc %
;; source current file (useful when I'm editing .vimrc
:source %
;; get the size of current file
:! du -sh %
;; etc, etc...
同様の機能emacs
(バージョン24、違いがあれば)、つまり、現在のバッファーで開かれているファイルの名前を簡単に挿入できるようにしたいと思います。
私がやりたいことの例
ここでは、そのようなショートカットの必要性を感じたときに、より適切に説明するために、いくつかの基本的な使用例を説明します
コンパイル:
M-x compile
emacs と入力すると、コンパイルコマンドを要求されます。gcc (current-buffer)
簡単に入りたいです。ロードファイル:.emacsファイルを編集しているときに、すぐにロードして変更をテストしたいと思います。私のやり方はそうです。
M-x load-file
それから私はいつも名前をつづり. e m a c sます。ショートカットが欲しいです。外部プロセスを起動する:
du -sh
例として、シェルコマンドを実行するときにショートカットも使用できるようにしたいことを示すためだけに挙げました。M-!
これまでに見つけたもの
- U&Lに関するこの質問。与えられた答えは基本的にバッファのファイル名を見つける場所を示しているので、キルリングに追加することができます。まさに私が探しているものではありません。使用する前にファイル名を手動で削除する必要はありません。(また、両方の回答で説明されている解決策は、emacsではスムーズに機能しないようであり、追加のキーストロークが必要なため、少し苦痛になります)。
編集:少し無関係で、なぜこれらのソリューションが機能しないのかがわかりました。良くも悪くも、IDOを有効にしています。
(current-buffer)
関数は、マニュアルに記載カレントバッファ内のファイルの名前を返しませんが、どこにも私は上記の与えた例では、私はelispのコードを評価していません。この関数の評価の結果を(ミニ)バッファに挿入し、この方法をショートカットにバインドする方法はありますか?
このように考えるのは間違っていますか?
私は現在、Vimを何年も使用した後、emacsを使用することを学んでいます(実際には数か月かかりました)。予測可能なusing-emacs-in-a-Vim-wayトラップを避けたい。私が求めているのはあまりemacs-yではないと感じているなら、それを行うためのより良い(よりきれいな?)方法があるはずです、あなたの答えにそれを言及してください。
(buffer-file-name)
、ミニバッファーに入力しているときに実行すると、ミニバッファーnil
であるため、を取得(current-buffer)
します。ミニバッファー内でバッファーを切り替えることもできるため、Emacsが見ているように、現在のバッファーがミニバッファーであるまでに、どのバッファーが現在のバッファーであるかを追跡するのは困難です。
(global-set-key (kbd "C-i") buffer-file-name)
Ctrl + Iにする場合に入力します。.emacsについては、M-x load-file RET
必要なことを行います。何も書く必要はありません。