Vim脚本:映射时运行执行?

时间:2014-08-22 13:00:27

标签: vim

所以我不确定如何在我的映射中运行一些代码,例如:

nnoremap <Return> :execute "normal! if 1 echo('one') endif"<cr>

在没有&#39;正常情况下也尝试过。 - 尝试通过&#39; \&#39;分离命令的不同组合。和&#39; |&#39;但没有任何效果 - 继续变量未定义错误。

知道怎么做?


修改

所以,这就是我实际做的事情:

" Quickly toggle between insert/normal modes
nnoremap <A-e> i
inoremap <silent><A-e> <esc>:call GoRightIfNotBOL()<cr>

" Returns 1 if the cursor is at the beginning of a line "
function! IsBOL()
    return col('.') == 1
endfu

function! GoRightIfNotBOL()
    if !IsBOL()
        execute "normal l"
    endif
endfu

因此,我没有打电话给GoRightIfNotBOL,而是认为我可以真正内联其代码,我无法想到我将使用此功能的另一个位置,而且它非常小。 / p>

1 个答案:

答案 0 :(得分:1)

您正在寻找<expr> mapping

阅读:h <expr>,您可以找到示例。

如果您的代码有点长,请将它们放在函数中,然后在映射中调用该函数。如果您以后想要对其进行一些更改,它会更具可读性。

inoremap <expr>的示例:

inoremap <expr> <YourKeys> "<esc>".(col('.')>1?'l':'')