vim编辑器的用法

vim编辑器的用法

1、vi的基本概念

    vi可以分为三种模式,分别是命令模式(command mode)、输入模式(Insert mode)和末行模式(last line mode),各模式的功能如下:

    1) 命令行模式command mode)

        控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入输入或末行模式

    2) 输入模式(Insert mode)

        只有在输入模式下,才可以做文字输入,按ESC键可回到命令模式。

    3) 末行模式(last line mode)

        将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。

2、模式间切换

    1)编辑模式–>输入模式

        i: 在光标所在处的前方转换为输入模式

        a: 在光标所在的后方转换为输入模式

        o: 在光标所在行的下方新建一个空行并转换为输入模式

        I: 在光标所在行前方第一个非空白字符出之前转为输入模式

        A:在光标所在行后方最后一个非空白字符之后转为输入模式

        O: 光标所在行的上方新建一个空白行并转为输入模式

    2)输入模式–>编辑模式

        按ESC键进行切换

    3)编辑模式–>末行模式

        按:进行切换

    4)末行模式–>编辑模式

        按ESC键稍等或按两次ESC键进行切换

    5)末行模式<–>输入模式

        必须先返回到编辑模式后,再进入到末行模式或输入模式

        如:输入–>编辑–>末行

            末行–>编辑–>输入

3、打开及退出文件

    1)打开文件

      vim [option]… [FILE]…

    2)退出文件

        进入末行模式后,输入相应的命令退出,具体如下:

         :q! 不保存退出

         :wq 保存退出

         : x 保存退出

         :wq! 强制保存退出

4、光标移动

    1)字符间移动

      h:向前移动

      j:向下移动

      k:向上移动

      l:向后移动

    2)单词间移动

      w: 下一个单词词首

      e: 当前单词或下一个单词词尾

      b: 当前单词或前一个单词词首

    3) 行内移动

      ^: 移动到行首第一个非空白字符

      0:移动到绝对行首

      $: 移动到绝对行尾

    4)句子间移动

        )移动到句末

       ( 移动到句首

    5)段落间移动

        } 移动到段尾

        { 移动到段首

    6)行间移动

        #G:移动到第#行行首

        G:移动到末行行首

        gg:移动到第一行

        G$: 移动到末行的行尾

        #+: 当前光标所在位置向下移动#行

        #-: 当前光标所在位置向上移动#行

        H:移动到文本的行首

        M:移动到文本的中间行

        L:移动到文本的末行

5、删除命令

        x:删除光标所在处的字符

        #x: 删除从光标所在处开始向后的#个字符

        X: 删除光标所在处前面一个字符

        #X:删除光标处前面#个字符

        dd: 删除光标所在行

        #dd: 删除光标所在行向下的#行

        dgg:删除光标所在行到第一行的所有字符

        dG: 删除光标所在行到最后一行的所有字符

        d0: 删除光标所在处到行首的所有字符

        d$: 删除光标所在处到行尾的所有字符

        dw: 删除光标处向后的一个单词

        d#w: 删除光标处向后的#w单词

6、修改命令

        cw:删除光标处向后的一个单词,并进入输入模式

        c$: 删除光标处到行尾的所有字符,并进入输入模式

        cc: 删除光标所在上的所有字符,并进入输入模式

