vim 快捷键 总结-移动

12 篇文章 0 订阅

工欲善其事必先利其器!用source insight 总是感觉 比不上vim。 所以就狠心总结一下,用多了 ,自然就习惯了。等习惯的时候,呵呵。

本文是参阅了 Vim-handbook-cn-72.pdf 的中文版,版权归原作者所有。


以Word为单位的移动  使用"w"命令可以将光标向前移动一个word,你可以在"w"前面指定一个数字前辍以向前移动指定个数的word. 。"b"命令则将光标向后移动到前一个word的首字符上.同样,"e"命令会将光标移动到下一个word的最后一个字符.象"w"有一个反方向的命令"b"与之对应一样,"e"命令有"ge",它将光标移动到前一个word的最后一个字符上.如果光标已经位于当前行的最后一个word,则"w"会移动到下一行的第一个word上去。所以使用"w"就可以在整个文本段中移动,速度要比"l" 快多了。"b"也一样,只是方向相反。有一些被认为是non-word的特殊字符, 比如".", "-"或")"充当了word边界的作用。要改变Vim对word边界的定义,请查看°iskeyword°选项。还可以以空白为分界的WORDs为单位进行移动。这种WORD与通常意义上的word的边界不同。所以此处用了大写的WORD来区分于word.它的移动命令也是相应字母的大写形式.混合使用这种不同大小写的命令,你可以更快地在文本中前后移动.


移动到行首或行尾 "$"命令将光标移动到当前行行尾。如果你的键盘上有一个<End>键,它的作用也一样。"^"命令将光标移动到当前行的第一个非空白字符上1. "0"命令则总是把光标移动到当前行的第一个字符上。<Home>键也是如此。"$"命令还可接受一个计数,就象其它的移动命令一样。但是移动到一行的行尾多于一次没有任何意义。所以它的功能被赋予为移动到下一行的行尾。如"1$"会将光标移动到当前行行尾,"2$"则会移动到下一行的行
尾,如此类推。"0"命令却不能接受类似这样的计数,因为"0"本身就是一个数字,所以合起来"0"会成为你前面指定的计数的一部分,另外,并不象其它命令一样可以举一反三,命令"^"前加上一个计数并没有任何效果.


移动到指定的字符上  一个最有用的移动命令是单字符搜索命令。命令"fx"在当前行上查找下一个字符x。提示:"f"意为"find"。该命令可以带一个命令计数,"F"命令向左方向搜索."tx"命令形同"fx"命令,只不过它不是把光标停留在被搜索字符上,而是在它之前的一个字符上提示:"t"意为"To"。该命令的反方向版是"Tx". 这4个命令都可以用";"来重复。以","也是重复同样的命令,但是方向与原命令的方向相反。无论如何,这4个命令都不会使光标跑到其它行上,去。即使当前的句子还没有结束.



