分页: 1 / 2

[已解决]怎么在vimrc中调用vim插件中的一个函数?

发表于 : 2009-06-04 12:44
iny
比如某个vim插件又一个函数如下

代码: 全选

function! <SID>ColorSchemeExplorer() 
......
endfunction
我想在vimrc中定义一个快捷键来调用这个函数,但是没成功,我是这样做的:

代码: 全选

nmap <C-F11> :call <SID>ColorSchemeExplorer()<CR>
提示“Unknown function: ......”

Re: 怎么在vimrc中调用vim插件中的一个函数?

发表于 : 2009-06-04 12:50
lilydjwg
<SID>即表示局限于脚本的(Script Id),在外部是不可见的,所以嘛,你只能先去改了源代码。

Re: 怎么在vimrc中调用vim插件中的一个函数?

发表于 : 2009-06-04 18:01
iny
lilydjwg 写了:<SID>即表示局限于脚本的(Script Id),在外部是不可见的,所以嘛,你只能先去改了源代码。
请问要怎么改?我在插件中去掉了<SID>,然后在vimrc中响应的也去掉,还是提示函数没定义

Re: 怎么在vimrc中调用vim插件中的一个函数?

发表于 : 2009-06-04 20:51
lilydjwg
很奇怪!
你这样看看:

代码: 全选

:function ColorSchemeExplorer

Re: 怎么在vimrc中调用vim插件中的一个函数?

发表于 : 2009-06-04 21:06
iny
还是没成功,我把这个插件放上来麻烦帮我看看,很简单的插件,我只是想给这个插件定义一个快捷键,免得每次调用这个插件都要在命令行输入:ColorSchemeExplorer,太长记不住,而且也麻烦

Re: 怎么在vimrc中调用vim插件中的一个函数?

发表于 : 2009-06-04 21:18
sarrow
没有必要修改这个脚本——你直接把:ColorSchemeExplorer再绑定一个键就行了。

比如:

nnoremap <C-F11> :ColorSchemeExplorer<CR>

另外,你这个脚本有点鸡肋的味道。

:colorscheme <Tab>

多按几个tab,vim自动就给你补全出来了,不用打什么字。为了“改变colorscheme”这种不常用的功能而用掉一个绑定键位,我觉得划不来。

Re: 怎么在vimrc中调用vim插件中的一个函数?

发表于 : 2009-06-04 21:23
sarrow
送你几个好用的函数:

function! MySys() " return OS type, eg: windows, or linux, mac, et.st.. {{{1
if has("win16") || has("win32") || has("win64") || has("win95")
return "windows"
elseif has("unix")
return "linux"
endif
endfunction " }}}1

function <SID>FontSize_Enlarge()
if MySys() == "linux"
let pattern = '\<\d\+$'
elseif MySys() == "windows"
let pattern = ':h\zs\d\+\ze:'
endif
let fontsize = matchstr(&gfn, pattern)
let cmd = substitute(&gfn, pattern, string(fontsize + 1), 'g')
let &gfn=cmd

let fontsize = matchstr(&囗囗囗, pattern)
let cmd = substitute(&囗囗囗, pattern, string(fontsize + 1), 'g')
let &囗囗囗=cmd
endfunction
nnoremap <A-+> :call <SID>FontSize_Enlarge()<CR>

function <SID>FontSize_Reduce()
if MySys() == "linux"
let pattern = '\<\d\+$'
elseif MySys() == "windows"
let pattern = ':h\zs\d\+\ze:'
endif
let fontsize = matchstr(&gfn, pattern)
let cmd = substitute(&gfn, pattern, string(fontsize - 1), 'g')
let &gfn=cmd

let fontsize = matchstr(&囗囗囗, pattern)
let cmd = substitute(&囗囗囗, pattern, string(fontsize - 1), 'g')
let &囗囗囗=cmd
endfunction
nnoremap <A--> :call <SID>FontSize_Reduce()<CR>

把这三个函数,添加到你的vimrc文件中,就能支持用<A-+><A-->来修改字体大小了。个人感觉还是非常实用的。

