一步一步学Linux下vi/vim的使用(案例比纯理论好学)
vim是一个功能强大的全屏幕文本编辑器,是Linux上最常用的文本编辑器,在编辑配置文件和写短的shell脚本时用。它没有菜单,只有命令。
先跟着做,走个最简单的流程。把vim使用起来。
在终端中输入:
vi 111.txt
这个命令过后,如果原来不存在111.txt,则是新建并打开。如果原来存在111.txt,则是编辑111.txt。
这时就进入了命令模式(如下图),命令模式下,键盘输入的任何东西都会被看成“操作命令”,而不是“文件内容”。
接下来如下图动画所示:
这样一来,最简单的使用vi编辑并保存文件我们就操作结束了。
我们用windows下的编辑器习惯了,而vim是命令提示符下使用,它没有菜单界面,不能用鼠标点击下面的菜单,做各种选择。
一切都是靠键盘控制。所以必须搞清楚几个模式之间切换的概念,也就是最开始的那张说明图。
记住:
1.命令模式下,输入的一切都是操作命令,而不是文件内容。
2.脑子中有命令模式,输入模式(插入模式),底线命令模式(编辑模式)的概念,记住它们是如何切换的。新手很容易忘记按ESC回到命令模式,再输入一些操作,所以要常看这个图
1) 命令行模式command mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
2) 插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
3) 底行模式(last line mode)
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。
简单地,可以使用上下左右方向箭头和delete,backspace键来进行位置移动和删除,不管是命令模式还是插入模式
————————
搞清楚这些概念后,剩下的诸如如何定位到行,显示行号,编辑替换等具体操作,用的时候,看使用说明书即可。下面补充一些常用的使用说明书。
操作前提: 在什么模式下操作的? |
输入什么? | 起了什么作用? | 将会到什么模式? |
命令模式 | a | 进入插入模式,并从光标后面开始输入文字 | 插入模式 |
i | 进入插入模式,并从光标前面开始输入文字 | ||
o | 进入插入模式,在光标下面插入新行,在新行内输入文字 | ||
O | 进入插入模式,在光标上面插入新行,在新行内输入文字 | ||
A | 进入插入模式,在光标所在行的行尾输入文字 | ||
I | 进入插入模式,在光标所在行的行首输入文字 |
怎么定位?
最简单的是键盘上的 [上] [下] [左] [右]键,[pageup]、[pagedown]键,[home]、[end]键。除了这些之外还可以见表格
操作前提: |
输入什么? | 起了什么作用 | 注意 | 将会回到什么模式? |
命令模式 | :set nu | 设置为:显示行号 | 先输入冒号,进入了底行命令模式,最后要回车 | 命令模式 |
:set nonu | 设置为:不显示行号 | 同上 | ||
gg | 光标到第一行 | 没有冒号,最后也不用敲回车 | ||
G | 光标到最后一行 | 同上 | ||
nG | 到第n行 | 这里n是任意一个正整数,这种方式输入数字的时候,看不到,可以用下面的方法代替 | ||
:n | 到第n行(同上) | 先输入冒号,进入了底行命令模式,最后要回车 | ||
$ | 光标移到行尾 | 【end】键也是这效果 | ||
0 | 光标移到行首 | 注意,是0零不是o欧,【home】键也是这效果 |
怎么删除?
操作前提: 在什么模式下操作的? |
输入什么? | 起了什么作用 | 将会回到什么模式 |
命令模式 | x | 删除光标所在字符,和【delete】键一样 | 命令模式 |
nx | 删除光标所在处后n个字符 | ||
dd | 删除光标所在一整行 | ||
ndd | 删除n行 | ||
dG | 从光标所在行删到文件末尾 | ||
D | 从光标所在处删掉行尾 | ||
:m,nd | 从第m行开始删,一直删到第n行 |
怎么复制,剪切?
xshell支持用鼠标选择复制粘贴哦!
操作前提: 在什么模式下操作的? |
输入什么? | 起了什么作用 | 将会回到什么模式 |
命令模式 | yy | 复制当前行(进剪切板了,下一步要粘贴才有效果) | 命令模式 |
nyy | 复制当前行以下n行 | ||
dd | 剪切当前行(剪切和删除是同一个命令) | ||
ndd | 剪切当前行以下n行 | ||
p | 粘贴在光标所在行下面 | ||
P | 粘贴在光标所在行上面 | ||
:m,nd | 从第m行开始删,一直删到第n行 |
怎么显示行号?
如果内容多,怎么翻页查看?
怎么搜索替换?
怎么选中,复制/剪切 粘贴?从其他地方剪切的文本,粘贴过来?