在VIM中的行之间移动

在VIM中的行之间移动,vim,text-editor,edit,Vim,Text Editor,Edit,假设我有一个有N行的文件。我在X行,我想移到Y行,在那里X和Y都可以在屏幕上看到。我可以通过键入:Y,但如果Y>99,那就需要大量键入。我也可以做abs(Y-X)[kj](通过abs(Y-X)向上或向下移动),但是对于大X,Y,在心里计算这个差值并不是那么容易 有没有办法利用这样一个事实,即X和Y在屏幕上都是可见的,并且在X和Y之间快速移动?我的VIM版本允许您在点击J或K之前立即对一个数字进行guestimate 15K上升15行你变得越坚强,第一眼就能数到的行数就越多。 不知道,也许有一些聪

假设我有一个有N行的文件。我在X行,我想移到Y行,在那里X和Y都可以在屏幕上看到。我可以通过键入
:Y
,但如果Y>99,那就需要大量键入。我也可以做abs(Y-X)[kj](通过abs(Y-X)向上或向下移动),但是对于大X,Y,在心里计算这个差值并不是那么容易


有没有办法利用这样一个事实,即X和Y在屏幕上都是可见的,并且在X和Y之间快速移动?

我的VIM版本允许您在点击J或K之前立即对一个数字进行guestimate


15K上升15行

你变得越坚强,第一眼就能数到的行数就越多。 不知道,也许有一些聪明的技巧,但我只是键入17k/23j之类的东西

此外,在要跳转的字符串上搜索一些单词也可以


另外,在这种情况下,
zz
(中央屏幕)有时也会有所帮助。

您可以
:设置相对枚举器
,它可以为您进行Y-X计算(仅在Vim>=7.3中)。

您可以使用
H
M
L
来进入屏幕的顶部、中部和底部。

也许您可以使用
H
M
L

这些键可跳转光标以显示行:

H    "Home" top of screen
M    "Middle" middle of screen
L    "Last" last line of screen
通过计数,它们的偏移量:
4L
将转到最后一行上方的第三行(
1L
与刚才的
L
相同)

就我个人而言,我大量使用
m
命令来标记一条用于导航的线。从我现在的位置,点击
mq
,用标签
q
标记位置;然后导航到另一行,并
ma
用标签
a
标记它;从那时起,我可以点击
'q
跳到
q
位置,点击
'a
跳到
a
位置。(
q
a
是任意的;我使用它们主要是因为它们在QWERTY键盘上的位置。)

只要有标记,就可以将其用于命令。要从当前位置删除到标有
q
的行,只需使用:
d'q

有一种变体,其中使用的不是单引号,而是反向引号。这会将您带到放置标记的线上的确切位置;单引号使用行的开头

这些标记甚至适用于
ex
(命令行)命令。为了将搜索和替换限制为一组特定的行,我分别用标签
b
e
标记开始行和结束行,然后像这样执行搜索和替换:

:'b,'es/foo/bar/g

把我的一角硬币扔到池塘里:

我发现使用文本对象遍历代码非常容易。我很少再使用jk/jk进行更大的跳跃了。相反,我使用{}

因为在任何一个屏幕上通常只有这么多的空白区域(而且它们很容易被视觉识别和计数),我发现例如

3} j 将我置于预定线路上的次数要比猜测的次数多得多

27j 最重要的是,许多“大括号已满”编程语言在函数的开头都有大括号。可通过[[resp.]]联系这些信息。所以有时候这只是一个做的问题,例如

2[[}
(意思是:在第一个连续的行块之后,转到上一个函数的开始)

这就是我所说的“abs(Y-X)[kj]”@pbp,不,事实上,当你使用vim一段时间时,你只是不计算绝对数,你只是想得到你需要跳转的大致行数。是的,我也可以估计差异,但我认为可能有更好的方法:)@pbp,我想估计是这里最好的选择。直到我们不介意wave插件)哦,而不是
:Y
你可以使用
YG
,这是两个少打字的键。这正是我想要的!@dmedvinsky,哦,这一个很好。应该检查7.3的新功能…或者
Ygg
。有些人觉得更容易(这不是我的情况)@dmedvinsky:视情况而定。冒号不会在所有键盘布局中移动。使用计数H和L可以从顶部或底部计数行。当团队成员使用插入大量无关空格的编辑器时,这会有点麻烦;
{
不会停在(或计数)由一定数量的空格组成的一行。
autocmd BufWritePre*{cpp,etc}%s/\s\+$//e
解救!@dash tom bang:这一直让我着迷:什么编辑会这么做?!我得出结论,唯一有这个问题的编辑总是坐在键盘后面:)-但也许你有一个我不知道的秘密?如果你在(某些)中的空白行中点击
其他做某种形式的自动缩进的编辑器,你经常会在那一行留下缩进。另一方面,Vim删除了所说的空白。PEBCAK解释了一些问题,但不是所有问题。:)我不能告诉你哪些编辑器会这样做,因为这里的人使用各种各样的免费和非免费的东西。