使用VIM,可以很容易地显示任何给定文件的行号:
:set number
Run Code Online (Sandbox Code Playgroud)
但是,行编号为1索引,这意味着编号从1开始.通常这正是我想要的,但是我用来编译代码的特定工具报告零索引行号 - 即行号从零开始.
如何更改vim的行编号以进行补偿,以便查看vim缓冲区中的数字对应于工具提供的错误,此外,跳转到特定数字也与工具的数字相对应.
也就是说,如果该工具告诉我第98行有错误,我想通过键入"98G"而不是"97G"来跳转到那一行,我希望该行(在vim中真的是第97行)在行号列表中显示"98".
虽然我可以过滤工具的输出,但相当简单,这不是一项简单的任务,因为该工具还输出对应于每一行的十六进制值,它具有相同的零索引形式,并且在信息性消息中输出好吧,不只是因为错误,我有很多这样的项目.
我认为这是不可能的;但是,假设外部工具的输出只是文本,则可能很容易过滤输出,使编号为 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)
| 归档时间: |
|
| 查看次数: |
3646 次 |
| 最近记录: |