回答:
現在のファイル名は"%
レジスタ内にあるため、(挿入モードで)を使用して挿入できます<c-r>%
。でフルパスを挿入できます<c-r>=expand("%:p")
。頻繁に使用すれば、マクロを作成できます。その他の同様のトリックについては:h expand
、およびを参照してください:h "=
。
<c-r>
は、次の文字がレジスターであることを指定します。
"%p
通常モードまたはビジュアルモードでも実行できます。
でわかるよう:h registers
に、"%
レジスタには現在のファイル名が含まれています。この:pu[t]
コマンドは、レジスターの内容をテキストに挿入します。
したがって、実際のファイル名を挿入するには、コマンドモードで次のいずれかを入力します。
:put %
または
"%p
フルパスでファイル名を挿入するには、次を入力します
:put=expand('%:p')
コマンドモードで。
詳細:
:h pu[t]
入力"rp
すると、registerの内容を貼り付けることができます"r
。
:put "%:p"
私のために動作するようには思えません。in:のようにexpand()でのみ動作するようです。:put =expand('%:p')
これにより、<c-r>=expand('%:p')
残念なほど面倒ではなくなります。
これを頻繁に行う必要がある場合は、http://vim.wikia.com/wiki/Insert_current_filenameに従って、キーシーケンスを必要なものにバインドすると便利です。
挿入モードのときに、カーソル位置に拡張子なしで現在のファイル名を挿入します。
:inoremap \fn <C-R>=expand("%:t:r")<CR>
拡張機能を使用し続けるには:
:inoremap \fn <C-R>=expand("%:t")<CR>
ファイルが使用されているディレクトリの絶対パスを挿入するには:
:inoremap \fn <C-R>=expand("%:p:h")<CR>
ファイルが使用されているディレクトリの相対パスを挿入するには:
:inoremap \fn <C-R>=expand("%:h")<CR>
上記はすべてvim
、セッションで直接機能するか、セッションに配置できます.vimrc
(行の先頭のコロンはオプションです)。
<c-r>
が、REDOコマンドとしてマップされていませんか?