如何将光标移动到特定的行和列?

90

:30 将把光标移动到第30行的开头。

我如何告诉Vim将光标置于第y行,第x列?是否可以在不使用箭头键或 h, j, k, l 的情况下实现这一点?

我正在运行Vim版本7.3.429。

4个回答

142

尝试输入数字,并在其后加上竖线以定位到该行中的指定列。

80| 将使光标移动到该行的第 80 列。

编辑:如果您想要到达特定的 x,y 位置,我不确定如何操作。


谢谢,我忘记了补充一点,在使用您的建议时我得到了E16:无效范围> wc temp.txt 3 80 454 temp.txt - vcapp
70
他的意思是在正常模式下输入 80|,而不是 :80|。因此,如果你想获取一个X,Y坐标(例如42,80),可以输入42G80|。如果你想从命令行模式下执行该操作,则可以输入:norm 42G80| - Conner
谢谢,康纳。我也不确定如何精确地做到X、Y! - WebDevNewbie
@Conner 我喜欢你的评论,你能把它转换成答案吗,这样我会更明显吗? - SebMa

93

不确定它是否更加方便,但是你可以直接调用cursor函数:

:cal cursor(30, 5)

将跳转到第30行,第5列。


4
敲入的按键比":30<CR> 80|"多,但知道有光标功能还是很酷的! - Larry
3
这个解决方案与+...命令行选项结合使用尤其好用:它允许调用vim的脚本精确地定位光标。 - cmaster - reinstate monica
当编写 Vim 脚本时,这尤其有帮助。 - jdhao

38

在命令模式下:

输入大写字母 G 后跟一个数字即可转到该行号。
例如:30G 跳转到第 30 行。
例如:G 跳转到缓冲区的最后一行。

输入竖线符号 | 后跟一个数字即可转到当前行的该列。
例如:80| 跳转到第 80 列。

所以,输入 30G80| 可以跳转到第 30 行,第 80 列。


2

另一种选项是使用 execute <line_num> 命令。例如,

function GotoLine(line)
     execute a:line
endfunction

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