如何从vimscript调用编辑器命令?

时间:2011-10-02 14:41:30

标签: vim

我想从taglist中删除不需要的滚动条。我创建了一个函数和这样的命令:

function s:TlistWaToggle()
    normal :TlistToggle<cr> " <- this does not work
    set guioptions-=r
endfunction

command! -nargs=0 -bar TlistWaToggle call s:TlistWaToggle()

我想将调用包装:TlistToggle与命令一起删除右滚动条(我当然有这个设置,但它总是重新出现,所以这是一个解决方法)。目前我的:TlistWaToggle什么都不做。我怎样才能使它发挥作用?

2 个答案:

答案 0 :(得分:4)

Vim脚本使用ex命令,显然:TlistToggle是ex命令......

function! s:TlistWaToggle()
    TlistToggle
    set guioptions-=r
endfunction

答案 1 :(得分:3)

除了@ sidyll的回答::normal不是:*map,它只接受原始字符串。正确的命令将是execute "normal! :TlistToggle\<CR>"(或execute "normal! :TlistToggle\n")。请注意,您不应在脚本中使用非禁止版本。

我认为你不会使用:normal!执行ex命令,但是当你想要传递任何其他特殊字符时,我的答案会很有用。它也适用于feedkeys()来电。

顺便说一句,注释和其他命令将被视为传递给:normal命令的字符串的一部分。