Vim编辑器使用方法详解

程序员小新人学习 2018-12-16 12:26:23

转载于https://www.cnblogs.com/libaoliang/articles/6961676.html

vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器。他是我们使用Linux系统不能缺少的工具。由于对Unix及linux系统的任何版本,vi编辑器是完全相同的,学会它后,您将在Linux的世界里畅行无阻。

vim 具有程序编辑的能力,可以以字体颜色辨别语法的正确性,方便程序设计;

vim可以当作vi的升级版本,他可以用多种颜色的方式来显示一些特殊的信息。

vim会依据文件扩展名或者是文件内的开头信息, 判断该文件的内容而自动的执行该程序的语法判断式,再以颜色来显示程序代码与一般信息。

vim里面加入了很多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等。 这对于我们在Linux上进行一些配置文件的修改工作时是很棒的功能。

1.vi/vim是什么?

①vi是Visual Interface的缩写,即 可视化接口

②vim是vi iMprove的缩写,即 vi的增强版(具有语法着色功能)

2.vim模式有哪些?如何切换?

①三种模式

   命令模式(默认):刚进入vim的时候,默认就是 命令模式,可以复制行,删除行等。   输入模式:可以输入内容。   末行模式:在最下边,除编辑模式,可以输入诸多管理员命令

②模式转换

   命令模式→输入模式:     i:在当前光标所在字符的前面,转为输入模式     I:在当前光标所在行的行首转换为输入模式     a:在当前光标所在字符的后面,转为输入模式     A:在光标所在行的行尾,转换为输入模式     o:在当前光标所在行的下方,新建一行,并转为输入模式     O:在当前光标所在行的上方,新建一行,并转为输入模式     s:删除光标所在字符     r:替换光标处字符   输入模式→命令模式     ESC键   命令模式→末行模式     输入:即可 转为末行模式

末行模式-操作

   末行模式→命令模式     ESC键    

3.使用vim如何打开文件?

① vim /path/to/somefile :vim后跟文件路径及文件名 ,如果文件存在,则打开编辑文件窗口,如果文件不存在,则创建文件

 [root@libaoliang ~]# vim /etc/inittab

② vim + # :打开文件,并定位到第#行,#代表数字

[root@libaoliang ~]# vim +3 /etc/inittab

③ vim + :打开文件,定位到最后一行

[root@libaoliang ~]# vim + /etc/inittab

④ vim +/PATTERN:打开文件,定位到第一次被PATTERN匹配到的行的行首

[root@libaoliang ~]# vim +/start /etc/inittab

4.关闭文件

末行模式下:

   w:保存   q:退出   wq 或 x:保存退出,wq 和 x 都是保存退出   q!:强制退出   w!:强制保存,管理员才有权限

命令模式下:

   ZZ:保存并退出

5.移动光标

命令模式下:

   ①逐字符移动     h:向左     l:向右     j:向下     k:向上     #h:移动#个字符   ②以单词为单位移动     w:移到下一个单词的词首     e:跳至当前或下一个单词的词尾     b:跳至当前或上一个单词的词首     #w:表示移动#个单词   ③行内跳转     0:绝对行首     ^:行首第一个非空白字符     $:绝对行尾   ④行间跳转     #G:跳转到第#行     G:最后一行

末行模式下:

   ①行间跳转      直接输入行号 回车即可

6.翻屏:

  命令模式下    Ctrl+f:向下翻一屏    Ctrl+b:向上翻一屏    Ctrl+d:向下翻半屏    Ctrl+u:向上翻半屏 

7.删除

命令模式下

    ①删除单个字符:      x:删除光标所在处单个字符      #x:删除光标所在处及向后共#个字符    ②删除命令:d      d命令跟 跳转命令组合使用 如:dw 表示删除光标所在位置到下一个单词词首所有字符      #dw,#de,#db :#dw表示 删除当前光标所在处及向后第#个单词词首所有字符       dd:删除当前光标所在行      #dd:删除包含当前光标所在行内的#行

末行模式下:

 

位置符号

末行模式下,删除命令d可以跟以上 位置符号 相结合使用        StartADD,EndADDd:删除StartADD到EndADDd位置的所有行,例如:10,15d:删除10到15行所有内容     .d:删除光标所在行,同dd 

