Vim Tips Wiki

Duplicate tip

This tip is very similar to the following:

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

Tip 1322 Printable Monobook Previous Next

created 2006 · complexity basic · author Robert · version 5.7

Silly little tip, but could save tons of typing:

Move to a blank line, "V" to visually select it, then "!pwd"

Basically you're using the filter command "!" to filter a null selection and replace it with the output of that command. "pwd" on Unix-like systems returns the current directory, so you can use it to grab the current directory name with "!pwd", listing of files with "!ls", etc.

Another way is to use "CTRL-R = getcwd()". This is more typing but executes faster because it's not spawning an external command (the pwd command). If you do this a lot it's better to use inoremap to bind that sequence to a dedicated key.

:inoremap \fp <C-R>=getcwd()<CR>

Then in insert mode, the key sequence backslash f p will insert the current working directory.


Maybe I'm missing something, but this is what ":r!pwd" is usually used for. Simply r(ead)ing the output of a command doesn't replace a visually selected line, but that would normally be a feature.

Why visually select the line....and why :r!pwd even. Simply !!pwd on a line will replace it with the output of the pwd command. Personally my favorite external command setup is to mark the top of the region with an "a" mark the bottom of the region with a "s" and then :`a,`s !sort or any other command. Even better if you map a key to :`a,`s. E.g.

map - :`a,`s
mark region with "a" and "s"
- !sort

On Windows, instead of "pwd" use "cd", and instead of "ls" use "dir".

On Windows in normal mode, type !!cd and press Enter, to replace the current line with the name of the current directory.