VIM:零索引行号:设置号

Ara*_*ion 11 vim

使用VIM,可以很容易地显示任何给定文件的行号:

:set number
Run Code Online (Sandbox Code Playgroud)

但是,行编号为1索引,这意味着编号从1开始.通常这正是我想要的,但是我用来编译代码的特定工具报告零索引行号 - 即行号从零开始.

如何更改vim的行编号以进行补偿,以便查看vim缓冲区中的数字对应于工具提供的错误,此外,跳转到特定数字也与工具的数字相对应.

也就是说,如果该工具告诉我第98行有错误,我想通过键入"98G"而不是"97G"来跳转到那一行,我希望该行(在vim中真的是第97行)在行号列表中显示"98".

编辑:

虽然我可以过滤工具的输出,但相当简单,这不是一项简单的任务,因为该工具还输出对应于每一行的十六进制值,它具有相同的零索引形式,并且在信息性消息中输出好吧,不只是因为错误,我有很多这样的项目.

DrA*_*rAl 4

我认为这是不可能的;但是,假设外部工具的输出只是文本,则可能很容易过滤输出,使编号为 1 索引以匹配 Vim。您能给我们举一个您的输出示例吗?

编辑

或者,如果您从 Vim 调用外部命令,您可以执行类似的操作(基本上,添加一个空行,运行外部命令,然后删除空行):

command! RunMyExternalProgramme call RunMyExternalProgramme()

func! RunMyExternalProgramme()
    " Save the old setting of makeprg
    let s:savedMakePrg = &makeprg

    " Save the screen layout
    let s:savedView = winsaveview()

    if config_file != ''
        " Put a blank line at the start of the file
        :1put! =''
        " Save
        write
        " Change makeprg and run it
        let &makeprg = '/path/to/programme -options etc'
        make
        " Delete the blank line
        1d
        " Save
        write
    endif

    " Restore the screen layout (optional)
    call winrestview(s:savedView)

    " Restore the old setting of 'makeprg'
    let &makeprg = s:savedMakePrg
endfunc
Run Code Online (Sandbox Code Playgroud)