我以为这样会更容易,但是我还没有做到。我想运行一个函数,该函数导致在光标之后插入特定的文本块(这是我经常插入的一些文本)。
完成后,我会将按键映射到此类功能。我不能使用append(),因为我不想创建新行,只是想在光标后附加一些文本,就像'A'命令一样。
答案 0 :(得分:0)
您可以使用
exe "normal! a".functionresult."\<esc>"
或代替使用append()
,您可以请求当前行,在光标位置进行更改,然后替换。
let line = getline('.')
let pos = col('.')-1 " IIRC
let line = line[:pos-1] . functionresult. line[pos:]
call setline('.', line)
我很可能在使用列偏移量(我已经检查了代码的行为),但这就是这个主意。
请注意,根据触发插入的方式,仅具有表达式映射可能会更简单
inoremap <silent> <expr> YOURTRIGGER <sid>the_function()
答案 1 :(得分:0)
您可以使用映射:
:nnoremap <F2> axxx<Esc>
也就是说,在 F2 上,运行命令a
,附加文本“ xxx”,模拟按 Esc 退出附加模式。
PS。命令A
不会附加在光标之后,而是附加在行的末尾。命令a
确实在光标之后追加。
您也可以使用缩写:
:iabbrev tx some long text
每次插入“ tx”并按 Space 时,将“ tx”替换为文本。