vim - 你如何检查一个 vim 命令(一个 Action )是成功还是失败?

标签 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() function
  • line() function

  • 根据您的需要,col()可以省略作为运动检测器。

    使用 getpos() 可以获得更准确的位置:

    getpos({expr}) Get the position for {expr}. For possible values of {expr} see |line()|. The result is a |List| with four numbers:

          [bufnum, lnum, col, off]
    


    文档
  • getpos() function

  • :标记一个
    # 或者
    :let old_pos = getpos(".")
    # 运动命令(比如 w,j,zj,f.)
    :let mark_a = getpos("'a")
    :let current_pos = getpos(".")
    # 检查差异
    :echo mark_a[2] 。 “,”。标记_a[1] 。 “=”。 current_pos[2] 。 “,”。 current_pos[1]
    # 或者
    :echo old_pos[2] 。 “,”。 old_pos[1] 。 “=”。 current_pos[2] 。 “,”。 current_pos[1]

    检查实际使用情况,如果已使用(lnum > 0),则保存旧标记,此处:

    ag.vim autoload/ag.vim:215

    关于vim - 你如何检查一个 vim 命令(一个 Action )是成功还是失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26474055/

    相关文章:

    c - vim c 在插入模式下自动完成,无需按 C-X C-O

    Vim:let 和 set 有什么区别?

    vim - 按 <Enter> 在行首给出 "M"

    vim - 如何在 Windows 上的 gvim 中找到 _vimrc 文件的位置?

    Vim:向后范围——可以交换

    VIM:在 enew 上执行自动命令

    matlab - Vim:每次在同一个外部程序中运行代码

    android - 从 eclim 在设备上运行 android 项目

    vim - 使用模糊搜索在 Vim 中打开文件

    vim - 在 vim 中自动完成 javascript/DOM API?