Linux——vim文本编辑器最新详解(由浅入深)

为什么要学vim

  • 所有的Unix-like 系统都会内建vi文本编辑器,其他的文本编辑器则不一定会存在;
  • 很多个别软件的编辑接口都会主动呼叫vi(例如:crontab、visudo、edquota);
  • vim是vi的进阶版,具有程序编辑能力,例如 shell script、C program ,可以主动地以字体颜色辨别语法的正确性;
  • vim还可以用不同的颜色或底线等方式来显示一些特殊的信息。

因为有太多Linux上面的命令都默认使用vi作为数据编辑的接口,所以必须得学会vi,否则很多命令就无法进行操作;另外,vim是vi的高级版本,又可以用颜色或下划线的方式显示一些特殊的信息;因此,现在我们选择功能更为强大的vim。

vim与vi的区别:

1、多级撤销。在vi中按u只能撤销上次命令,而在vim中可以无限制的撤销。

2、易用性。vi只能用于Unix中,而vim可以在Unix,Windows,Mac等多操作平台

3、语法加亮。Vim可以用不同的颜色加亮你的代码

4、可视化操作。就是说vim不仅可以在终端运行,也可以运行于x window、Mac OS、Windows。

5、对于vi的完全兼容。某些情况下,你可以把vim当成vi来使用

vim的三种基本模式

  • 一般命令模式: 可以进行复制、粘贴、删除等操作
  • 编辑模式: 编辑文件的内容,在命令模式下输入i、a、o(I、A、O)等任意一个键即可进入编辑模式
  • 末行模式 / 命令行模式: 保存 / 退出文档,或者设置各种编辑环境
    Linux——vim文本编辑器最新详解(由浅入深)_第1张图片

简单执行范例

1、vim编辑器的启动

1、直接进入编辑环境
[root@localhost ~]# vim

2、使用【vim filename】进入编辑环境并打开(新建)文件
[root@localhost ~]# vim text

2、在命令模式下按【i】键进入编辑模式
3、按下【Esc】键回到一般命令模式
4、vim编辑器的退出

1、退出vim编辑环境
	:q 退出
	:wq 保存退出
2、放弃对文件的更改并退出编辑器
	:q!

一、进入编辑模式按键操作

按键 说明
i 在当前光标处进入插入状态
a 在当前光标后进入插入状态
A 将光标移动到当前行的行末,并进入插入模式
o 在当前行的下面插入新行,光标移动到新行的行首,进入插入状态
O 在当前行的上面插入新行,光标移动到新行的行首,进入插入状态

二、一般命令模式的常见操作

1. 行内快速跳转

操作键 功能
^ 将光标快速跳转到本行的行首字符
$ 将光标快速跳转到本行的行尾字符
w 将光标快速跳转到当前光标所在的位置的后一个单词的首字母
b 将光标快速跳转到当前光标所在位置的前一个单词的首字母
e 将光标快速跳转到当前光标所在位置的后一个单词的尾字母
方向键 进行上下左右方向的光标移动
Home 快速定位到光标到行首
End 快速定位到光标到行尾

2. 行间快速跳转

命令 功能
:set nu 在编辑器中显示行号
:set nonu 取消编辑器行号显示
1G 跳转到文件的行首
G 跳转到文件的末尾行
nG 跳转到文件中的第n行
PageUp 进行文本的向上翻页
PageDown 进行文本的向下翻页

3. 文件内容的删除

命令 功能
x 删除光标处的单个字符 =delete
dd 删除光标所在行 ndd可以删除n行内容
dw 删除当前字符到单词尾(包括空格)的所有字符
de 删除当前字符到单词尾(不包括单词尾部的空格)的所有字符
d$ 删除当前字符到行尾的所有字符
d^ 删除当前字符到行首的所有字符
J 删除光标所在行行尾的换行符,相当于合并当前行和下一行的内容

4. 文件内容的撤销

命令 功能
u 取消最近一次的操作,并恢复操作结果;可以多次使用命令恢复已进行的多步操作
U 取消对当前行的所有操作
Ctrl + r 对使用u命令撤销的操作进行恢复

5. 文件内容的复制和粘贴

命令 功能
yy 复制当前行整行的内容
nyy 从当前行开始复制n行
yG 复制当前行到最后一行的所有数据
y1G 复制当前行到第一行的所有数据
p 将已复制的数据在光标下一行粘贴

三、命令行模式的常见操作

1. 文件的保存与退出

