我正在为Java文件编写一个基本的Vim模板,当我创建一个扩展名为.java的新文件时,它会创建一个裸的框架类。
示例:
vim Banana.java
Vim创建一个包含以下代码的文件:
public class TODO {
public static void main(String[] args) {
// ...
我的目标是将我的默认类名TODO
更改为没有扩展名的文件名,以便:
vim Coconut.java
创建:
public class Coconut {
而不是:
public class TODO {
我怎么能实现这一点呢?我搜索了网站,有些脚本在变量中提取名称并执行:在正确的地方替换,但我不知道如何找到正确的位置并在那里定位文件名。
我从我的.vimrc扩展读取了我的模板文件:
autocmd BufNewFile * silent! 0r $HOME/vimfiles/templates/%:e.vim_template
或:
autocmd BufNewFile * silent! 0r $HOME/.vim/templates/%:e.vim_template
谢谢!
答案 0 :(得分:4)
我相信这可能会有所帮助吗? http://vim.wikia.com/wiki/Insert_current_filename
这样你就可以得到当前的文件名:
expand("%:t:r")
具体来说,您可能正在寻找:
%s/TODO/\=expand("%:t:r")/g
一个完整的例子:
function! NewFile()
silent! 0r $HOME/vimfiles/templates/%:e.vim_template
s/FILENAME/\=expand("%:t:r")
endfunction
autocmd BufNewFile * call NewFile()
你也可以试试tSkeleton这样的东西,我从来没有尝试过,但它似乎为你解决了这个问题。
答案 1 :(得分:1)