从vimscript的光标后插入文本块

时间:2019-06-21 11:04:54

标签: vim

我以为这样会更容易,但是我还没有做到。我想运行一个函数,该函数导致在光标之后插入特定的文本块(这是我经常插入的一些文本)。

完成后,我会将按键映射到此类功能。我不能使用append(),因为我不想创建新行,只是想在光标后附加一些文本,就像'A'命令一样。

2 个答案:

答案 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”替换为文本。