假设我有一个包含N行的文件。我在第X行,我想转到第Y行,其中X和Y都在屏幕上可见。我可以通过输入:Y<cr>
来做到这一点,但是如果Y> 99,那就是很多打字。我也可以做abs(Y-X)[kj](按abs(Y-X)向上或向下移动),但对于大X,Y在心理上计算这种差异并不容易。
有没有办法利用这个事实,X,Y在屏幕上可见并在X和Y之间快速移动?
答案 0 :(得分:8)
您可:set relativenumber
为您做Y-X计算(仅限Vim&gt; = 7.3)。
答案 1 :(得分:3)
您可以使用H
,M
或L
进入屏幕的顶部,中间和底部。
答案 2 :(得分:2)
也许您可以使用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
答案 3 :(得分:2)
在池塘里放下我的角钱:
我发现使用文本对象遍历代码非常容易。我很少再使用jk / JK来进行更大的跳跃。相反,我使用 { 和 }
导航空白行由于在任何一个屏幕上通常只有这么多的空白描述(并且它们很容易在视觉上被识别和计算),我发现它就是这样。
让我在预定的路线上经常比例如猜测
最重要的是,许多“支持全部”编程语言在功能开始时都有开口大括号。这些可以通过 [[ resp。 ]] 。所以有时这只是一件事,例如
(意思是:在第一个连续的行块之后转到上一个函数的开头)
答案 4 :(得分:0)
我的VIM版本可让您在点击J或K之前立即猜测一个数字,以便走多行。
15K上升15行
答案 5 :(得分:0)
你正在变得越强硬,你乍一看就可以计算出更多的线条。 不知道,也许有一些聪明的技巧,但我只需输入17k / 23j等等。
另外,在要跳转的字符串上搜索一些单词。
此外,zz
(中心屏幕)在这种情况下有时会有所帮助。