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


77

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

如何告诉Vim将光标放在y行,x列?这是可能的,而无需使用箭头键或hjkl钥匙?

我正在运行Vim 7.3.429版本。

Answers:


122

尝试输入数字,然后输入管道以到达该行中的指定列。

80| 应该使您在该行中排名80。

编辑:如果您要转到特定的x,y位置,我不确定在那个位置上。


谢谢,我也忘记了使用您的建议添加的内容,我得到E16:无效范围> wc temp.txt 3
80454

60
他的意思80|是正常模式,不是:80|。因此,如果您想获取X,Y坐标(例如42,80),则可以这样做42G80|。如果要从命令行模式执行此操作,则可以执行:norm 42G80|
Conner

谢谢,康纳。我也不知道怎么做精确的X,Y!
WebDevNewbie 2012年

@Conner我喜欢您的评论,您可以将您的评论转换为答案,以便我更明显吗?
SebMa

84

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

:cal cursor(30, 5)

将跳到第30行的第5列。


4
击键次数多于:30 <CR> 80 |,但很高兴知道有光标功能!
拉里

2
+...命令行选项结合使用时,该解决方案特别好:它允许调用vim的脚本精确定位光标。
cmaster-恢复莫妮卡

这在编写Vim脚本时特别有用。
jdhao

25

在命令模式下:

键入一个数字,后跟G(大写)以转到该行号。
示例:30G转到第30行。
示例:G转到缓冲区的最后一行。

键入一个数字,后跟| (管道)转到当前行中的该列。
示例:80 | 转到第80列。

因此:30G80 | 转到第30行第80列。


1

使用的另一种选择execute <line_num>。例如,

function GotoLine(line)
     execute a:line
endfunction
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.