8.粘贴命令: p

  p(小写p):如果删除的或复制的为整行内容,则粘贴到光标所在行的下方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的后面  P(大写P):如果删除的或复制的为整行内容,则粘贴到光标所在行的上方,如果复制或删除的内容为非整行,则粘贴至光标所在字符的前面

9.复制命令:y

 用法同d命令    命令模式    yy:复制当前行    yw (y#w,ye,y#e,yb,y#b):复制光标当前位置到下个单词词首内容.#代表数字    y#G:复制当前位置当#行处的所有内容  末行模式    StartADD,EndADDy:复制StartADD到EndADDd位置的所有行,例如:10,15d:复制10到15行所有内容    +3y:复制当前位置向下3行

10.修改c:先删除内容,在转换为输入模式

   c:用法同d

11.替换:r

  r:单字符替换,会替换光标选中字符  R:替换模式,可以做字符替换。

12.撤销编辑操作:u(undo) 

  u:撤销前一次编辑操作  #u:直接撤销#次操作  Ctrl+r:撤销最近一次撤销操作

13.重复前一次编辑操作.

  .:比如 上一次dd删除了一行,现在输入.就可以重复dd删除行的操作

14.可视化模式:

  命令模式:     v:按字符选取,键盘控制光标 划过 的区域被选取    V:按矩形选取,键盘控制光标划过的行被选取

15.查找:

  末行模式:     /PATTERN:从当前位置向后查找    ?PATTERN:从当前位置向前查找    n:向下查找    N:向上查找

16.查找并替换

  在末行模式下使用s命令    ADDR1,ADDR2s/PATTERN/String/gi    ADDR1,ADDR2 表示地址;比如1,$表示全文 (%也表示全文)    g:表示全局替换    i:表示忽略大小写

17.vim打开多个文件

vim FILE1 FILE2 FILE3 末行模式下  :next 切换到下一个文件  :prev 切换到上一个文件  :last 切换到最后一个文件  :first 切换到第一个文件退出多个文件  qa:全部退出

18.分屏显示一个文件

vim打开文件后  Ctrl+w,s:水平拆分窗口  Ctrl+w,v:垂直拆分窗口在窗口间切换光标 Ctrl+w,ARROW    比如 Ctrl+w,→:(使用箭头方向键)光标切换到右边的窗口  比如 Ctrl+w,h(左), j(下), k(上), l(右) 也可以切换窗口在末行模式下 :qa退出所有窗口

19.分窗口编辑多个文件

vim -o:水平分割显示vim -O:垂直分割显示例如:vim -o /etc/rc.sysinit /etc/inittab :水平分割显示/etc/rc.sysinit和/etc/inittab 这2个文件

20.将当前文件中部分内容保存为另外一个文件

末行模式下 w:表示保存当前文件 w /path/to/somewhere:将当前文件另存为到路径指定的地方 ADDR1,ADDR2w /path/to/somewhere:将ADDR1到ADDR2指定的地址文本 另存为到路径指定的地方

21.将另一个文件的内容填充在当前文件中(r表示读)

末行模式下 r: /path/to/somefile例如:vim /etc/rc.sysinit 打开文件后,末行模式 输入 :r /etc/inittab :会将 inittab文件的所有内容附加到rc.sysinit文件光标所在的位置

22.跟shell交互(vim 末行模式执行shell)

末行模式! command即可例如: ! ls /etc/:会列出/ect目录下所有文件及目录 按enter后回到vim编辑状态

23.高级话题

在末行模式下①显示或取消行号 set nu(set number):显示行号 set nonu:取消显示行号②显示忽略或区分字符大小写 set ic (set ignorecase):忽略大小写 set noignorecase:区分大小写③设定自动缩进 set ai(set autoindent):自动缩进 set noai:取消自动缩进④查找到的文本高亮或取消高亮显示 set hlsearch:高亮显示搜索到的文本 set nohlsearch:取消高亮显示搜索到的文本⑤语法高亮 syntax on:打开语法高亮显示 syntax off:关闭语法高亮显示

24.vim配置文件

全局vim配置文件:/etc/vimrc个人vim配置文件:~/.vimrc[root@libaoliang ~]# echo "set nu" >> /root/.vimrc # root用户用vim打开文件时,显示行号

[转帖]Vim编辑器使用方法详解的更多相关文章

  1. vi/vim编辑器使用方法详解

    vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器.他是我们使用Linux系统不能缺少的工具.由于对Unix及li ...

  2. vim编辑器的使用详解

    在Linux江湖,最常用到的编辑器非vim莫属,vim的功能很强大. 1.   vim简介 在Linux世界中,最长用到的而且功能比较强大的是Vim编辑器.Vim编辑器是在内存缓冲区中处理数据. vi ...

  3. [转帖]基于VIM漏洞CVE-2019-12735的VIM宏后门病毒详解

    基于VIM漏洞CVE-2019-12735的VIM宏后门病毒详解 不明觉厉 只要是人做的东西 就会有bug 就会有安全问题 就看发现bug 或者是发现安全问题 有没有收益了 会用linux的都是比较熟 ...

  4. php调用C代码的方法详解和zend_parse_parameters函数详解

    php调用C代码的方法详解 在php程序中需要用到C代码,应该是下面两种情况: 1 已有C代码,在php程序中想直接用 2 由于php的性能问题,需要用C来实现部分功能   针对第一种情况,最合适的方 ...

  5. vi和vim区别及命令详解

    vi和vim都是Linux中的编辑器,不同的是vim比较高级,可以视为vi的升级版本.vi使用于文本编辑,但是vim更适用于coding.     现将vim的命令行收集于下: vi有3个模式:插入模 ...

  6. [荐]Js apply()和call()方法详解 - http://www.w3cfuns.com/article-5596443-1-1.html

    本帖最后由 默默DE人生 于 2013-3-19 13:22 编辑 Js apply方法详解我在一开始看到javascript的函数apply和call时,非常的模糊,看也看不懂,最近在网上看到一些文 ...

  7. Android源码下载方法详解

    转自:http://www.cnblogs.com/anakin/archive/2011/12/20/2295276.html Android源码下载方法详解 相信很多下载过内核的人都对这个很熟悉 ...

  8. telnet 命令使用方法详解,telnet命令怎么用

    telnet 命令使用方法详解,telnet命令怎么用? 文章类型:电脑教程 原创:天诺时空   什么是Telnet? 对于Telnet的认识,不同的人持有不同的观点,可以把Telnet当成一种通信协 ...

  9. Linux中让alias设置永久生效的方法详解

    Linux中让alias设置永久生效的方法详解 一.问题描述 1.有很多时候我们想要将很多操作作为一个步骤,那么在不作为系统的服务的情况下,别名是我们最好的选择,但是发现别名只能在一次会话中生效,重启 ...

随机推荐

  1. <Android 开源库> PhotoPicker 从头到脚

    1. 简介 PhotoPicker, 是一款开源的图片选择器.效果上和微信相似. 2. 使用方法 2.1 添加依赖 dependencies { compile 'me.iwf.photopicker ...

  2. 深入C#学习系列一:序列化(Serialize)、反序列化(Deserialize)

    序列化概述: 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写入到临时或持久性存储区.以后,可以通过从存储区中读取或反序列化对象 ...

  3. OpenCV——积分图计算

    #include <opencv2/opencv.hpp> #include <iostream> #include "math.h" using name ...

  4. OpenCV——凸包

    #include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespac ...

  5. kubernetes 限制网络带宽 annotation -- 注解 -- 类似 label

    1.可以通过给Pod增加 kubernetes.io/ingressbandwidth和 kubernetes.io/egress-bandwidth 这两个annotation来限制Pod的网络带宽 ...

  6. Hadoop Version History and Feature

    Versions and Features Hadoop has seen significant interest over the past few years. This has led to ...

  7. 20155206 Exp5 MSF基础应用

    20155206 Exp5 MSF基础应用 基础问题 . 用自己的话解释什么是exploit,payload,encode . exploit:这个词本身只是利用,但是它在黑客眼里就是漏洞利用.有漏洞 ...

  8. 有关C++的数据类型(int,long,short,float,double等等)

    再看C++ prime plus 第六版的时候 对数据类型又一次有些乱了,在看了这篇博客后,重新清晰起来了. 有关C++的数据类型(int,long,short,float,double等等)

  9. 20155331《网络对抗》 Exp9 Web安全基础

    20155331<网络对抗> Exp9 Web安全基础 实验过程 WebGoat 在终端中输入java -jar webgoat-container-7.0.1-war-exec.jar开 ...

  10. Class does not Implement Equals——Code Correctness(代码正确性)

        系列文章目录:     使用Fortify进行代码静态分析(系列文章) class does not implement equals(类未能实现Equals方法)   示例:  protec ...