在Vim函数中获取没有文件扩展名的文件名。
我想在Vim中获取没有文件扩展名的文件名。
我在.vimrc
文件中编写了以下函数来编译和运行Java程序。
:function! JAVA_RUN() :!javac %^M :endfunction map <F3> :execute JAVA_RUN()<CR> :source $HOME/.vimrc<CR>
在function方面,我怎样才能得到扩展名的文件名。
:help expand()
应该给你答案,看expand() 。
你应该使用r
修饰符作为%,使用%:r
而不是%
来获得没有扩展名的文件名。
如果要编写函数来构build和执行文件,还应该查看shellescape
的文档,以防止文件名或path中的空格出现问题。
我从字面上只是读了一个类似的问题(因为别人似乎在试图configurationvim来为它们自动创buildF键),并且写了一个关于如何利用vim的强大function的答案 :make
command without甚至需要编写一个Makefile。 在你的情况下,这个问题与问题没什么直接关系,但是如果你有兴趣,我想我会提到它。
此外,有人似乎写了一些关于如何设置vim的Vim Tips Wiki :make
命令专门用于使用ant构build的Java项目。 我自己也没有和Java一起工作过,但是在你的情况下,这可能是一个开始的好地方。
如果你想exand一个文件名(除了%
等)看看fnamemodify()
fnamemodify({fname}, {mods}) *fnamemodify()* Modify file name {fname} according to {mods}. {mods} is a string of characters like it is used for file names on the command line. See |filename-modifiers|.
fnamemodify("main.java", ":r")
返回main
。
我来到这里寻找类似问题的答案。 我想能够从正在编辑的Java文件中提取当前的类名称。 我发现一个非常简洁的方法来做到这一点在vim中的缩写:
ab xclass <CR>=expand('%:t:r')<CR>
放置在你的.vimrc(或类似的)这一行工作。 一旦你按下空格,一个缩写将自动触发,所以我通常用“x”作为前缀以避免它们的意外扩展。
这里的诀窍是expand()
参数中的:t
和:r
的组合。 %
是“当前文件名”, :t
仅selectpath的全部(仅“最后path组件”),并且:r
仅selectpath(“删除一个扩展名”)。 (引用的部分来自官方的expand()文档。)
所以当你在文件/a/b/ClassIAmAboutToCreate.java
中创build一个新的类时,你应该input:
public class xclass {
当您按下“xclass”后的空格时,缩写将被扩展为public class ClassIAmAboutToCreate
,这正是您所需要的。
此外,请注意,可以通过按Ctrl + ]来避免在类名后面插入空格来触发缩写。