我想做这样的事情
try
normal! t_
catch
normal! w
endtry
意味着如果没有下划线,它将转到下一个下划线_
或下一个字边界。
您如何实际检查动议是否成功?我想比较命令之前和之后的getpos('.')
,但我意识到这并不一定意味着动作不成功。例如,如果cursos已经在_
答案 0 :(得分:3)
你最好的镜头是在运动前保持当前位置(设置标记或保存当前位置),然后检查位置。
:mark a
# or
:let col = col(".")
:let line = line(".")
# motion command (say w,j,zj,f.)
# check difference
:echo col("'a") . "," . line("'a") . " = " . col('.') . "," . line('.')
# or
:echo col . "," . line . " = " . col('.') . "," . line('.')
文档:
根据您的需要,col()
可能会被省略为移动探测器。
使用getpos()
:
getpos({expr})获取{expr}的位置。对于{expr}的可能值,请参见| line()|。 结果是| List |有四个数字:
[bufnum, lnum, col, off]
文档
:mark a # or :let old_pos = getpos(".") # motion command (say w,j,zj,f.) :let mark_a = getpos("'a") :let current_pos = getpos(".") # check difference :echo mark_a[2] . "," . mark_a[1] . " = " . current_pos[2] . "," . current_pos[1] # or :echo old_pos[2] . "," . old_pos[1] . " = " . current_pos[2] . "," . current_pos[1]
检查实际使用情况,保存旧标记(如果已经使用过)(lnum> 0),此处: