2014-03-04 52 views
1

我在Vim上有2个小插件。一个用于在Vim中增加/减少字体的插件(适用于我在不同屏幕上工作时)。Vim - 无法使用多个命令

一个插件在Vim中获得全屏(我在Gvim工作),所以没有窗口边框,任务栏等。当我放大或缩小字体时,我会看到奇怪的边框。我切换全屏关闭,然后切换回来,一切再次看起来不错。

这是我拨动变焦功能以及全屏功能

noremap ' :ZoomIn<CR> 
noremap - :ZoomOut<CR> 

然后,这是我的切换全屏映射键映射。

map <A-1> :call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR> 

当我放大或缩小时,我需要关闭全屏并切换,以摆脱奇怪的边界。我认为在一个键中输入多个命令会很有用。所以我映射:

noremap ' :ZoomIn |:call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0) |:call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR> 

当我按下键',我得到警告,有尾随的字符。

我看着:help:bar,似乎我需要使用,因为这会禁用尾随字符。所以我做了。

noremap ' :ZoomIn <bar>:call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0) <bar>:call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR> 

再次出现相同的消息,尾随字符。 好的,然后我尝试了另一种方式。

function ToggleZoom() 
    :ZoomIn<CR> 
    :call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR> 
    :call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR> 
endfunction 
noremap ' :ToggleZoom()<CR> 

该解决方案也失败了,得到了尾随字符的警告。即使我在这里找不到任何结尾字符。有没有人建议?我会很感激!

回答

3

在过去的一个

function ToggleZoom() 
    :ZoomIn<CR> 
    :call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR> 
    :call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0)<CR> 
endfunction 
noremap ' :ToggleZoom()<CR> 

你不需要:还是<CR>里面的功能。要在映射中调用函数,您可以使用call,因为ToggleZoom()是一个函数而不是命令。

function ToggleZoom() 
    ZoomIn 
    call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0) 
    call libcallnr("gvimfullscreen.dll", "ToggleFullScreen", 0) 
endfunction 
noremap ' :call ToggleZoom()<CR> 

原因ZoomIn不允许命令之间|可能不与-bar参数声明的命令。看看:h command-bar

+0

您的解决方案为我工作!非常感谢。 但我不明白。您告诉您要在映射中调用该函数,您可以使用调用。但是ToggleZoom()是一个函数,但是我看到你不会在函数中调用ZoomIn? – ReneFroger

+0

@ReneFrogertjuh,它是函数的第一行。 – romainl