繁体   English   中英

在VIM中的线之间移动

[英]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)。

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

也许你可以使用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跳到位置a qa是任意的;我使用的主要是因为它们在QWERTY键盘上的位置。)

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

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

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

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

在池塘里掉下我的一角钱:

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

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

3 } j

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

27 j

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

2 [[ }

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

我的VIM版本可让你在点击J或K之前立即猜测一个数字。

15K上升了15行

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM