前言:

vi 编辑器是所有 Unix 及 Linux 系统下标准的编辑器,他相当于 windows 系统中的记事本,但远比 Windows 下的记事本强大上百倍。是我们使用 Linux 系统不能缺少的工具。不过由于他是在终端界面中运行的(如下图),所以让很多习惯了GUI界面的新手初见甚是头大。本文就的目的就是旨在让一个新手能够快速入门,达到中级水平,从而自由的使用 VI/VIM 进行快速基本的文件编辑。

1. 首先谈一下 vi 与 vim 的区别

  1. vi 是 Visual Interface 的缩写,即可视化接口【是所有 Linux 自带的,无需再安装】
  2. vim 是 vi iMprove 的缩写,即 vi 的增强版(具有语法着色功能)【并非所有自带,但各个 Linux 发行版软件源中都有,可以使用对应发行版的包管理命令在线安装】
  3. vim可以当作vi的升级版本,他可以用多种颜色的方式来显示一些特殊的信息。
  4. vim会依据文件扩展名或者是文件内的开头信息, 判断该文件的内容而自动的执行该程序的语法判断式,再以颜色来显示程序代码与一般信息。
  5. vim里面加入了很多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等。 这对于我们在Linux上进行一些配置文件的修改工作时是很棒的功能。

2. vim 的三种工作模式及其切换

PS:这三种模式必须搞明白,不然无法继续下面的学习。

2.1 三种模式

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

2.2 模式转换

PS: 在正式使用 vim 前,需要提醒大家,除了在进入输入模式之后,编辑文本的时候可以使用中文输入法,其他模式下进行的各种操作操作都要切换成英文(及半角字符输入),否则某些操作会失败。

#vim text.txt 进入命令模式【存在 text.txt 的话打开,不存在创建 text.txt】
命令模式 -> 输入模式:【i/I:insert、a/A:append、o/O:open、r:replace】i:在当前光标所在字符的前面,转为输入模式  I:在当前光标所在行的行首转换为输入模式a:在当前光标所在字符的后面,转为输入模式A:在光标所在行的行尾,转换为输入模式o:在当前光标所在行的下方,新建一行,并转为输入模式O:在当前光标所在行的上方,新建一行,并转为输入模式s:删除光标所在字符r:替换光标处字符输入模式 -> 命令模式ESC键命令模 -> 末行模式输入":" 即可 转为末行模式在末行模式下10d:可删除第10行10,20d:删除10-20行set nu:显示行号!命令:可以执行bash命令末行模式-操作末行模式 -> 命令模式ESC键

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

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

[root@sky ~]# vim /etc/fstab

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

root@sky ~]# vim +20 /etc/fstab # 打开后光标定位到第三行行首

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

4) vim +/PATTERN:打开文件,定位到第一次被 PATTERN [即正则表达式] 匹配到的行的行首

root@sky:~$ vim +/swap /etc/fstab 

4. 关闭文件

末行模式下:

# w: write[写入即保存], q: quit[退出]
w:保存
q:退出
wq 或 x:保存退出,wq 和 x 都是保存退出
q!:强制退出
w!:强制保存,管理员才有权限

命令模式下:

ZZ:保存并退出

5.移动光标

 1) 命令模式下:

①逐字符移动【在使用 vim 的时候还可以使用键盘的方向键移动,使用 vi 的时候是不可以用方向键的,有些版本的 Linux 默认使用了 alias 命令重新给 vim 起了 vi 的别名,使得直接使用 vi 打开的其实是 vim】h:向左l:向右j:向下k:向上#h:向左移动 # 个字符【最强大之处在这】
②以单词为单位移动w:移到下一个单词的词首 【word】e:跳至当前或下一个单词的词尾 [word end]b:跳至当前或上一个单词的词首 [word begin]#w:表示移动 # 个单词
③行内跳转0:绝对行首^:行首第一个非空白字符 [这里记得使用英文输入法,否则无效]$:绝对行尾 [这里记得使用英文输入法,否则无效]
④行间跳转#G:跳转到第#行G:最后一行

