如何在vim脚本中调用编辑器命令?

6

我想从标签列表中移除不需要的滚动条。我创建了一个如下所示的函数和命令:

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个回答

5

Vim脚本使用ex命令,显然:TlistToggle是一个ex命令。

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

3
除了 @sidyll 的回答之外: :normal 不是一个 :*map,它只接受原始字符字符串。正确的命令将是 execute "normal! :TlistToggle\<CR>" (或 execute "normal! :TlistToggle\n")。请注意,在脚本中不应使用非感叹号版本。
我不认为你会使用 :normal! 来执行 ex 命令,但当你想传递任何其他特殊字符时,我的答案会很有用。它也适用于 feedkeys() 调用。
顺便说一下,注释和其他命令将被视为传递给 :normal 命令的字符串的一部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接