如何直接跳转到Vim中的列号

Jay*_*esh 219 vim

有时为了调试目的,我必须做一些令人兴奋的工作,涉及到缩小的javascript代码.这些线宽达600列.异常报告库非常友好,可以以行号和列号的形式为我提供准确的崩溃坐标.但是我找不到直接跳转到列号的方法,即使我可以很容易地跳到这一行.

我该怎么做?

A B*_*A B 309

|命令执行您想要的操作,因为30|它将带您进入第30列.

                                                        bar
|                       To screen column [count] in the current line.
                        exclusive motion.  Ceci n'est pas une pipe.
Run Code Online (Sandbox Code Playgroud)

http://vimdoc.sourceforge.net/htmldoc/motion.html#bar

  • 请注意,对于一般用法,这是*screen*列,而不是*real*列.这意味着`<Tab>`字符会得到不同的结果.如果这些字符在那里,你会想要`| 30lh`或`| 29l`或`029l`或类似的东西. (37认同)
  • 您还可以在各种动作命令之前传递一个数字,例如"50h"将移动50个字符. (23认同)
  • vim文档很有趣:"Ceci n'est pas une pipe":-) (10认同)
  • `:set nowrap`也可以帮助减少屏幕线和文件行之间的混淆. (7认同)
  • @DavidPope:请注意,在这种情况下,"屏幕列"表示它仍然相对于行的开头.`g0`实现了"当前屏幕线的开始". (4认同)

小智 37

你可以使用这个cursor功能.例如,要跳转到第15行的第25列,您可以使用:call cursor(15,25).

  • 这对于从其他工具打开 Vim 来说特别好,因为可以在命令行上完成此调用:`"+callcursor($LINE,$COLUMN)"` (5认同)
  • 这确实给出了问题的答案,并且使用Ex命令替代脚本可以很方便。请注意,如果行号为零,则光标将停留在当前行中。 (2认同)

sja*_*jas 10

80|将您带到第 80 列 - 如果您的行有那么多列,也就是说,从当前行的任何位置开始。

另外:这是一个管道符号,而不是小写字母“L”


ent*_*erd 8

在 Mac OS 上对我有用的另一种答案是使用将光标向右移动的命令(即l)。因此,如果您的光标位于第一列,并且您想将光标放在当前行的第 50 列,请使用以下命令:

49l
Run Code Online (Sandbox Code Playgroud)