2) 末行模式下:

直接输入行号即可跳转到指定行

6.翻屏

命令模式下:

Ctrl+f:向下翻一屏
Ctrl+b:向上翻一屏Ctrl+d:向下翻半屏
Ctrl+u:向上翻半屏 

7.删除 d [其实应该叫 “剪切” 更合适点]

PS: d 操作删除处的内容其实保存在了剪切板,所以可以将删除的删除的内容,粘贴至别处。所以叫做剪切更加合适。

  命令模式下

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

  末行模式下:

末行模式下 位置符号StartADD, EndADDd.:表示当前行$:最后一行+#:向下的#行$-#:向上的#行
末行模式下,删除命令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,15y:复制10到15行所有内容+3y:复制当前位置向下3行

10.视图模式 v

命令模式:

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

小操作:在命令模式下使用 v 命令进入视图模式选取数据,之后直接使用 y 命令进行复制,然后再使用 p 命令粘贴到指定位置。

11. 修改 c :

命令模式:

使用 c 会先删除选中内容,再转换为输入模式

12. 替换 r,后面有更强的全局替换

命令模式:

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

13. 撤销与恢复:u(undo)、Ctrl + z

命令模式:

u:撤销前一次编辑操作
#u:直接撤销#次操作
Ctrl+r:恢复上一步

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

命令模式:

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

15. 查找:

末行模式:

# PATTERN 表示正则表达式
/PATTERN:从当前位置向后查找
?PATTERN:从当前位置向前查找
n:向下查找
N:向上查找

找到后按回车,此时便可以使用 n/N 进行逐个定位,定位到指定位置之后,你可以使用“命令模式”下的命令进行编辑。

16. 查找并替换

在末行模式下使用 s 命令【s:表示 substitute 】:{作用范围}s/{目标}/{替换}/{替换标志}ADDR1,ADDR2 表示地址;比如1,$表示全文 (%也表示全文)g:表示全局替换i:表示忽略大小写
例如:
:%s/dfg1/heihei/gi    # 表示在全文范围(%)内,查找(dfg1)并替换为(heihei), 所有查找到的都会被替换(g),且忽略大小写(i)

17. vim 打开多个文件

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

18.分屏显示一个文件

vim打开文件后Ctrl+w,s:水平拆分窗口 【先按 Ctrl+w , 之后松手再去按 s】Ctrl+w,v:垂直拆分窗口 【先按 Ctrl+w , 之后松手再去按 v】
在窗口间切换光标Ctrl+w,ARROW  【先按 Ctrl+w , 之后松手再去按 方向键】比如 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个文件

其实也可以先一次打开多个文件(参考17),之后结合上面的命令整出多个窗口,大家可以自己思考去折腾。

20.另存为(w + path),可以选择指定内容

末行模式下:

w:表示保存当前文件
w /path/to/somewhere:将当前文件另存为到路径指定的地方
ADDR1,ADDR2 w /path/to/somewhere:将ADDR1到ADDR2指定的地址文本 另存为到路径指定的地方
例如::7,8 w ./heihei.mc # 将当前文件的7-8行写到 heihei.mc 文件内,文件不存在则创建

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@sky ~]# echo "set nu" >> /root/.vimrc  # root用户用vim打开文件时,显示行号。

参考自:https://www.cnblogs.com/libaoliang/articles/6961676.html

PS:在原文的基础上根据自己的理解,对一些点做了补充,力求更加能让读者明白。

