我想实现如下功能,按F10。Vim会根据文件类型的不同自动将编译命令引到命令区(不执行),这样方便我修改编译参数。
按F11,则根据文件类型将编译好的文件引到命令区(不执行),方便我加参数或者重定向,如果是一般程序则直接引程序名,如果是java程序,则引"java +文件名"
这是我自己实现这功能的vimrc的片段,但是不起作用,似乎在启动的时候不能判断文件类型?请问该怎么办?谢谢大家了!
if &filetype=="c"
map <F10> <Esc>:!gcc % -Wall -ansi -Wmain -lm -o %<
map <F11> <Esc>:!%<
elseif &filetype=="cpp"
map <F10> <Esc>:!g++ % -Wall -ansi -Wmain -o %< -lm
map <F11> <Esc>:!%<
elseif &filetype=="java"
map <F10> <Esc>:!javac %
map <F11> <Esc>:!java %<
endif
关于Vim脚本的一个问题:根据文件类型的不同引用不同的命令到命令区(不执行)
-
- 帖子: 12
- 注册时间: 2011-06-08 13:26
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 关于Vim脚本的一个问题:根据文件类型的不同引用不同的命令到命令区(不执行)
你得弄清楚 vimrc 是 Vim 启动时执行的。其实,你可以把特定类型的配置写到 ftplugin/<filetype>.vim 里。或者使用自动事件
好好看文档吧。PS: 文档有简体中文的,关键字 vimcdoc。
代码: 全选
autocmd BufRead *.c map <buffer> blahblahblah
-
- 帖子: 6
- 注册时间: 2006-01-19 20:47
Re: 关于Vim脚本的一个问题:根据文件类型的不同引用不同的命令到命令区(不执行)
可以这样:
试过可以,但为什么你的写法不行,我也不太清楚,我也是初学者。另外如果不想懒省事的话,可以把最后的 * 分别改为 c,cpp,java写三行.
代码: 全选
function g:compileByFileType()
if &filetype=="c"
map <F10> <Esc>:!gcc % -Wall -ansi -Wmain -lm -o %<
map <F11> <Esc>:!%<
elseif &filetype=="cpp"
map <F10> <Esc>:!g++ % -Wall -ansi -Wmain -o %< -lm
map <F11> <Esc>:!%<
elseif &filetype=="java"
map <F10> <Esc>:!javac %
map <F11> <Esc>:!java %<
endif
endfunction
autocmd FileType * call g:compileByFileType()
-
- 帖子: 12
- 注册时间: 2011-06-08 13:26
Re: 关于Vim脚本的一个问题:根据文件类型的不同引用不同的命令到命令区(不执行)
自动事件搞定,谢谢!lilydjwg 写了:你得弄清楚 vimrc 是 Vim 启动时执行的。其实,你可以把特定类型的配置写到 ftplugin/<filetype>.vim 里。或者使用自动事件好好看文档吧。PS: 文档有简体中文的,关键字 vimcdoc。代码: 全选
autocmd BufRead *.c map <buffer> blahblahblah