所以我希望能够输入类似的内容:
:喂
在vim正常模式下然后让它回显'你好先生'。
我将下面的vimscript变成了一个插件,我收到了错误:
不是编辑命令
我做错了什么?
Vimscript中
if exists("g:hello_world") || &cp || v:version < 700
finish
endif
let g:hello_world=1 " your version number
let s:keepcpo = &cpo
set cpo&vim
fun! s:hellosir()
echo 'hello sir'
endfun
command hello call hellosir()
答案 0 :(得分:2)
定义你的函数(注意用户定义函数的大写字母):
:fun! Hellosir()
: echo 'hello sir'
:endfun
现在打电话给:
:call Hellosir()
hello sir
也可以定义自己的ex命令:
:command Hello :call Hellosir()
:Hello
hello sir
修改强>
您可以将两者结合使用:使函数script-local并使用您的(global)ex命令访问它:
fun! s:hellosir()
echo 'hello sir'
endfun
command Hello call s:hellosir()
答案 1 :(得分:1)
这条线有什么问题:
command hello call hellosir()
首先,来自:h user-cmd-ambiguous
所有用户定义的命令必须以大写字母开头,以避免 与内置命令混淆。例外是这些内置命令:
:Next
:X
它们不能用于用户定义的命令。 [...]
其次,您必须在该命令中使用s:
前缀调用您的函数。
答案 2 :(得分:1)
steffen的答案是正确的,但这是一个带有参数的示例:
" a highlight color must be set up for the function to work
highlight blue ctermbg=blue guibg=blue
function! Highlight(text)
:execute "match blue /" . a:text . "/"
endfunction
:command! -nargs=1 Highlight :call Highlight(<q-args>)
要运行它并突出显示所有出现的正则表达式:
:Highlight foobar
请注意,我尝试不缩写.vimrc中的命令/功能。保存在命令行输入时的缩写。