Vim 上手指南【基础、中级】相关推荐

  1. Vim实战指南(一):基础编辑命令

    原文地址:Vim实战指南(一):基础编辑命令 Introduction Vim和Emacs作为两大神级文本编辑器各有利弊,本实战指南不加讨论的介绍Vim. 本实战指南不是教你按照Vim的键位图来编辑文 ...

  2. Switch-零基础完全上手指南(日版)

    https://zhuanlan.zhihu.com/p/210620964?utm_source=wechat_session Switch新手攻略:零基础完全上手指南(日版) https://zh ...

  3. 分布式作业 Elastic-Job 快速上手指南

    转载自 分布式作业 Elastic-Job 快速上手指南 Elastic-Job支持 JAVA API 和 Spring 配置两种方式配置任务,这里我们使用 JAVA API 的形式来创建一个简单的任 ...

  4. HTAP 快速上手指南

    本指南介绍如何快速上手体验 TiDB 的一站式混合型在线事务与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 功能. 注意 ...

  5. latex 参考文献显示问号_UESTC 本科Latex毕设论文模板 无痛上手指南

    置顶:如果大家觉得这篇文章对毕设有帮助,也欢迎转发给更多的朋友~注明出处即可~ ----更新 5.19---- 写在自己用latex完成毕业论文,并已经通过学校的查重系统之后(第一次查重11.7%是因 ...

  6. 极光小课堂 | 极光推送之 Android 客户端使用指南——基础篇

    " 本文中涉及到的所有代码现已在 Github 上开源,地址:https://github.com/xuexiangjys/JPushSample" 01 前言 - 极光推送是国内 ...

  7. Android原生UI开发框架 《Jetpack Compose入门到精通》最全上手指南

    前言 在去年的Google/IO大会上,亮相了一个全新的 Android 原生 UI 开发框架-Jetpack Compose, 与苹果的SwiftIUI一样,Jetpack Compose是一个声明 ...

  8. Resharper上手指南

    Resharper是我一直非常喜欢的工具.响当当的名声绝对不是吹牛皮吹出来的.如果你的公司在寻找一个提高开发人员效率的工具,那么首选应该是Resharper,这一笔投入是值得的.如果你想知道为什么,那 ...

  9. northgard如何修改服务器,北加尔图文攻略 Northgard 上手指南 + 全部落 + 全建筑

    by球球May.15,2017 <北加尔>图文攻略,Northgard游戏指南教程攻略(含"上手指南""全部落/建筑物/村民职业/典籍介绍"&quo ...

最新文章

  1. 关闭页面那点事儿...
  2. App开发流程之加密工具类
  3. Linux下java/bin目录下的命令集合
  4. 【数据结构与算法】伸展树的Java实现
  5. 当自己颓废的时候怎么激励自己?
  6. 内存管理之智能指针shared_ptr
  7. Spring Framework,ioc容器(转)
  8. docker 代理_Docker点滴:如何配置docker代理
  9. 计算机栏和用户栏有啥区别,电脑qq轻聊版和普通版有什么区别 windowsqq轻聊版特点...
  10. 编译错误(拓补排序)
  11. Ubuntu下制作deb包的方法详解
  12. 你必须牢记的Win7快捷键
  13. 驭龙HIDS的简介,它开源了
  14. 图像滤镜艺术---水彩画滤镜
  15. 数据分析真题日刷 | 京东2019春招京东数据分析类试卷
  16. 写的基于http协议的QQ聊天机器人
  17. RISC-V学习笔记【简介】
  18. Hector代码原理推导
  19. euraka 分区概念
  20. finder android,SmartFinder:Mac与安卓结合从未如此优雅

热门文章

  1. 四十七、第二份国外的Python考试(上篇)
  2. 化工原理 补考(重点)
  3. CIKM 2021 | 自监督学习在社会化推荐系统中的应用
  4. 视觉与听觉相结合的深度跨域情绪识别
  5. 从“猿”到“金刚”,机器学习让你在职业生涯超进化!
  6. 论文解读:深度监督网络(Deeply-Supervised Nets)
  7. 实验1 最小生成树问题【Kruskal+Prim】
  8. oracle不足位数补0
  9. 汇编语言 + Visual Studio 2019——Visual Studio 2019 中汇编语言环境解决方案
  10. HTTP协议那些不得不说的事