I have created aliases in my .bashrc for various frequently used long paths but I can not seem to be able to use them inside vim or with commands such as find or grep.
E.g the following:
in cli does cd /some/very/long/path/db
But in vim this:
:e db/file.java
or on the command line: grep -r string db do not work.
How is this fixed?


You can set an environmental variable for that directory.

# Making the variable name consist entirely of capital letters makes the
# variable less likely to conflict with other variables in scripts. You can
# make the variable name consist of lowercase letters but you may run
# into problems. 
export DB=/some/very/long/path/db

Then you can use the exported variable in Vim as such:

:e $DB/file.java

and in your shell as such:

grep -r string $DB

The variable-substitution facilities of Vim and bash are entirely independent from each other. Vim just happens to substitute environmental variables in a manner similar to bash (and many other shells).


Aliases let you give a short name to a command and some arguments. They are only expanded where a command is expected. You can't use them to abbreviate the path to a file.

Furthermore .bashrc is only read by interactive shells, so nothing that you define there will be available in a command typed in Vim.

If you want to have a shortcut to a file or directory, create a symbolic link to it.

ln -s /some/very/long/path/db ~/db
grep -r string ~/db
vim ~/db/file.java

You can define environment variables to abbreviate any string. Environment variable definitions go into ~/.profile. Not every program expands them, but Vim does when you open a file with :e (among other things).

Your Answer

