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

(1)
浪迹天涯浪迹天涯
上一篇 2015-09-14 09:20
下一篇 2015-09-14 09:23

相关推荐

  • CentOS 7 tomcat 7.0.54 的功能实现及详解

    一、 jdk 安装配置 # yum install java-1.8.0-openjdk-devel (依赖的java-1.8.0-openjdk,java-1.8.0-openjdk,headless也会被安装 ) # alternatives -h # vim /e…

    2016-08-19
  • 文件的压缩与解压

    文件的压缩与解压   常用命令既参数 1, gzip                        …

    Linux干货 2017-04-16
  • shell脚本编写-1练习题

    1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小 #!/bin/bash echo “the hostname is:`hostname`” echo “the ip address is:`ifconfig | sed –n ‘2p’ |sed…

    Linux干货 2016-08-15
  • linux正则表达式和vim的详细解析!

    正则表达式: 元字符– [:upper:] 大写 [:lower:] 小写 [:digit:] 全数字 [:alpha:] 全字母 [:alnum:] 全字母数字 匹配次数– . 匹配任意单个字符 * 匹配前面字符任意次 \? 匹配前面字符0次或1次 \{n\} 匹配至少n次 \{m,m\} 匹配至少m次 最多n次 \{,n\} 匹配…

    Linux干货 2017-04-09
  • LVS中nat和dr的原理与用法简述

      LVS中nat和dr的原理与用法简述 lvs-nat:   多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发; (1)RIP和DIP必须在同一个IP网络,且应该使用私网地址;RS的网关要指向DIP; (2)请求报文和响应报文都必须经由Director转发;Director…

    Linux干货 2016-10-30
  • class12 shell编程(四)软件包管理(二)

    一、shell编程(四) 1、循环特殊用法 while 循环的特殊用法(遍历文件的每一行): while read line; do       循环体   done < /PATH/FROM/SOMEFILE 依次读取/P…

    Linux干货 2016-08-24