Re: 怎么在vimrc中调用vim插件中的一个函数?

发表于 : 2009-06-04 21:25
iny
sarrow 写了:没有必要修改这个脚本——你直接把:ColorSchemeExplorer再绑定一个键就行了。

比如:

nnoremap <C-F11> :ColorSchemeExplorer<CR>

另外,你这个脚本有点鸡肋的味道。

:colorscheme <Tab>

多按几个tab,vim自动就给你补全出来了,不用打什么字。为了“改变colorscheme”这种不常用的功能而用掉一个绑定键位,我觉得划不来。
我晕,我一直不知道有这个功能,太感谢了,可以扔掉ColorSchemeExplorer这个插件了! :em11

Re: 怎么在vimrc中调用vim插件中的一个函数?

发表于 : 2009-06-04 21:31
sarrow
这个bbs的系统实在是太怪了。
注:&【G×F×W】= & g f w

没有中间的空格

Re: 怎么在vimrc中调用vim插件中的一个函数?

发表于 : 2009-06-04 21:33
sarrow
晕掉!“g f w” 还是被替换了!不知道触了哪根筋?!

Re: 怎么在vimrc中调用vim插件中的一个函数?

发表于 : 2009-06-04 21:52
iny
sarrow 写了:送你几个好用的函数:

function! MySys() " return OS type, eg: windows, or linux, mac, et.st.. {{{1
if has("win16") || has("win32") || has("win64") || has("win95")
return "windows"
elseif has("unix")
return "linux"
endif
endfunction " }}}1

function <SID>FontSize_Enlarge()
if MySys() == "linux"
let pattern = '\<\d\+$'
elseif MySys() == "windows"
let pattern = ':h\zs\d\+\ze:'
endif
let fontsize = matchstr(&gfn, pattern)
let cmd = substitute(&gfn, pattern, string(fontsize + 1), 'g')
let &gfn=cmd

let fontsize = matchstr(&【G×F×W】, pattern)
let cmd = substitute(&【G×F×W】, pattern, string(fontsize + 1), 'g')
let &【G×F×W】=cmd
endfunction
nnoremap <A-+> :call <SID>FontSize_Enlarge()<CR>

function <SID>FontSize_Reduce()
if MySys() == "linux"
let pattern = '\<\d\+$'
elseif MySys() == "windows"
let pattern = ':h\zs\d\+\ze:'
endif
let fontsize = matchstr(&gfn, pattern)
let cmd = substitute(&gfn, pattern, string(fontsize - 1), 'g')
let &gfn=cmd

let fontsize = matchstr(&【G×F×W】, pattern)
let cmd = substitute(&【G×F×W】, pattern, string(fontsize - 1), 'g')
let &【G×F×W】=cmd
endfunction
nnoremap <A--> :call <SID>FontSize_Reduce()<CR>

把这三个函数,添加到你的vimrc文件中,就能支持用<A-+><A-->来修改字体大小了。个人感觉还是非常实用的。
出现很多错误,【G×F×W】里面的符号都是全角的,是不是这个错了?

Re: 怎么在vimrc中调用vim插件中的一个函数?

发表于 : 2009-06-04 21:55
lilydjwg
把那个换成小写字母啦!

Re: 怎么在vimrc中调用vim插件中的一个函数?

发表于 : 2009-06-04 21:59
iny
原来是被论坛屏蔽了 :em06

不过我按<A-+><A-->没反应,只是看到屏幕小小的闪动,我用的是Gvim,在Windows下

Re: 怎么在vimrc中调用vim插件中的一个函数?

发表于 : 2009-06-04 22:07
lilydjwg
我这里看到大大的闪动,外加蜂鸣 :em20

Re: 怎么在vimrc中调用vim插件中的一个函数?

发表于 : 2009-06-04 22:12
iny
lilydjwg 写了:我这里看到大大的闪动,外加蜂鸣 :em20
嘿嘿,一样,Alt + -是闪动,Alt + +是蜂鸣 :em04