Fandom

Vim Tips Wiki

Insert current filename

Redirected from VimTip193

1,624pages on
this wiki
Add New Page
Talk0 Share

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Duplicate tip

This tip is very similar to the following:

These tips need to be merged – see the merge guidelines.

Tip 193 Printable Monobook Previous Next

created 2002 · complexity basic · author Steve Downing · version 5.7


I found this useful when I was learning Java: it simply inserts the current filename without the extension at the cursor position, when you are in insert mode.

:inoremap \fn <C-R>=expand("%:t:r")<CR>

To keep the extension use:

:inoremap \fn <C-R>=expand("%:t")<CR>

To insert the absolute path of the directory the file is in use:

:inoremap \fn <C-R>=expand("%:p:h")<CR>

To insert the relative path of the directory the file is in use:

:inoremap \fn <C-R>=expand("%:h")<CR>

ReferencesEdit

CommentsEdit

I often use <C-R>% when in insert mode. It does the same thing, except you also get your file extension.


The % variable for file name is also helpful from the command prompt (: at the bottom). I use it for checking the syntax of source code before using it. For example, if I am editing a perl module, this is helpful:

:w|!perl -c %

This saves the file (w), and executes perl -c on the current file which runs a syntax check.


Yet another useful % application: suppose your source-files reside in a '.../src' (or '...\src') directory. Now this line will insert the package-structure of you current Java-file at the cursor position:

:inoremap \jip <C-R>=substitute(substitute(expand("%:p:h"), "^.*[/\\\\]src[/\\\\]", "", ""), "[/\\\\]", ".", "g")<CR>

(Four backslashes because you need to escape them twice.)

Use single quotes instead of double quotes to avoid need for extra backslashes:
'^.*[/\\]src[/\\]'
BTW, matchstr(expand("%:p:h"), '^.*[/\\]src[/\\]\zs.*') is simpler.

Also on Fandom

Random Wiki