在vimrc中使用tabmove会给出E488尾随字符错误

在vimrc中使用tabmove会给出E488尾随字符错误,vim,Vim,我试图在vimrc文件中的函数中使用tabmove命令,但每当我这样做时,就会出现错误“E488:尾随字符:tabm l:x”。代码如下: function! MoveTabPageLeft() let l:x = tabpagenr() if l:x == 0 else let l:x = l:x - 1 tabm l:x endif endfunction 如何让它调用tabm?您正在尝试运行该命令,该命令会根据 变量的值。要

我试图在vimrc文件中的函数中使用tabmove命令,但每当我这样做时,就会出现错误“E488:尾随字符:tabm l:x”。代码如下:

function! MoveTabPageLeft()
    let l:x = tabpagenr()
    if l:x == 0
    else
        let l:x = l:x - 1
        tabm l:x
    endif
endfunction

如何让它调用tabm?

您正在尝试运行该命令,该命令会根据 变量的值。要运行由Vim脚本在运行时形成的命令,请使用
:执行
命令<代码>:execute接受包含 要执行的命令。因此,要修复代码,请更改行

tabm l:x


如果有人需要,这是最后的代码。它将当前选项卡页向左或向右移动

function! MoveTabPageLeft()
    let l:x = tabpagenr()
    if l:x == 0
    else
        let l:x = l:x - 2
        exe 'tabmove ' . l:x
    endif
endfunction

function! MoveTabPageRight()
    let l:x = tabpagenr()
    if l:x == 0
    else
        exe 'tabmove ' . l:x
    endif
endfunction

感谢您对我为什么/何时应该使用exe的描述-这真的很有帮助。您可以将这些函数简化为
sil!exe'tabm'。(tabpagenr()-2)
sil!exe'tabm'。tabpagenr()
function! MoveTabPageLeft()
    let l:x = tabpagenr()
    if l:x == 0
    else
        let l:x = l:x - 2
        exe 'tabmove ' . l:x
    endif
endfunction

function! MoveTabPageRight()
    let l:x = tabpagenr()
    if l:x == 0
    else
        exe 'tabmove ' . l:x
    endif
endfunction