VIM: 如何获取打开缓冲区的文件 path/directory 并执行某些操作?
VIM: how to get the file path/directory of opened buffer and do something?
我的情况是:我正在使用 vim 打开一些 .cpp 文件,例如
vim 1.cpp src/2.cpp root/src/3.cpp
有时,我想重建 3.cpp 所以我不得不使用另一个 window 到
"rm root/src/3.o"
并在 vim 中键入
":make"
这很好用,NP。但我正在寻找一个 .vimrc function/command 那个:
当我切换到缓冲区时,例如"root/src/3.cpp"并按下此命令,vim会检测"root/src"的目录和不带后缀“3”的文件名,并自动执行"rm root/src/3.o".[=15的命令=]
在这种情况下,我可以随便切换到任何缓冲区并重新触发这个文件的构建。
注意我不希望像 "make clean" 这样映射 gmake 工具命令,因为我们使用了几个不同的 make 实用程序,如 scons、cmake 等
那么如何在.vimrc中写这个function/command呢?谢谢。
您可以通过以下方式从 root/src/3.cpp
缓冲区中获取 root/src/3
:
expand('%:p:r')
然后你可以随意连接 .o
结束,并构建命令。
:call system('rm '.expand('%:p:r'))
正如@Kent 所说,甚至只是 :!rm %:p:r
.
但我很惊讶你需要这样做。负责编译链的工具通常理解依赖关系(无论是哪个工具),并且您不需要删除通常需要映射才能为您完成的目标文件。
PS:完美possible (but I need to update the doc)支持CMake,或者out-of-source从vim编译。但实际上,使用 out-of-sources 编译,您不需要手动删除这些文件,:make clean
如果 :make
已经有效。
我的情况是:我正在使用 vim 打开一些 .cpp 文件,例如
vim 1.cpp src/2.cpp root/src/3.cpp
有时,我想重建 3.cpp 所以我不得不使用另一个 window 到
"rm root/src/3.o"
并在 vim 中键入
":make"
这很好用,NP。但我正在寻找一个 .vimrc function/command 那个:
当我切换到缓冲区时,例如"root/src/3.cpp"并按下此命令,vim会检测"root/src"的目录和不带后缀“3”的文件名,并自动执行"rm root/src/3.o".[=15的命令=]
在这种情况下,我可以随便切换到任何缓冲区并重新触发这个文件的构建。
注意我不希望像 "make clean" 这样映射 gmake 工具命令,因为我们使用了几个不同的 make 实用程序,如 scons、cmake 等
那么如何在.vimrc中写这个function/command呢?谢谢。
您可以通过以下方式从 root/src/3.cpp
缓冲区中获取 root/src/3
:
expand('%:p:r')
然后你可以随意连接 .o
结束,并构建命令。
:call system('rm '.expand('%:p:r'))
正如@Kent 所说,甚至只是 :!rm %:p:r
.
但我很惊讶你需要这样做。负责编译链的工具通常理解依赖关系(无论是哪个工具),并且您不需要删除通常需要映射才能为您完成的目标文件。
PS:完美possible (but I need to update the doc)支持CMake,或者out-of-source从vim编译。但实际上,使用 out-of-sources 编译,您不需要手动删除这些文件,:make clean
如果 :make
已经有效。