当前位置:  开发笔记 > 编程语言 > 正文

获取Vim中当前文件的名称

如何解决《获取Vim中当前文件的名称》经验,为你挑选了3个好方法。

我正在尝试在Vim中找到我正在编辑的文件的名称.所以我可以用它来映射F5来编译这个文件.如果我能识别文件格式并选择相应的编译器,那当然会很棒,但实际上并不是必需的.如果我找到文件的名称,我可以自己做.但我真的找不到任何方法来获取我正在编辑的文件的名称.

我知道这个:make命令,并且已经映射过了,但对于小脚本/测试程序,我真的不想先写一个简单的makefile.



1> sluukkonen..:

您可以使用vim命令中的%字符来获取扩展名的当前文件名.例如,

:!javac %

在当前文件上运行javac.

你可以找到更多

:help filename-modifiers



2> Rook..:

我正在尝试在vim中找到我正在编辑的文件的名称.

对于当前缓冲区,这将为您提供文件的名称,

echo "You're editing " bufname("%")

(只需将它放在一些file.vim中,然后将其命名为":so%".但我认为这不是你所需要的.

所以我可以用它来映射F5来编译这个文件,用于测试目的.如果我能识别文件格式并选择相应的编译器,那当然会很棒,但实际上并不是必需的.如果我找到文件的名称,我可以自己做.但我真的找不到任何方法来获取我正在编辑的文件的名称.

你可以做几件事.如果vim识别出您正在编辑的文件类型,则可以映射F5到编译器命令并将该命令放在其特定的ftplugin目录中,因此它仅对该文件类型有效.例如,你把

nmap  :!compilername %

在cpp.vim,fortran.vim,python.vim等中,%给出了您正在编辑的当前文件的名称.这将执行编译器,就像compilername file.cpp在命令提示符中调用一样.

当然,compilername每种文件类型都会有所不同; 你不打算用cpp编译器编译fortran,你fortrancompiler %就是这样的.

这是一种选择.您也可以根据扩展设置autocmd命令尝试,以便.vimrc根据文件的扩展名识别文件类型.这是vim的所有标准用法,没有什么不常见的.现在,我不确定你是怎么想这样做的,所以我只想指出Vim Wiki,在那里你可以找到涵盖这个的各种文章(以及一些编译器的一些技巧).

我知道这个:make命令,并且已经映射过了,但对于小脚本/测试程序,我真的不想先写一个简单的makefile.

是的,这看起来有点矫枉过正.就个人而言(当我在Windows上时),我发现简单的批处理文件比大项目更容易编写.如果程序在一个或两个文件中,我只是使用一些oneliner映射来编译它.



3> Magnus..:

其他要点非常有用.我想补充一点,您可能希望使用:p,以确保文件名作为完全限定的路径传递.没有它,Vim可以将其作为相对于Vim当前路径的路径传递,该路径可能与编译器使用的路径相同,也可能不同.所以一个解决方案是:

nnoremap   :!javac %:p

如果要自动检测文件类型,可以使用AutoCommand

autocmd FileType java       nnoremap    :!javac %:p
autocmd FileType cpp        nnoremap    :!gcc %:p

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有