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

相关推荐

  • LVM管理

    1、逻辑卷管理器(LVM) (1)逻辑卷管理器(LVM,logical volume manager)可以整合多个物理分区在一起,让这些分区看起来就像一个磁盘一样,而且,还可以在将来其他的物理分区或将其从这个LVM管理的磁盘中删除。这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性,同时LVM还有快照功能。 (2)逻辑卷管理器的基本术语 物理…

    Linux干货 2016-09-01
  • 马哥教育网络班21期-第一次课程作业

    计算机组成部分及其作用 1.总线 电子管道,携带信息字节并在各个部件间传输。分为地址总线,数据总线,控制总线。 CPU最大可寻址范围:2^N*M,  N为地址总线数量,M为数据总线数量。 2.I/O设备 I/O设备及输入输出设备,最常见的输入设备就是我们非常熟悉的键盘,鼠标,我们通过我们通过这些设备向计算机传达指令,让计算机完成我们想要它完成的工作…

    Linux干货 2016-06-29
  • 常用大数据词汇中英文对照表

    A 聚合(Aggregation) – 搜索、合并、显示数据的过程 算法(Algorithms) – 可以完成某种数据分析的数学公式 分析法(Analytics) – 用于发现数据的内在涵义 异 常检测(Anomaly detection) – 在数据集中搜索与预期模式或行为不匹配的数据项。除了“Anomalies”,用来表示异常的词有以下几种:outlie…

    Linux干货 2015-03-10
  • 第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限  cp -r /etc/skel  /home/tuser1   chmod 700 /home/tuser1 2、编辑/etc/gro…

    Linux干货 2016-12-27
  • 深入浅出Docker(一):Docker核心技术预览

    原文链接:http://www.infoq.com/cn/articles/docker-core-technology-preview/ 【编者按】Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上,基于Go语言开发并遵从Apache2.0协议开源。Docker提供了一种在安全、可重复的环境中自…

    2015-04-10
  • N27_第二周作业

    一、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关演示。  A、copy命令        a、 单元复制:cp [OPTION]… [-T] SOURCE DEST 1、  如果dest不存在:则事先创建此文件,并复制源文件的数据流至dest中; [root@localhost /]# ls -l /tmp total 0 [r…

    2017-09-07