在VIM中的线之间移动

时间:2011-09-29 19:47:39

标签: vim text-editor edit

假设我有一个包含N行的文件。我在第X行,我想转到第Y行,其中X和Y都在屏幕上可见。我可以通过输入:Y<cr>来做到这一点,但是如果Y> 99,那就是很多打字。我也可以做abs(Y-X)[kj](按abs(Y-X)向上或向下移动),但对于大X,Y在心理上计算这种差异并不容易。

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

6 个答案:

答案 0 :(得分:8)

您可:set relativenumber为您做Y-X计算(仅限Vim&gt; = 7.3)。

答案 1 :(得分:3)

您可以使用HML进入屏幕的顶部,中间和底部。

答案 2 :(得分:2)

也许您可以使用HML

这些键将光标跳转到显示行:

H    "Home" top of screen
M    "Middle" middle of screen
L    "Last" last line of screen

计算后,它们会偏移:4L会转到最后一行(1LL相同)。

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

你有一个标记,你可以用它们来命令。要从当前位置删除标有q的行,您只需使用:d'q

有一个变体,而不是单引号,你使用后引用。这会将您带到放置标记的行的确切位置;单引号使用行的开头。

这些标记甚至适用于ex(命令行)命令。要限制搜索和替换为一组特定的行,我分别用标记be标记起始行和结束行,然后像我这样进行搜索和替换:

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

答案 3 :(得分:2)

在池塘里放下我的角钱:

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

导航空白行

由于在任何一个屏幕上通常只有这么多的空白描述(并且它们很容易在视觉上被识别和计算),我发现它就是这样。

3 } Ĵ

让我在预定的路线上经常比例如猜测

27 j

最重要的是,许多“支持全部”编程语言在功能开始时都有开口大括号。这些可以通过 [[ resp。 ]] 。所以有时这只是一件事,例如

2 [[ }

(意思是:在第一个连续的行块之后转到上一个函数的开头)

答案 4 :(得分:0)

我的VIM版本可让您在点击J或K之前立即猜测一个数字,以便走多行。

15K上升15行

答案 5 :(得分:0)

你正在变得越强硬,你乍一看就可以计算出更多的线条。 不知道,也许有一些聪明的技巧,但我只需输入17k / 23j等等。

另外,在要跳转的字符串上搜索一些单词。

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