zoukankan      html  css  js  c++  java
  • 【vim小记】vim的高效移动

    我还是推荐所有刚入门vim的朋友先去用vimtutor练习,然后去看vim的帮助文档,写的十分仔细,而且可以马上实战,见效很快,以下的很多示意图都是vim帮助文档里的例子,我觉得很好,就拿出来了。


    vim之所以高效的原因是因为它有一套高效的移动机制,作为学vim,可以说这一部分你不得不看,这可以大大减少了文章内移动的击键数,而且脱离的鼠标的束缚,让双手基本不用离开键盘操作。


    一、VIM的基本移动

                                                                  

    vim的基本操作无非是上(j)下(k)左(h)右(l)  ,这个大家很熟悉了,当然,键盘的上下左右也是可以用的,但是相信我,等你用惯它自己这个,你会离不开它

          j
    h        l
         k
    

    vim的所有指令基本都可以加数字,表示执行次数,也就是说,移动指令也支持:

    10h     左移动10格
     20j      上移20行
    

    二、横向特殊移动


    vim的高效从这里才正式体现:


    1、首尾移动 ☆☆☆☆

    0		移动至行第一个字符
    ^		移动至行第一个非空白字符 
    $		移动至行最后一个字符 
    
                   ^
             <------------
        .....This is a line with example text
        <-----------------   --------------->
            0                        $
    
    (这里 "....." 表示空白字符)


    以上命令比较重要,另外,如果你的文字区显示得比较小,一行会被折叠成几行,你可能会用到以下的命令,以下的命令全是以屏幕为参考而不是实际的行

    g0		至屏幕行第一个字符 (当行回绕时和 "0" 不同)
    g^		至屏幕行第一个非空白字符 (当行回绕时和 "^" 不同)
    g$		至屏幕行最后一个字符 (当行回绕时和 "$" 不同)
    gm		至屏幕行中
    

    2、词移动☆☆

    w          跳到下个单词开头
    b           向前跳到上个单词开头
    e           跳到下个单词词尾
    ge         向前跳到上个单词词尾
    
              b   b b    2b      b
          <----<--<-<---------<---
         This is a line with example text
          --->-->->---------------------> 
             w w w 3w
    
    
         This is a line with example text ~
                 <-<--- -----> ----> 
                ge   ge        e    e
    

    同样,这个里面也有几个其他命令,上面命令的大写,跳过的单位均是以空白字符分割的字串,很好记

    
    
    
    
    
    
    W        跳到下个字串(以空白字符分割)
    B         跳到上个字串(以空白字符分割)
    E          跳到下个字串尾部(以空白字符分割)
    gE        向前跳到上个字串词尾


    3、查找移动☆☆☆

    f          向下查找某个字母出现的位置
    F         向上查找某个字母出现的位置
    t          向下查找某个字母出现的位置前
    T         向上查找某个字母出现的位置前
    
                              Fh
                         <---------------------
         To err is human. To really foul up you need a computer.
               -------->------------------->
                     fh         fy
    
          To err is human. To really foul up you need a computer. 
                         <------------               ---------------->
                                   Th                    tn
    
    
    

    这里就一个提示,这里可以用' ; ' 进行重复操作,比如:按下fe,跳到err的e,再次按下;  ,跳到really的e, 再次按下;  跳到need的e

    4、匹配移动☆☆☆☆

    匹配移动在代码块中使用非常多,而且效率特别高,用这个命令可以轻松的在(),{  }   [  ] 中跳转,它帮你找匹配的括号,方便的很

    %       跳到匹配的括号     (这个命令也可适用于 [] 和 {}。(可用 'matchpairs' 选项定义))
    
                                    %
    			     <----->
    		if (a == (b * c) / d) ~
    		   <---------------->
    			    %
    

    注意:光标不在一个有用的字符上,"%" 会先 正向 查找找到一个,再按一次会移动到它的匹配处(比如在下面光标在=处,首先匹配的是(b * c)的左括号,再是它的右括号

    		if (a == (b * c) / d) ~
    		        +--->--->
    			   %

    三、纵向特殊移动


    1、全局跳转☆☆☆☆

    gg          跳到文件首
    G            跳到文件尾
    NG         跳到特定N行(代码调试常用)
    N%        跳到大约N%的位置
    

    2、视野内移动☆☆☆

    H          跳到视野内顶部
    M         跳到视野内中间
    L          跳到视野内下面
    
    		        +-------------------------------+
    	H -->	| text sample text	    |
    			| sample text		    |
    			| text sample text	    |
    			| sample text		    |
    	M -->	| text sample text	    |
    			| sample text		    |
    			| text sample text	    |
    			| sample text		    |
    	L -->	| text sample text	    |
    			+-------------------------------+
    

    四、附加:其他操作


    1、滚屏

    滚屏主要是阅读文档有用,有滚半屏,一屏,一行(这个就不说了,意义不大)


    CTRL-U        向上滚动半屏,文字下移动  UP
    CTRL-D        向下滚动半屏,文字上移动  DOWN
    CTRL-B         向后滚动一屏,文字下移动  Backward
    CTRL-F         向前滚动一屏 ,文字上移动  Forward
    
    
    
    
    

    2、不滚屏移动光标

    移动中的一个常见问题是,当你用 "j" 向下移动的时候,你的光标会处于屏幕的底部,你可能希望,光标所在行处于屏幕的中间。这可以通过 "zz" 命令实现。

    zz           光标移动到屏幕中间
    zt            光标移动到屏幕顶部  (top)
    zb           光标移动到屏幕底部(bottom)
     
    	+------------------+		 +------------------+
    	| some text	   |		 | some text	    |
    	| some text	   |		 | some text	    |
    	| some text	   |		 | some text	    |
    	| some text	   |   zz -->| line with cursor |
    	| some text	   |		 | some text	    |
    	| some text	   |		 | some text	    |
    	| line with cursor |     | some text   |
    	+------------------+		 +------------------+
    
    


  • 相关阅读:
    Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能
    android 网络异步加载数据进度条
    在WebView中加载HTML页面时显示进度对话框的方法
    Java基础知识总结之IO流
    计算机网络之网络协议
    Java中hashCode的作用
    一篇很好的学习查看Java源代码的文章
    JavaScript 客户端JavaScript之 脚本化文档
    JavaScript 超类与子类 继承
    JavaScript 类、构造函数、原型
  • 原文地址:https://www.cnblogs.com/voidsky/p/5373934.html
Copyright © 2011-2022 走看看