gpt4 book ai didi

vim - 从正常模式映射中使用 setline() 调用 vimscript 函数

转载 作者:行者123 更新时间:2023-12-01 12:59:29 25 4
gpt4 key购买 nike

我有一个使用 setline() 的函数。为简单起见,我们称它为

function! MyFunc()
call setline( ".", "test" )
endfunc

我想从映射中调用此函数(使用 ,, )。我知道 map <expr> ,, MyFunc()不起作用,因为 setline() 调用。 imap ,, <C-R>=MyFunc()原则上确实有效,但我通常会从正常模式调用此函数,而不是插入模式。

有什么可以让我在正常模式下调用函数或使用表达式寄存器吗?

最佳答案

为了调用函数,改变映射如下。

:nnoremap ,, :call MyFunc()<cr>

通常,表达式映射对于在插入模式下使用很有用,因为它允许根据动态改变按键顺序一个特定的案例。如果要使用表达式寄存器插入文本在普通模式下进入缓冲区,你应该使用适当的普通模式命令插入或更改文本(例如,iIaA),然后是表达式寄存器评估要插入的文本。所以,映射

:nnoremap ,, cc<c-r>=MyFunc()<cr><esc>

如果函数 MyFunc() 返回包含要插入的文本的字符串:

function! MyFunc()
...
return 'text for inserting'
endfunction

关于vim - 从正常模式映射中使用 setline() 调用 vimscript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7439786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com