以下是我从互联网上获取的代码片段。假设我们位于第48行(靠近底部的第二个输入),但是,我们需要回到第8行的第二个 。我们只是点击了:82o
?
如果行号非常大(例如,1425)并且行内有一些相同的单词,该怎么办?
在这种情况下,它需要很多击键,即使我到达线后我也必须点击w
。在大文件中随机访问某个单词的情况下,VIM如何与鼠标竞争,在这种情况下,您只需要用鼠标移动指针即可实现此目的?
修改:代码是我从互联网上获取的一个片段,用于说明我的问题。可能的情况可能是我正在1148行工作,我想回到第1108行只是为了更改注释中的单词,或者我需要通过在行1108中进行一些改变来修复错误。因此,回归的地方难以预测且几乎是随机的。
编辑:我希望了解使用vanilla Vim实现此目标的最佳做法。但您可以随意提供基于插件的解决方案。
<HTML>
<HEAD><TITLE> Banner</TITLE>
<SCRIPT LANGUAGE= "javascript">
// Puts the text to scroll into variable called sent - SECTION A
// uses length propert to assess its length and put into variable slen
// initalizes a,b,n, and subsent variables
var sent = "This is a demonstration of a banner moving from the left to right. It makes use of the substring property of Javascript to make an interesting display"
var slen = sent.length
var siz = 25
var a = -3, b = 0
var subsent = "x"
// Creates a function to capture substrings of sent - SECTION B
function makeSub(a,b) {
subsent = sent.substring(a,b) ;
return subsent;
}
//Creates a function that increments the indexes of the substring - SECTION C
//each time and calls the makeSub() function to geneate strings
//a indicates start of substring and siz indicates size of string required
function newMake() {
a = a + 3;
b = a + siz
makeSub(a,b);
return subsent
}
//function uses loop to get changing substrings of target - SECTION D
//repeatedly calls newMake to get next substring
//uses setTimeout() command to arrange for substrings to display
// at specified times
function doIt() {
for (var i = 1; i <= slen ; i++) {
setTimeout("document.z.textdisplay.value = newMake()", i*300);
setTimeout("window.status = newMake()", i*300);
}
}
</SCRIPT>
</HEAD>
<BODY >
<HR> <CENTER>
<FORM NAME="z">
<INPUT NAME="textdisplay" TYPE="text" SIZE=25> <P>
<INPUT NAME="doit" Type="button" value = "Run Banner" onClick = "doIt()">
</FORM></CENTER>
<HR>
</BODY></HTML>
&#13;
答案 0 :(得分:2)
如果您知道应该找到哪个单词,那么导航的最佳方式就是搜索它。
我会做/of
来搜索,我就在那里。
我发现这比移动鼠标指针更容易。
现在看到真正大文件的情况,relativenumbers
可以帮到你。
set relativenumber
现在从1148
转到1104
,您可以执行40k
然后使用 f 来获得所需的角色。
您可以在 f 前加上数字,以移至该字符的第n个外观。你也可以搜索。
我再次发现这比使用鼠标更容易。
如果你有足够的命令来搜索和移动前缀为 j k ,那么你将比使用鼠标更快。
答案 1 :(得分:1)
编辑不是您在示例中随机执行的操作。导航通常从一个兴趣点发生到另一个相关兴趣点,无论两个POI是同一任务的一部分还是相关任务的一部分。
你的第一个例子是非常不现实的,原因有两个:
从初始状态开始,唯一可能有用的导航是跳转到事件处理程序的定义,该定义只有?do<CR>
。请注意,该功能已经在我们的鼻子下,所以如果我们想要的只是知道doIt()
做什么,就不需要导航到开头。
你的第二个例子过于抽象,无法使用。
您可以使用的本地导航工具对应于各种缩放级别:
gegEbBwWeE
在单词级别,fFtT;,0^$g_g^g$
在线级,(){}
在段落级别,ggnG
在缓冲级别,nHMnL
在窗口级别,hjkl
或gm
。但最强大的是搜索,?/nN
(与set incsearch
一起使用),可让您轻松地直接跳到任何地方。
答案 2 :(得分:0)
对于随机访问,使用\{keyword}
进行关键字搜索通常是您的最佳选择。虽然我有一种感觉,这个问题(使用 这个词)是为了破坏这种方法,我会指出你仍然可以通过继续输入下一个单词来运行这个搜索在 之后。通过这种方法,我们最多可以看到5-7次击键。如果你问我,这比使用鼠标要好得多。
其他几个人提到了EasyMotion项目。我对这个项目不太熟悉,所以我不会再对此进行评论。
我不相信使用Vim获得的额外效率是不惜一切代价避免使用鼠标的结果;相反,它是训练自己避免不惜一切代价离开主页的结果。这不是鼠标的机制,而是键盘与鼠标之间不断的任务切换,这使我们的速度降低了