在Vim函数中获取没有文件扩展名的文件名。
我想在Vim中获得没有文件扩展名的文件名。在Vim函数中获取没有文件扩展名的文件名。
我在我的.vimrc
文件中编写了以下函数来编译和运行Java程序。
:function! JAVA_RUN()
:!javac %^M
:endfunction
map <F3> :execute JAVA_RUN()<CR> :source $HOME/.vimrc<CR>
在这方面的功能我怎么能得到扩展名的文件名。
:help expand()
应该给你答案,见expand()。
您应该对%使用r
修饰符,用%:r
而不是%
来获取没有扩展名的文件名。
如果要编写构建和执行文件的函数,还应该查看shellescape
的文档,以防止文件名或路径中的空格出现问题。
我从字面上只是读了一个类似的问题(因为别人似乎试图配置vim为他们用F键自动构建),并且写了an answer关于如何利用vim的功能:make
命令,甚至不需要编写Makefile。就你而言,它与问题没有直接关系,但我想我会提及它,以防你感兴趣。
此外,有人似乎写了Vim Tips Wiki关于如何设置vim的:make
命令来专门处理用蚂蚁构建的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 <C-R>=expand('%:t:r')<CR>
把这行放到你的.vimrc(或类似)。一旦您按下空格,缩写将自动触发,因此我通常在它们前加'x'以避免其意外扩展。
这里的诀窍是:t
和:r
在expand()
的参数中的组合。 %
是“当前文件名”,:t
仅选择所有路径(“仅限最后一个路径组件”)并且仅选择012ot(“删除了一个扩展名”)或或t。 (报价部分均来自expand()文件。)
所以,当你在文件/a/b/ClassIAmAboutToCreate.java
创建一个新的类,你可以键入:
public class xclass {
你“xclass”后按下空格键的那一刻,缩写将扩展为public class ClassIAmAboutToCreate
,这正是你需要。
另外,注意的缩写可以通过按下Ctrl键+]这避免了插入的类名称后的空间中而被触发。
你不必为此做一个函数'(地图:!java%:r )' –
yesennes
2015-09-09 02:58:31