从vi / vim中的当前位置移动光标x行


79

有没有办法在vi / vim中将光标移动到相对的行数?假设您要删除的代码块下有10行光标。如果您按相对顺序显示行号,那么最好有一个“跳转10行”命令,它将带您到那里。

或者最好显示绝对行号,然后转到xgg,其中x是行号?


如果您必须重复多次:superuser.com/questions/429917/…–
toliveira

Answers:


122

是的,当然有办法。jk下移和上一行,所以10j10k下降或上升十行。您可以在数字前面加上任何重复的动作。

您可能还想做set relativenumber很多事情-通过打印相对于当前行的行号(而不是绝对数)来帮助您节省计数。


谢谢!我应该已经知道该计数也将适用于move命令。你让我今天一整天都感觉很好!

1
从Vim 7.4开始,可以通过在.vimrcset relativenumber和中添加以下内容,同时看到相对行号和绝对行号set number。这将为相对行号提供光标所在行的绝对行号。
艾萨克·格雷格森

2
您还可以通过简单地键入数字后跟向下移动几行enter(对于绝对行号,只需在前面加上冒号即可)。如果您习惯于jk普通的键盘布局,可能并不太有用,但是作为箭头使用Colemak的用户,enter比Colemak j(QWERTYy键)更容易触及
SnoringFrog

49

上下移动10行可能不适合您的任务以及其他选项。考虑其他动作:

CtrlfCtrlb页面前进和后退。

}{向前和向后移动一段。

您可以在vimrc中编写规则以绑定10j到键,例如J,通过在vimrc文件中添加以下行来向下移动10行: map <S-j> 10j

但是,您将覆盖有用的现有J命令(合并两行)。为10j/找到一个定位良好的未使用组合键10k可能很困难,因此我建议使用我提到的现有动作。

您可能还想知道,您可以通过执行操作后退到看到的单词:?someword然后通过执行操作 前进到您看到的单词/someword。这些将比尝试上下移动10行然后将光标重新定位到确切位置要快。如果您无法想到所讨论行的简单搜索字符串,则始终可以按照您所说的(xgg)转到行号。


上下页面完成了我想要的!
jeremyjjbrown 2014年

1
我一直使用ctrl -f和ctrl -b,但是忽略了{,},这可能是编辑代码的最佳粒度!谢谢!
Thomson Comer 2014年

确切知道一个人需要移动多少行几乎是不可能的。{和}是我的首选。
Andrejs,

11

我当时正忙于vim,并且注意到-将您向上和+向下移动,所以您可以:

10-

或者可以使用,k因为您最习惯了hjkl光标移动。


3
对于向前移动,enter其作用与+在数字之后相同,并且在大多数时间更容易到达
SnoringFrog

@SnoringFrog是的,但这只是上下之间可能存在某种关系;我的意思并不是让任何人像这样实际上下移动,因为无论如何hjkl还是最快的。
Cilan 2015年
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.