7、复制

        yy: 复制光标所在行

        #yy: 复制光标光标所在行向下的#行

        与w,b,e,$,^,0,G组合使用

        复制任意长度的字符:

        a.在当前光标处输入"ma",再将光标移到指定的地方,输入“y`a”即可。

        b.输入ymfn,其中n表示当前光标开始到复制内容结束的最后一个字符,m表示n在复制内容中出现的次数。如:文本内容为abcderfgwerrgssdd,需要复制的内容为derfgwerr,光标在"d"处,输入y3fr即可完成复制。

8、粘贴

        行级别:

p: 粘贴于当前行下方

P: 粘贴于当前行上方

        小于行级别:

p: 粘贴于当前光标所在处的后方

P:粘贴于当前光标所在处的前方

9、撤销编辑

        按u键

10、撤销此前的撤销

        按ctrl+r键

11、重复前一条命令

        .重复执行上一条命令

12、查找    

    /something: 在后面的文本中查找something。

    ?something: 在前面的文本中查找something。

    /pattern/+number: 将光标停在包含pattern的行后面第number行上。

    /pattern/-number: 将光标停在包含pattern的行前面第number行上。

    n: 向后查找下一个。

    N: 向前查找下一个。

13、替换

    如果不指定range,则表示当前行。

    m,n: 从m行到n行。

    0: 最开始一行(可能是这样)。

    $: 最后一行

    .: 当前行

    %: 所有行    

例如:

    :s/old/new – 用new替换当前行第一个old。

    :s/old/new/g – 用new替换当前行所有的old。

    :n1,n2s/old/new/g – 用new替换文件n1行到n2行所有的old。

    :%s/old/new/g – 用new替换文件中所有的old。

    :%s/^/xxx/g – 在每一行的行首插入xxx,^表示行首。

    :%s/$/xxx/g – 在每一行的行尾插入xxx,$表示行尾。

    所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/gc,加上i则忽略大小写(ignore)。

14、可视化

  v:光标走过的字符

V:光标走过的行

        ctrl+v: 区块选择

        用y复制选中的内容,用d删除选中的内容

15、翻屏

Ctrl+f: 向文件尾部翻一屏

Ctrl+b: 向文件首部翻一屏

Ctrl+d: 向下翻半屏

Ctrl+u: 向上翻半屏

16、编辑多文件

        vim a.txt b.txt c.txt

        在末行模式下输入如下命令进行文件间切换:        

         :next 下一个

         :previous 前一个

         :last 最后一个

         :first 第一个

         :wqall 关闭所有

17、分屏显示

        多文件分屏

        vim -o file1 file2:水平分割窗口,同时打开file1和file2

        vim -O file1 file2:垂直分割窗口,同时打开file1和file2

        单文件分屏

         Ctrl+w, s: 水平分割

         Ctrl+w, v: 垂直分割

18、窗口属性设置

         显示行号

         :set nu    

         :set nonu    

         自动缩进

         :set ai (auto indent) 

         :set noai

         忽略大小写

         :set ic (ignore case) 

         :set noic

        自动匹配的括号

         :set sm show match 

         :set nosm

         语法高亮:

         :syntax on|off

         搜索高亮:

         :set hlsearch

         :set nohlsearch

          配置文件:

 全局:/etc/vimrc

 用户:~/.vimrc 默认该文件没有,需手动添加。

原创文章,作者:浪迹天涯,如若转载,请注明出处:http://www.178linux.com/7979

(0)
浪迹天涯浪迹天涯
上一篇 2015-09-14
下一篇 2015-09-14

相关推荐

  • 20160803作业-用户组和权限管理

    http://note.youdao.com/yws/public/redirect/share?id=46f06331b737c6d08a0e8c9c3d49ac9e&type=false

    Linux干货 2016-08-08
  • 2017全球运维技术大会第二届12大技术专场等你来!

    去年9月,InfoQ在北京主办了第二届CNUTCon全球容器技术大会,大会邀请了来自Netflix、CoreOS、Docker公司、Mesosphere、阿里巴巴、腾讯、百度、京东、携程、搜狗等公司的技术负责人,共同探讨容器相关的应用场景、技术方案以及架构演进,得到了社区的一致好评。 到今年,CNUTCon已经是第三年了,前两年我们的方向是容器,随着技术的发…

    2017-06-20
  • VIM 详用!

    1、复制/etc/rc.d/rc.sysinit文件至/TMP目录,将/tmp/rc.sysinit文件的至少一个空白字符开头的行首加 :%s/^[[:space:]]/#/ 2、复制/boot/grub/grub.conf 至/tmp目录中,删除/tmp/grub.conf文件中的行首的空白字符; :%s/[[:space:]]\+// 3、删除/tmp/…

    Linux干货 2017-08-20
  • 使用httpd反向代理模块实现tomcat负载均衡集群(上)

    前言  tomcat介绍:   tomcat是一个免费开放源代码的web应用服务器,不是一个完整意义上的Java EE服务器;它甚至都没有提供哪怕对一个主Java EE API的实现,但由于遵守apache开源协议,tomcat却有为众多的java应用程序服务器嵌入自己的产品中构建商业的java应用程序服务器,如JBoss和JOnAS等。…

    Linux干货 2015-07-21
  • OPenSSL

    OPenSSL   OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用.   SSL是Secure Sockets Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准。…

    Linux干货 2016-11-07
  • grep命令和find命令的练习

    1、显示系统上root、Fedora、或user1用户的默认shell [root@localhost ~]# grep -E “^(root|fedora|user1)\>” /etc/passwd | cut -d: -f1,7 root:/bin/bash fedora:/bin/bash user1:/bin/bash 2、找出/etc/rc.…

    Linux干货 2017-07-30