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

Vim、Emacs配置和使用
iny
帖子: 142
注册时间: 2008-05-22 9:43

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

#1

帖子 iny » 2009-06-04 12:44

比如某个vim插件又一个函数如下

代码: 全选

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

代码: 全选

nmap <C-F11> :call <SID>ColorSchemeExplorer()<CR>
提示“Unknown function: ......”
上次由 iny 在 2009-06-05 12:43,总共编辑 1 次。
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

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

#2

帖子 lilydjwg » 2009-06-04 12:50

<SID>即表示局限于脚本的(Script Id),在外部是不可见的,所以嘛,你只能先去改了源代码。
iny
帖子: 142
注册时间: 2008-05-22 9:43

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

#3

帖子 iny » 2009-06-04 18:01

lilydjwg 写了:<SID>即表示局限于脚本的(Script Id),在外部是不可见的,所以嘛,你只能先去改了源代码。
请问要怎么改?我在插件中去掉了<SID>,然后在vimrc中响应的也去掉,还是提示函数没定义
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

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

#4

帖子 lilydjwg » 2009-06-04 20:51

很奇怪!
你这样看看:

代码: 全选

:function ColorSchemeExplorer
iny
帖子: 142
注册时间: 2008-05-22 9:43

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

#5

帖子 iny » 2009-06-04 21:06

还是没成功,我把这个插件放上来麻烦帮我看看,很简单的插件,我只是想给这个插件定义一个快捷键,免得每次调用这个插件都要在命令行输入:ColorSchemeExplorer,太长记不住,而且也麻烦
附件
csExplorer.rar
(1.11 KiB) 已下载 50 次
sarrow
帖子: 403
注册时间: 2007-10-27 1:04

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

#6

帖子 sarrow » 2009-06-04 21:18

没有必要修改这个脚本——你直接把:ColorSchemeExplorer再绑定一个键就行了。

比如:

nnoremap <C-F11> :ColorSchemeExplorer<CR>

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

:colorscheme <Tab>

多按几个tab,vim自动就给你补全出来了,不用打什么字。为了“改变colorscheme”这种不常用的功能而用掉一个绑定键位,我觉得划不来。
sarrow
帖子: 403
注册时间: 2007-10-27 1:04

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

#7

帖子 sarrow » 2009-06-04 21:23

送你几个好用的函数:

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-->来修改字体大小了。个人感觉还是非常实用的。
iny
帖子: 142
注册时间: 2008-05-22 9:43

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

#8

帖子 iny » 2009-06-04 21:25

sarrow 写了:没有必要修改这个脚本——你直接把:ColorSchemeExplorer再绑定一个键就行了。

比如:

nnoremap <C-F11> :ColorSchemeExplorer<CR>

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

:colorscheme <Tab>

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

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

#9

帖子 sarrow » 2009-06-04 21:31

这个bbs的系统实在是太怪了。
注:&【G×F×W】= & g f w

没有中间的空格
上次由 sarrow 在 2009-06-04 21:34,总共编辑 1 次。
sarrow
帖子: 403
注册时间: 2007-10-27 1:04

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

#10

帖子 sarrow » 2009-06-04 21:33

晕掉!“g f w” 还是被替换了!不知道触了哪根筋?!
iny
帖子: 142
注册时间: 2008-05-22 9:43

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

#11

帖子 iny » 2009-06-04 21:52

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】里面的符号都是全角的,是不是这个错了?
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

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

#12

帖子 lilydjwg » 2009-06-04 21:55

把那个换成小写字母啦!
iny
帖子: 142
注册时间: 2008-05-22 9:43

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

#13

帖子 iny » 2009-06-04 21:59

原来是被论坛屏蔽了 :em06

不过我按<A-+><A-->没反应,只是看到屏幕小小的闪动,我用的是Gvim,在Windows下
头像
lilydjwg
论坛版主
帖子: 4258
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

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

#14

帖子 lilydjwg » 2009-06-04 22:07

我这里看到大大的闪动,外加蜂鸣 :em20
iny
帖子: 142
注册时间: 2008-05-22 9:43

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

#15

帖子 iny » 2009-06-04 22:12

lilydjwg 写了:我这里看到大大的闪动,外加蜂鸣 :em20
嘿嘿,一样,Alt + -是闪动,Alt + +是蜂鸣 :em04
回复