如何在Vim中直接跳转到某一列?

312
有时为了调试目的,我不得不浏览经过压缩的JavaScript代码。每行长达600列。异常报告库很友好地提供了崩溃坐标的确切位置,包括行号和列号。但是,即使我可以轻松跳转到行号,我也找不到一种直接跳转到列号的方法。
我该怎么办?

听起来像是需要发明一个工具。“去除我的JS中的压缩,并且在你处理时跳转到这个列号所标识的位置。” - dnellis74
3
@dnellis74,那个工具已经存在了。它叫做“源映射” ;) - Burgi
//,@Burgi,可以提供三个单词的摘要和链接吗? - Nathan Basanese
4个回答

435

50
请注意,这是屏幕列而不是实际列,一般使用时要知晓。这意味着<Tab>字符会得到不同的结果。如果有这些字符,您将需要使用|30lh|29l029l或类似的内容。 - Chris Morgan
33
你还可以在各种移动命令前加上数字,例如 50h 将向左移动 50 个字符。 - A B
10
:set nowrap 可以帮助减少屏幕行和文件行之间的混淆。 - David Pope
5
请注意,在这种情况下,“屏幕列(screen columns)”仍然是相对于该行开头的。g0可以实现“当前屏幕行的开头”。 - Chris Morgan
16
vim的文档很搞笑:“这不是一支烟斗” :-) - Avinash Meetoo
当我这样做时,它只按字符计数移动(而不是按列计数)。如何让它正常工作? - hhh

82
您可以使用 cursor 函数。例如,要跳转到第 15 行的第 25 列,您可以使用 :call cursor(15,25)

5
这确实回答了这个问题,并且有Ex命令的替代方案对于脚本编写非常方便。请注意,如果行号为零,则光标将停留在当前行。 - Giles Gardam
7
尤其适用于从其他工具打开 Vim,因为可以在命令行上执行此调用:"+call cursor($LINE,$COLUMN)" - Laurence Gonsalves

17

在Mac OS上适用的另一种方法是使用将光标移动到右侧的命令(即l)。因此,如果您的光标位于第一列,并且想要将光标放置在当前行的第50列,请使用以下命令:

49l

1
我经常使用这个,但是输入 :21(回车)049l 来到特定位置感觉很麻烦,所以我才会遇到这个问题哈哈。 - Lazerbeak12345

9

80| 可以将你光标移动到当前行的第80列(如果该行有那么多列的话),并且可以在行内任何位置使用。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接