我正在尝试设置几张地图以快速完成合并冲突。这是我的代码:
func! DiffAccept(w)
diffget a:w
diffupdate
normal ]c
endfunc
noremap dh :exec DiffAccept("//2")<CR>
noremap dl :exec DiffAccept("//3")<CR>
每当我尝试使用它时,我得到“没有匹配的缓冲区:a:w”。我显然错误地使用了这个变量,但当我将该行更改为“echo a:w”时,它会按预期运行。
答案 0 :(得分:5)
Vim的评估规则与大多数编程语言不同。您需要使用:execute
来评估(函数参数)变量;否则,它按字面意思(作为缓冲区名称):
execute 'diffget' a:w
PS:首选使用:normal!
(!
);这可以避免来自映射的干扰。