以匹配一个括号为目的的移动   写程序的时候很容易被层层嵌套的()给弄糊涂。此时使用命令“%"就太方便了:它跳转到与当前光标下的括号相匹配的那一个括号上去。如果当前光标在"("上,它就向前跳转到与它匹配的")"上,如果当前在")"上,它就向后自动跳转到匹配的"("上去.这对方括号[]和花括号fg同样适用。(具体可以处理哪些括号可以由'matchpairs'选项来定义).如果当前光标并没有停留在一个可用的括号字符上,"%"也会向前为它找到一个。所以如果当前光标位于上例中的行首,"%"命令还是会向前先找到第一个"(",然后找到与它匹配的")".


移动到指定行  用"G"命令。指定一个命令计数,这个命令就会把光标定位到由命令计数指定的行上。比如"33G"就会把光标置于第33行上。没有指定命令计数作为参数的话3, "G"会把光标定位到最后一行上。"gg"命令是跳转到第一行的快捷的方法。"1G"效果也是一样,但是敲起来就没那么顺手了。另一个移动到某行的方法是在命令"%"之前指定一个命令计数. 比如"50%"将会把光标定位在文件的中间. "90%"跳到接近文件尾的地方。但如果你只是想移动到目前显示在屏幕上的那些行呢。"H"意为Home, "M"为Middle, "L"为Last.可以跳到当前页面的顶行,中间行和底行。


告诉你当前的位置 使用CTRL-G命令。你会得到一些类似于下面的信息行(假设'ruler'选项已关闭)。设置'number'选项,:set number。这会在每行的前面显示一个行号。将行号关闭,可以用命令:set nonumber。设置'ruler'选项。这会在Vim窗口的右下角显示当前光标位置。:set ruler。


滚屏  CTRL-U命令会使文本向下滚动半屏。CTRL-D命令将窗口向下移动半屏。要一次滚动一行可以使用CTRL-E(向上滚动)和CTRL-Y(向下滚动)。要向前滚动一整屏(实际上是整屏去两行)使用命令CTRL-F。另外CTRL-B是它的反向版。很幸运CTRL-F是向前1,CTRL-B是向后2,好记吧!一个经常遇到的问题是你用"j"命令向下移动了若干行后当前光标已经处于屏幕的底端了。而你又想查看当前行前后的几行内容。"zz"命令会把当前行置为屏幕正中央。"zt"命令会把当前行置于屏幕顶端,"zb"则把当前行置于屏幕底端。


简单搜索  "/string"命令可用于搜索一个字符串。字符.*[]^%/?~$ 有特殊意义,如果你要找的东西包括这些内容,要在这些字符前面放置一个反斜杠。要查找上次查找的字符串的下一个位置。使用"n"命令。如果你知道你要找的确切位置是目标字符串的第几次出现,还可以在"n"之前放置一个命令计数。

"?"命令与"/"的工作相同,只是搜索方向相反。"N"命令会重复前一次查找,但是与最初用"/"或"?"指定的搜索方向相反。所以在"/"命令之后的"N"命令是向后搜索,而"?"之后的"N"命令是向前搜索。在normal模式下,先键入一个数字然后键入/继续输入要查找的字符,回车后可以向前找到第N个匹配处,其中N正是键入的数字。


忽略大小写  如果你并不关心目标字符中字母的大小写,可以通过设置'ignorecase'选项,:set ignorecase。要回到对大小写的精确匹配,可以重设,:set noignorecase。


命令历史记录  按下"/"来搜索, 先别按回车键。如果此时你按下上箭头键,可以找到上次或下次搜索的内容。如果你知道你用过的某个搜索字串的开头,你就可以在键入这个开头部分之后再按上箭头键。以":"开始的命令也有一个历史记录。它让你找到用过的冒号命令重复执行它。这两个命令历史记录是相互独立的。


在文本中查找下一个WORD   把光标定位于这个word上, 然后按下"*"键  "#"命令是"*"的反向版。还可以在这两个命令前加一个命令计数:"3*"查找当前光标下的word的第三次出现。


查找整个WORD   "\>"是一个特殊的记法,它只匹配一个word的结束处。近似地,"\<"匹配到一个word的开始处。 如 /\<the\>,这个命令就不会匹配到"there"或"soothe"。注意"*"和"#"命令会在内部使用这些标记word开始和结束的特殊标记来查找整个的word(你可以用"g*"和"g#"命令来同时匹配那些包含在其它word中的字串.)


高亮显示搜索结果  :set hlsearch 高亮显示搜索结果。关闭 :set nohlsearch。不过你要在下次搜索时再次使用这一功能就又得打开它。如果你只是想去
掉当前的高亮显示,可以使用下面的命令。:nohlsearch


调理搜索命令  :set incsearch 这使得你在键入目标字符串的过程中Vim就同时开始了搜索工作。使用这种方法可以让你在尚未完全键入字串时就能找到目标。你可以选择按回车跳转到当前匹配到的位置或者键入字串的其它部分继续搜索。:set nowrapscan 该设置会使搜索过程在文件结束时就停止。或者,在你反向搜索时在到达文件开头时停止。°wrapscan°选项的默认值是开,这样搜索在达到文件的头尾时都会绕向另一个方向继续进行。


最后, 如果你觉得前面讲到的这些选项很好使,并且每次用Vim时都去设置它们的值,你完全可以把这些设置命令放在Vim的启动文件里。通过下面的命令可以找到它的位置::scriptnames



简单的搜索模式   Vim用正则表达式来描述要查找的目标。


一行的开头与结尾  ^ 字符匹配一行的开头,$字符匹配一行的末尾。

匹配任何的单字符  .这个字符可以匹配到任何字符

匹配特殊字符 放一个反斜杠在它前面.



使用标记  当你用"G"命令从一个地方跳转到另一个地方时,Vim会记得你起跳的位置。这个位置在Vim中是一个标记。使用下面的命令可以使你跳回到你刚才的出发点:  ``。``命令可以在两点之间来回跳转。CTRL-O命令是跳转到你更早些时间停置光标的位置(提示:O意为older). CTRL-I则是跳回到后来停置光标的更新的位置(提示:I在键盘上位于O前面)。   使用CTRL-I 与按下<Tab>键一样。":jumps"命令会列出关于你曾经跳转过的位置的列表。你最后一个跳转的位置被特别以一个">"号标记。 


具名标记  Vim允许你在文本中定义你自己的标记。命令"ma"将当前光标下的位置名之为标记"a"。从a到z一共可以使用26个自定义的标记。定义后的标
记在屏幕上也看不出来。要跳转到一个你定义过的标记,使用命令µfmarkg, fmarkg就是你定义的标记的名字。























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值