我想要做这样的事情如何检查vim命令(动作)是成功还是失败?
try
normal! t_
catch
normal! w
endtry
这意味着,如果没有底线就会去下一个下划线_
或下一个字边界。
您如何确实检查动作是否成功?我曾想过在命令前后比较getpos('.')
,但我意识到这并不一定意味着该动议不成功。例如,如果光标已经在_
我想要做这样的事情如何检查vim命令(动作)是成功还是失败?
try
normal! t_
catch
normal! w
endtry
这意味着,如果没有底线就会去下一个下划线_
或下一个字边界。
您如何确实检查动作是否成功?我曾想过在命令前后比较getpos('.')
,但我意识到这并不一定意味着该动议不成功。例如,如果光标已经在_
您最好的拍摄将是在动作之前保持当前位置(设置标记或保存当前位置)并在此之后检查位置。
: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)这里:
您不必添加标记。只需存储之前的光标位置并与稍后的光标位置比较 – 2015-09-09 06:29:53
该死!你是对的。这更简单。我会添加一个关于这个的注释。 – albfan 2015-09-09 06:50:23
为什么不从光标pos检查文本直到行结束,如果它包含'_',如果是,做某事。别的,做某事。其他? – Kent 2014-10-21 09:44:53