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
下一篇 2015-09-14

相关推荐

  • 第一篇

     新的征程又开始了,努力吧!

    Linux干货 2016-12-26
  • N22-第九周作业

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash # declare -i log_user declare -i notlog_user while read&n…

    Linux干货 2016-10-24
  • 网络管理(二)之IP地址划分子网、多块网卡共用单一IP

    网络管理(二)IP地址   一、认识学习IP地址的组成: 1、它们可唯一标识IP 网络中的每台设备 2、IP地址由两部分组成: 网络ID:标识网络;每个网段分配一个网络ID 主机ID:标识单个主机;由组织分配给各设备 3、点分十进制计法表示IPv4地址: 4、如下图,将系统中的IP地址用二进制表示,再通过转换合成的十进制数,使用ping命令可得出:…

    Linux干货 2016-09-05
  • rsyslog基于mysql的日志集中存储,及loganalyzer日志分析工具的web配置

    Rsyslog是Linux系统自带的一款强大的日志系统,在业务量不是很大的情况下,能够满足大部分客户的日志分类搜集功能,是广大运维同事进行系统监控、分析不可或缺的利器。而在运维自动化高速发展的今天,如果我们还要“人工”智能的去每一个服务器上查看系统日志就显得太LOW了,并且,对我们来说也是一个不小的负担。 基于此,我们就简单的来介绍一下,rsyslog结合m…

    系统运维 2017-02-05
  • N25期第一周作业

    计算机组成及其功能 计算机由硬件和软件组成,硬件是基础,是软件活动的舞台,软件是灵魂,使硬件发挥最大的作用,两者缺一不可。计算机硬件是由物理元器件构成的有形实体,主要是数字逻辑电路。计算机软件是由计算机程序构成的无形的东西,需要存储在有形的硬件(如主存储器、硬盘等)中,可以实现更高层次的逻辑功能。目前大多数计算机是根据冯.诺依曼体系结构的思想来设计的,即具有…

    Linux干货 2016-11-30
  • Linux权限管理练习

    1、当用户xiaoming对/testdir 目录无执行权限时,意味着无法做哪些操作? 无法cd切换进入此目录,无法创建文件,无法删除文件,无法查看里面文件的内容,只能ls列出目录下的内容 2、当用户xiaoqiang对/testdir 目录无读权限时,意味着无法做哪些操作? 无法ls查看目录下的内容 3、当用户wangcai 对/testdir 目录无写权…

    Linux干货 2016-08-05