[英]Moving between lines in VIM
假设我有一个包含N行的文件。 我在第X行,我想转到第Y行,其中X和Y都在屏幕上可见。 我可以通过键入:Y<cr>
来做到这一点,但是如果Y> 99那就是很多打字。 我也可以做abs(YX)[kj](通过abs(YX)向上或向下移动),但对于大X,Y在心理上计算这种差异并不那么容易。
有没有办法利用这个事实,X,Y在屏幕上可见并在X和Y之间快速移动?
您可以:set relativenumber
为您进行YX计算的:set relativenumber
(仅限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
跳到位置a
。 ( q
和a
是任意的;我使用的主要是因为它们在QWERTY键盘上的位置。)
你有一个标记,你可以用它们来命令。 要从当前位置删除到标有q
的行,您只需使用: d'q
有一个变体,而不是单引号你使用后引用。 这会将您带到放置标记的行的确切位置; 单引号使用行的开头。
这些标记甚至适用于ex
(命令行)命令。 为了限制搜索和替换到一组特定的行,我分别用标签b
和e
标记开始和结束行,然后像我这样进行搜索和替换:
:'b,'es/foo/bar/g
在池塘里掉下我的一角钱:
我发现使用文本对象遍历代码非常容易。 我很少再使用jk / JK来进行更大的跳跃。 相反,我使用{和}导航空白行
由于在任何一个屏幕上通常只有这么多的空白描绘(并且它们很容易被视觉识别和计数),我发现例如
让我在预定的线路上经常比例如猜测的那样
最重要的是,许多“大括号”编程语言在功能开始时都有开口大括号。 这些可以通过[[ resp。 ]] 。 所以有时这只是一件事,例如
(意思是:在第一个连续的行块之后转到上一个函数的开头)
我的VIM版本可让你在点击J或K之前立即猜测一个数字。
15K上升了15行
你正在变得越强硬,你乍一看就可以计算出更多的线条。 不知道,也许有一些聪明的技术,但我只是键入类似17k / 23j等等。
另外,在你要跳的字符串上搜索一些单词。
此外, zz
(中心屏幕)在这种情况下有时也很有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.