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