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

相关推荐

  • Linux中/etc目录下常用的配置文件及其含义总结

         在linux中有一个很重要的思想就是一切皆文件,也就是说所有的系统参数的配置都是保存在各种各样的配置文件当中的,这点Linux和Windows有很大的差别。      因为Linux中有众多配置文件,学习起来难免会不容易记忆,所以在此把一些常用的配置文件记录下来,做一个归纳总结。根据FHS…

    Linux干货 2017-03-26
  • 总考十分的学习宣言

    目标:按照学习线路图完成所有视频的学习,完成每一次的博客作业及云学堂考试,成功转型互联网运维。 宣言:我一定要转型互联网运维工程师,并在这个领域不断坚持耕耘下去,成为行业的专家,拿高薪,挣so much money,可以有钱去看看世界,去台湾环岛,去日本爬天空树,去北欧看极光,去南极看企鹅,去看盐湖和大象,去非洲看动物迁徙。一生的时间是有限的,在有限的时间里…

    Linux干货 2016-10-24
  • shell– 脚本编程

    编程基础 脚本基本格式 变量 运算 条件测试 流程控制 函数 数组 高级字符串操作 高级变量 配置用户环境 编程基础 程序:指令+数据 程序编程风格:     过程式:以指令为中心,数据服务于指令     对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释…

    Linux干货 2016-08-21
  • N25_第二周作业

    前言 我们这次使用HAProxy作为负载均衡调度器来实现后端httpd服务的负载均衡和动静分离,实现将来自用户的80端口的http请求转发只后端8080端口的server服务 HAProxy介绍 HAProxy的是一个免费的,非常快速和可靠的解决方案,提供高可用性,负载均衡和代理对TCP和HTTP的应用程序。它特别适用于非常高流量网站。多年来,它已成为标准的…

    Linux干货 2016-12-12
  • 8月3号 用户权限作业

     1,当用户xiaoming 对/testdir  目录无执行权限时,意味着无法做哪些操作?   先创建目录/testdir,接着修改目录的/testdir的权限,用xiaoming的身份去进入/testdir目录 [root@localhost ~]# mkdir /testdir [root@l…

    Linux干货 2016-08-08
  • 聊聊CentOS6的启动过程

    前言:     作为一个合格的运维人员,系统的启动过程我们需要牢记在心,此文不深入探讨,只求大致理解CentOS6的启动过程。 一张图带你了解CentOS6的启动过程 注意:图片放大查看效果更佳 上图各阶段详解 POST:计算机开机时BIOS对其各硬件的简单测试,测试各硬件的完整性 BootSqunce:加电自检后根据…

    Linux干货 2016-03-14