首页 > 工具 > 在Vim状态行显示当前目录

在Vim状态行显示当前目录

Vim的使用者都知道使用set statusline来自定义Vim的状态行,例如set statusline=[%f]%y%r%m%*%=[%l/%L:%c,%p%%],其中标识符%f代表当前活跃文件的文件名。

我用Vim时常常会打开不同目录下的文件,打开几个文件之后就会忘记启动Vim的工作目录,而我也没有在终端的标题栏显示当前目录(因为命令提示符处有显示),所以我特别希望Vim的状态行能够显示当前目录。

通过:help statusline阅读了相关文档,我发现Vim并没有提供一个标识符来表示当前活动目录。但google了之后我发现Vim提供了getcwd()函数获取当前目录。因此我对vim做了如下配置:

1
2
3
"在状态栏显示目录,文件名,所有的行数等等
let CWD = substitute(getcwd(), '^'.$HOME, '~', 'g')
set statusline=[%{CWD}][%f]%y%r%m%*%=[%l/%L:%c,%p%%]

其中getcwd()被用来函数获取当前目录, 然后用~替换这个目录中的$HOME环境变量,最后显示在状态行上。