vi 命令行,转到行和列

Dom*_*que 21 vim cursor

很长一段时间以来,我一直在混合使用emacsvivim)。他们每个人都有自己的优势。我从类似过程的编译中解析错误输出并获取行号和列号,但我只能使用emacs直接转到行和列:

emacs +15:25 myfile.xml
Run Code Online (Sandbox Code Playgroud)

vi我只有行号(根据手册页)

vi +15 myfile.xml
Run Code Online (Sandbox Code Playgroud)

有一个选项可以将光标定位在vi +/pattern myfile.xml我从未工作过的模式 ( ) 上。但这对我没有帮助,因为该模式并不总是文件中的第一次出现。

我怎样才能开始vi,让它转到我文件第 15 行的第 25 列?我可以用-c选项做点什么吗?

Chr*_*sta 18

您可以使用:

vi '+normal 15G25|'  myfile.xml
Run Code Online (Sandbox Code Playgroud)

  • 解释:vi 中的大多数命令(即大多数字母)可以在前面加上数字(或范围)以更改其默认行为或重复它(或将其应用于特定范围)。在 vi 中,在命令模式下,您可以执行 `15G` 转到第 15 行,执行 `25|` 转到第 25 列。 Christa 展示了如何从命令行执行相同操作。 (2认同)

Ing*_*kat 9

使用文件行插件,您可以简单地将行和列附加到文件名,无论是在调用 Vim 时还是在内部使用如下命令:edit

vim myfile.xml:15:25
Run Code Online (Sandbox Code Playgroud)


hil*_*red 6

只是为了好玩,-c 'normal 14j24l'这会让你在第 15 行字符 25


Ant*_*hon 5

我不知道这个-c选项,但你应该能够做到:

vi '+cal cursor(15,25)' myfile.xml
Run Code Online (Sandbox Code Playgroud)

(请确保您因为括号而引用()

  • 它对于由多个字节表示的非 ASCII 字符很重要。此外,一个制表符和控制字符通常会占用多个显示列。 (2认同)