每当我打开Golang文件时,我都会尝试打开NERDtree:
au FileType go exe 'NERDTree'但是,当我从另一个目录打开一个Go文件时,它仍然显示当前目录。我可以将目录作为参数传递,但不知道如何获得要打开的文件的目录。
发布于 2018-12-11 12:51:09
可以通过特殊的%名称(:help cmdline-special)访问当前文件名;您可以将其修改为完整的路径,然后切断文件名本身以获得路径:%:p:h,cp。:help filename-modifiers。
这可以直接传递给内置命令,比如:edit,不幸的是不能传递给:NERDTree。为此,我们必须显式地expand()它,然后通过:execute将结果插入到命令行中(在您的问题中,这是不必要的):
autocmd FileType go execute 'NERDTree' expand('%:p:h')或者,您也可以只使用:set autochdir,因此Vim将自动切换目录。
我建议将任何设置、映射和特定于文件类型的自动cp放入~/.vim/ftplugin/{filetype}_whatever.vim (或{filetype}/whatever.vim;cp)中。:help ftplugin-name),而不是定义大量的:autocmd FileType {filetype};它更干净,规模更大;不过,它要求您拥有:filetype plugin on。覆盖默认文件类型插件中的内容的设置应该进入~/.vim/after/ftplugin/{filetype}.vim。
https://unix.stackexchange.com/questions/486196
复制相似问题