Vimのコンテンツに現在のファイル名を挿入するには?

Vimのコンテンツに現在のファイル名を挿入するには?

:echo @%数回検索した後、vim画面の一番下の行に現在のファイル名が表示されることがわかりました。

vim.

これを行う方法はありますか?

答え1

現在のファイル名は"%レジスタにあります。 (挿入モードで)を使って挿入できます<c-r>%。フルパス挿入を使用できます<c-r>=expand("%:p")。よく使うならマクロを作って使ってください。このような追加のヒントについては、:h expandおよびを参照してください:h "=

答え2

これを行う他の方法があると確信しています...しかし、あなたが望む主なコマンドは、:r[ead]コマンドの出力をバッファに挿入することです。

したがって、ファイル名を挿入するだけです。

:r! echo %

そしてフルパスを含めるには:

:r! echo %:p

詳細は:

:help read
:help filename-modifiers 

答え3

図に示すように、:h registersレジスタ"%には現在のファイル名が含まれています。この:pu[t]コマンドはレジスタの内容をテキストに挿入します。

したがって、実際のファイル名を挿入するには、コマンドモードで次のいずれかのコマンドを入力します。

:put %

または

"%p

フルパスでファイル名を挿入するには、次のように入力します。

:put=expand('%:p')

コマンドモードで。


追加情報:

:h pu[t]

入力すると、"rpレジスタの内容を貼り付けることができます"r

答え4

これを頻繁に実行する必要がある場合は、次のようにキーシーケンスを目的のアイテムにバインドするのが便利です。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(行の前のコロンはオプションです)。

関連情報