VIM的常用命令

来源:互联网 发布:mac 微信字体设置 编辑:程序博客网 时间:2024/05/29 02:47

 

VIM的工作模式


编辑模式、插入模式、命令模式、shell 切换和选项设置。

大部工作都是在编辑模式下完成的。

1.移动光标:

    方向键。

    k、j、h、l 功能分别等同于上、下、左、右箭头键。

2.替换和删除

    x 删除光标所指向的当前字符

    dd 删除光标所在行,并去除空隙

3. 粘贴和复制

 

 

 

分为命令模式和插入模式 以及 : ex模式;
          按esc键就可以让vi进入命令模式;
          插入模式就是你输入文本的模式了。
         
vi的一些简单操作:
      插入文本
            命令 i 、a、I、A、o、O
            i            进入命令模式输入 i ,这时候就是和普通的文本编辑器一般了;
            a            或者 输入 a ,不同的是,a是在字符的后面插入追加文本,而i在字符的前面插入;
            I          行首插入;
            A            行尾插入。
            o            光标下新建空行
            O            光标上新建空行
           
      修改删除文本
            命令 c、x、d、D
            cw    删除当前位置到该位置单词的末尾,外加插入文本;           cw删除的是英文单词,中文不行的。
            c$ or C    删除当前位置到行末,外加插入文本。
            x        只删除当前字符    如果要删一个中文字的话请用 2x (当然也可以用4x 8x) 因为一个汉字占两个字符。
            cc      删除一行,外加可以插入文本。
            r          删除当前字符,外加可以插入文本。
            dw    只删除当前位置到这个单词末。
            [n]dd          删除[n]一行。 当然可以用 2dd 3dd 删除两行,三行。
            D        删除到行尾。

      粘贴,复制,合并
            命令 p、y、J、" (引号)
            p        当你执行上面的删除操作后,你所删除的文本会留在缓存中,当你输入 p 后会把这些删除的文本粘贴到当前光标后面。
            y        组合有(yw,4yy,y$等) //复制单词,复制四行,复制到行末        复制后可用p进行粘贴
            J          把下一行合并到当前行,注意J大写
            " [x]yy        命名你的缓冲区 在复制命令前加上冒号和名称(a到z) 例如 " ryy " d2dd " zd)复制一行到r缓冲区,删除2行到d缓冲区,删除光标到句尾到z缓冲区。
            " [x]p            粘贴x缓冲区到当前位置后。
            默认有1~9缓冲区 为前9次删除操作。
           
      可视操作
            命令 v、V、Ctrl+v
            当用gvim可以用鼠标选择你需要复制,删除的文本,然后按d(删除)、p(粘贴)、y(复制)操作你的文本,
            当然也可以和其他程序通过粘贴板进行共享数据。
            v        对于xterm中的vim 则输入命令 v 进入可视状态,这时候你可以用右键进行复制粘贴操作

      重复操作与撤消
            命令 . (点号) 、 u 、U
            .          重复上一次的操作,当并不是那种重作,他只是重复你上次输入的命令。
            Ctrl+R        重做
            u        撤消上次操作
            U        撤消当前行进行的任意修改。
           
      查找文本
            命令 /、?、n、N
            /          向后查找文本进入命令模式输入 /[你要查找的文本]; 例如找edit  输入 /edit ;
            ?      而向前查找文本就是输入 ?[你要查找的文本] ;
            n        当有许多搜索结果时,命令模式下输入 n 就可以找下一个搜索结果,而输入 N
            N        则是反向下一个搜索结果。

      打开,保存与退出
            冉雃x模式,就是在命令模式下输入 : 再输入命令。
            命令 ZZ、 q、 w、 e、r
            :ZZ  进入命令模式 输入  ZZ  (大写)就是保存+退出;
            :w      保存文本 进入命令模式 输入 w 就是保存;
            :q! 强行退出是输入 q! ;
            :e!      撤消当前所有编辑,返回原始状态的话,请输入 e! ;
            :w [filename]  另存为就是 w [filename] 。
            :e [filename]      打开另外一个文件(打开新文件前,请先保存文件。
            :r [filename]      读入filename内容到当前文件的当前位置后
           
      移动光标
              命令 hjkl、(、)、{ 、} 、e、w、b、gg、G
           
              hjkl  一般可直接用键盘上的方向键进行光标的移动。而page up/down 键就是前后翻页了;
                          或者,命令模式下 按
                          h(左)          j(下) k(上) l(右)
                          或者在这个基础加上数字,进行几行几行的移动,例如 4j就表示向下移动四行。
              nG            例如200G 就是移动200行了。而Ctrl+G就是显示当前行信息(多少行,在文本的位置);
              G        到文件尾
              gg      到文件头
           
              e          另外          输入 e 可以一单词的移动光标,
                          (          当前句首
                          )          下一句开始 例如  2) 向前移动两个句子
                          {         段开始
                          }         下一段头
                          b、w        后前以单词为单位移动。

      标记命令 m、‘(单引号)、`(反引号也就是 ~ 那里那个键)
            m[x]            标记x(a~z)位置 例如 mb 标记当前光标位置为标志b
            ’x      移动光标到x标记行的行首
            `x      移动光标到x标记的原始光标位置
            ''          移动到上一标记行首
            ``        移动到上一标记原光标位;
            zl zh zs ze 窗口左滚 右滚 左开始 右结束 //可设置 :set sidescroll=32 设置滚动长度(我好象用不了这个命令)
                       
      其他
            Ctrl+L        刷屏
            return          到下一行行首
            -、+            移动光标上下一行,上下一行的行首(好象+号要用小键盘的+号才行);
            Ctrl+G      显示当前行信息
            H        屏幕起点
            M      屏幕中间
            L        屏幕尾