命令 说明
:w 将编辑的数据写入硬盘文件中,即保存
:w! 强制写入硬盘文件
:q 退出vi / vim
:q! 强制退出不保存
:wq 保存后退出,若为 :wq! 则为强制保存后退出
:w [filename] 将编辑的数据保存成另一个【filename】文件
:r [filename] 将【filename】文件内容追加到当前文件的光标所在行后面

2. 文件内容的查找

命令 功能
/word 从上而下在文件中查找字符串 “word”
?word 从下而上在文件中查找字符串 “word”
n 定位下一位匹配的被查找字符串
N 定位上一位匹配的被查找字符串

3. 文件内容的替换

命令 功能
: s/old/new 将当前行中查找到的第一个字符串 “old” 替换为 “new”
: s/old/new/g 将当前行中查找到的所有字符串 “old” 替换为 “new”
:#,#s/old/new/g 在行号 " #,# " 范围内替换所有的字符串 "old" 为 "new"
:%s/old/new/g 在整个文件范围内替换所有的字符串 "old" 为 "new"
: s/old/new/c 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认

4. 自定义vim使用环境

命令 功能
:set nu 在文档中显示行号
:set nonu 与 :set nu 相反,为取消显示行号

四、多文件、多窗口编辑

假如有两个或者多个文件需要对比观看,我们要一个接一个的打开对照吗?这种做法显然是效率低下的,这时采用多文件、多窗口编辑的功能就能极大地提高效率。

1、首先用【vim filename】打开一个文件
[root@localhost ~]# vim /etc/passwd

2、在当前文件下进入命令行模式输入【:sp filename】打开另一个文件
$	:sp /etc/shadow

效果如下图:
Linux——vim文本编辑器最新详解(由浅入深)_第2张图片

多窗口下的操作

操作键 功能
:sp filename 打开一个新窗口,加入filename文件
ctrl+w+方向下键 将光标移动到下方的窗口
crtl+w+方向上键 将光标移动到上面的窗口
:qa 退出所有文件

五、vim环境设置与记录:~/.vimrc、 ~/.viminfo

说明:
~/.viminfo:vim会主动的将你曾经做过的操作记录下来,保存到 ~/.viminfo文件
~/.vimrc:整体vim的设定值一般是放置在 /etc/vimrc这个文件,不过,不建议你修改它!但是可以修改 ~/.vimrc这个文件(预设不存在,需要自行手动建立),将你所希望的环境设定值写入。举例如下:

[root@localhost ~]# vim ~/.vimrc
set nu					#可以在每一行的最前面显示行号
set hlsearch			#高亮度反白
set autoindent			#自动缩进
set backspace=2			#可随时用退格键删除
set ruler				#可显示最后一行的状态
set showmode			#左下角那一行的状态
set bg=dark				#显示不同的底色色调
syntax on				#进行语法检验,颜色显示

六、语系编码转换(中文编码问题)

有很多朋友经常会碰到 vim 编辑器里面显示中文乱码的问题,这其实很可能是因为编码的问题。中文编码常用的有Big5GBKUTF-8等几种,如果你的文件使用的是GBK编码,但在vim的终端界面中使用的是UTF-8,由于编码的不同(字符集不同),中文就会显示成一堆乱码。

iconv命令:用于编码转换
命令格式iconv -f 原始编码 -t 输出编码 原文件名 -o 输出文件名

参数 说明
-f –from-code = 名称 原始编码
-t –to-code = 输出编码
-o –output = FILE 输出文件名

案例演示:
在windows下创建一个含有中文的文件aaa.txt,并传给Linux(这里可以通过MobaXterm_CHS传输),回到Linux系统中打开显示是中文乱码,这时我们使用iconv编码转换,并输出为bbb.txt。

[root@localhost a]# iconv -f GBK -t utf8 aaa.txt -o bbb.txt

编码转换前:
Linux——vim文本编辑器最新详解(由浅入深)_第3张图片
编码转换后:
Linux——vim文本编辑器最新详解(由浅入深)_第4张图片
注:
windows中记事本默认字符集是ANSI 可以通过另存为右下角查看
如果是中文操作系统指的ANSI就是指的是 GBK

七、写在最后:

vim入门很简单,但是其实不是那么好学的,因为它的功能十分强大,支撑起Linux的半壁江山。因此,我们在平时要多看、多练,才能成为一名合格的Linux系统的维护者。

好了,如果对你有所帮助的话,就是对博主创作的最好支持!如有不足,还请雅正!

你可能感兴趣的:(Linux操作系统)