将 Vim 函数重写为单行映射

将 Vim 函数重写为单行映射

作品:

nmap <silent> <S-t> :call InventTab()<CR>
function InventTab()
    set expandtab!
    if &expandtab
        retab
        echo 'spaces'
    else
        retab!
        echo 'tabs'
    endif
endfunction

我尝试将其更改为单行:

nmap <silent> <S-t> :set expandtab!<CR>:if &expandtab<CR>:retab<CR>:echo 'spaces'<CR>:else<CR>:retab!<CR>:echo 'tabs'<CR>:endif<CR>

现在的问题是它之后坚持打印“Press ENTER or type command to continue”。如果我添加另一个,<CR>它就不再这样做,但echo输出会被清除。

我应该如何写这个以确保我看到输出但没有额外的东西?

结果(参见接受的答案详情):

nmap <silent> <S-t> :set expandtab! ^V| if &expandtab ^V| retab ^V| echo 'spaces' ^V| else ^V| retab! ^V| echo 'tabs' ^V| endif<CR>

答案1

<CR>将命令之间的 '替换为^V|(通过键入插入^V文字的位置)是否有效?^VCtrl-vCtrl-v

相关内容