组合使用例子        命令模式下
                        例子:现有文本

                        aaabbb
                        cccdddeeefff (光标在第一行)

                        输入 /aab回车 d  /ccc回车 那就会删除掉当前位置aab(包括aab), 到ccc前所有数据并复制数据到缓冲(和剪切差不多)。当然d也可用改成y做复制用途,再用p粘贴。

vim的ex状态
      当在: ex模式下可以用tab进行自动补齐命令(用: set nu 显示行数) 并可以利用 | 可以将多个命令组合在同一提示符下

      文本搜索,替换,移动,删除,复制
            命令 :g/、:s/ 、:m 、:d、:co (或者:t)
            :g        :g/[文本] 全局搜索文本,光标移动到最后一个搜索文本,并显示所有数据加所在行。
            :g!/[文本]  没有[文本]的行
            :s        :[第n行],[到第m行]s/[要替换的]/[替换的]  n-m行之间进行替换,如果没有n,m那么就进行当前行的替换
            :%/s/[要替换的]/[替换的]/g          进行全局替换。 %表示每一行, 另外有 . 表示当前行, $ 表示最后一行,另外可用+-号表示该行的上下n行,例如.-2 表示当前行上面第二行
            :m      :[要移动的数据]m[移动的地方]              例子            :20,30m100 20-30行移动到100行前(最后一行是100行)
            例子:      :g/^$/d        删除所有空行 d加上删除动作

      搜索模式
            .(点号)      任一个单字符,汉字用两个点 ..
            *        匹配前面字符零个或者多个任意(并不表示任意字符) 例如 /abcdl* 就会查找abcdl或者以abcd开始的,而查找所有是 /.*
            ^          表示从行首开始
            $        $在表达式末表示以正则表达式要在行末。
            /          转义 /.表示找. /*表示找* //表示找/
            [  ] [0~9]表示匹配0~9之间任意一个数字 同理有[A~Z]和[a~z],而[AB3a]表示找有A,B, 3,a其中任意一个字符。
            /        单词开始或者末尾以空格或者标点符号开始或者结束。 例如 inux/> 匹配linux.
            /r        回车
            /t      制表符
      执行sh命令
            :![shell command] 例如 :!ls

      添加数据到文件末 > >
            例子            :1,10w> > newfile

      需要注意的是vim可以把一些命令组合起来应用
            :1,3d | s/they/she/    一到三行删除,并把当前行they替换为she
            :.,/while/d                          删除当前行到匹配while行所有数据(包括当前行和含有while所在行)
            :/aaa/,/bbbb/d                aaa到bbbb之间行删除(包括这两行)
            :/aaa/,/bbb/m.                aaa到bbb行move到当前行

      分屏
            :[N]sp[lit] [filename]        另开窗口,高度是N行,并打开filename文件。
            Ctrl+w      [x]                  准备进行窗口操作,其中x是按Ctrl+w后,需要选择的功能键(可参见下一行) 例如Ctrl+w 再按t就会到顶端窗口
            Ctrl+w      [s/w/t/b/c/q/r/i/=]    s 再分屏,w下一个窗口,t顶窗口,b底端窗口,c关闭窗口 q退出窗口 r循环窗口 i打开并进入新窗口 =所有窗口同高
            :hide                                        隐藏当前窗口,当不关闭该文件缓冲(也就是说再次用 :e [filename] 打开后依然是先前的文件)
            :q                                    关闭窗口,并释放缓冲。
            :qa[!]                                      关闭所有窗口并强行退出vim;
            :on[ly]                              只显示当前窗口
            :new            [filename]            新建文件并打开新窗口。
            :res[ize][n] :res[ize][+ -n]          改变窗口大小,或者增加减少行数

      用vim编程
            :make [arguments]  运行make 然后移动到第一个错误,
            :cf[ile] [!] [errorfile]读取错误文件,并移动到第一个错误处,!强迫vim移动到另外的缓冲区,
            :cl[ist] [!]                          列出含有文件名的错误,有!就列出所有错误,
            :cc[!] [n]              如果有n就显示错误n,否则重新显示当前错误,
            :cn[ext]                  移动到下一个错误。
            :cp                              移动到上一个错误。

      另外一个有用的编程功能是使用ctags(unix命令,给C语言中的函数打标记。这个命令与vi的tags结合使用)
            先用ctags命令 :!ctags file.c 创建该c程序tags文件,再在vi中使用 :tag [函数名] ,那么vi就直接调出该c原文件并跳到函数定义处。
            例如:          :!ctags *.c
                        :tag aaa      其中bbb.c 中有aaa函数,那么就跳到aaa的定义处
                        :tn                    跳到下一个匹配标志
                        :tp                    上一个标志

      设置vim
            :set all        显示所有选项。
            :set nu[mber]  显示行数。
            :set binary          可读二进制文件
            :syntax on            语法高亮
            :set taglength=4        设置tag长度
            记不住可使用tab键补齐命令(也可以显示可以选择的命令)

      vim的配置文件 .vimrc
            在vim的安装目录下有一个vimrc_example.vim文件,你可以copy到你的工作目录上作为你的原始vim配置文件(文件改名为.vimrc)

      vi引证
            最后,这里有关vi的认证:vi是完美的
            论证:VI在罗马数字中是六,小于六的自然数可以整除6的是1,2,3, 6=1X2X3; 而6有可以表示为6=1+2+3,可见VI是个完美的数字,从而VI也是完美的。
            罗马数字中VIM可能表示为(1000-(5+1))=994,而刚好等于2×496+2,而496刚好可以被1,2,4,8,16,31,62,124,248等整除,而且1+2+4+8+16+31+62+124+248=496
            虼?96是个更完美的数字,可见vim比vi更加完美了。

 

 

 

原文地址:

http://blog.myspace.cn/e/403657311.htm
原创粉丝点击