今天我将vim编辑器的学习心得和大家一起分享,请大家多多指点
文本编辑器有很多,今天我们学习Linux系统默认自带的编辑器是vim文本编辑器
Vim:Visual iMproved是编辑器Visual Interface的增强版,在使用编辑脚本时会有高亮颜色提示关键字符,使得我们的脚本编辑更加方便的排错,下面我们具体说明vim编辑器的使用
Vim编辑器是编辑纯ASCII码文本,全屏、模式化编辑器,vim有三种编辑模式,分别是:
命令模式,此时可以在文本中移动光标来查看文本内容,可以复制,粘贴,删除文件内容等操作
输入模式,此时可以进行文件内容的编辑,添加,删除等操作
末行模式,此时可以进行除了编辑命令以外的管理命令,如读取另外一个文件的内容进来,文件重命名等操作
一、三个模式之间可以相互切换;用户使用vim进入文件时,默认的模式是编辑模式,此时按编辑开关进入输入模式,这些编辑开关有:
i 进入输入模式,在当前光标所在字符的前面开始插入字符
I 进入输入模式,在当前光标所在行的行首开始插入字符
a 进入输入模式,在当前光标所在字符的后面插入字符
A 进入输入模式,在当前光标所在行的行尾插入字符
o 在当前光标所在行的下面添加一行,并进入输入模式
O 在当前光标所在行的上面添加一行,并进入输入模式
由输入模式退出到命令模式只需按ESC键即可,而输入模式和末行模式之间不可以直接进行交换,必须先进入命令模式,然后再进行切换
由命令模式进入末行模式只须按“:”键即可,在末行模式下可以进行基本文件管理操作,如关闭正编辑的文件
:w 保存,此时只保存并不退出
:w! 强制保存
:q 退出,此时只有在没有更改过文件内容时可以使用
:q! 不保存且强制退出
:wq 保存退出
:x 保存退出
ZZ 在命令模式下保存退出
退出末行模式进入命令模式只需按ESC键即可
二、在vim编辑器中移动光标:
1.逐个字符移动光标:
nh 将光标向左移动n个字符,1h可以省略1
nj 将光标向下移动n个字符
nk 将光标向上移动n个字符
nl 将光标向右移动n个字符
2.逐个单词移动光标:
nw 将光标移动到当前单词首部,或将光标移动到后n个单词的词首
ne 将光标移动到当前单词尾部,或将光标移动到前n个单词的词尾
nb 将光标移动到当前单词首部,或将光标移动到前n个单词的词首
0 将光标移动的当前所在行的行首,绝对行首
^ 将光标移动到当前所在行的第一个非空白字符下边
$ 将光标移动到当前所在行的行尾,绝对行尾
3.按行移动光标:
nG 将光标移动到文件第n行的行首
gg 将光标直接移动到文件第一行的行首
G 将光标直接移动到文件最后一行行首
:n 在命令模式下将光标移动到文件第n行行首
4.按段移动光标:
{ 将光标移动到当前所在句的上一段第一个单词的词首
} 将光标移动到当前所在句的下一段第一个单词的词首
三、翻屏查看文件内容,显示文件内容行号:
Ctrl+f == pgdn:将文件内容向下翻一屏
Ctrl+d 将文件内容向下翻半屏
Ctrl+b == pgup:将文件内容向上翻一屏
Ctrl+u 将文件内容向上翻半屏
在末行模式下输入“:set nu”文件内容添加行号,并不更改文件元数据,只是方便查看
取消行号的显示,在末行模式下输入:set nonu
四、复制,粘贴,剪切,删除,修改,撤销更改:
nyw 从光标所在位置开始及向后复制n个单词
nyy 从光标所在行开始向下复制n行
p 如果复制或删除的是整行内容,将复制或删除的内容粘贴在光标所在行的下边
如果复制或删除的不是整行内容,则将复制或删除的内容粘贴在光标所在位置的后边
P 如果复制或删除的是整行内容,将复制或删除的内容粘贴在光标所在行的上边
如果复制或删除的不是整行内容,则将复制或删除的内容粘贴在光标的前边
Linux中vim编辑器删除的内容并不会立即被清除,而是存储到缓冲区中,以方便文 件内容的剪切,但必须相连操作
ndw 删除光标所在位置及向后n个单词
ndd 删除光标所在行及向下n行
d0 删除从光标所在位置到行首的内容
d$ 删除从光标所在位置到行尾的内容
n,md 删除从第n行到第m行的内容
:n,+md 在末行模式下删除从第n行及以下m行的内容;此时点表示当前行,$表示最后 一行,+m表示向下m行,$-1表示倒数第2行
ncw 先删除从光标所在单词及后面共n个单词,然后进入输入模式
ncc 先删除光标所在位置及下边n行内容,然后进入输入模式
nc0 先删除从光标所在位置到行首的内容,然后进入输入模式
nc$ 先删除从光标所在为位置到行尾的内容,然后进入输入模式
s 先删除光标所在位置的单个字符,然后进入输入模式,不支持同时删除多个
u undo 撤销上一次对文本内容的操作,可以多次撤销,最多可以撤销50次
nu 撤销前n次对文本内容的操作
U 撤销对光标所在行内容的所有操作
Ctrl+r 恢复上次撤销操作
“.” 点表示重复上一次编辑操作
五、查找,替换,多项内容选取:
在末行模式下输入/PATTERN,从文件首部开始全文查找内容PATTERN
?PATTERN,从文件尾部开始全文查找内容PATTERN
n查看下一个查找到的内容,N查看上一个
查找内容支持正则表达式,如
:2,4s/word/world/g,在文件第二行到第四行中查找单词world,并全部更换为world
%表示全文
V,v进入可视化模式,VISUAL
V:从光标所在位置开始进行行选取,然后对选中内容进行操作编辑
v:从光标所在位置开始进行字符选取,然后对选中内容进行操作编辑
六、文件内容另存为,读取别的文件内容到当前文本:
:w /tmp/filename 将当前编辑的文本另存为/tmp/filename,并不退出
:wq /tmp/filename 将当前编辑的文本另存为/tmp/filename,并推出编辑器
:addr1,addr2w /tmp/filename2 将文件addr1和addr2中的内容保存到tmp下,并命名为filename2
:r /etc/inittab 读取文件inittab中的内容到当前文件中,并粘贴在光标所在行的下边
七、同时打开多个文件进行编辑,分屏显示文件内容:
vim file1 file2...... 同时编辑文件file1,file2等,但vim是全屏编辑,所以只显示第一个文件,我们可以在多个文件之间进行切换
:files 查看当前共打开了多少个文件
:n、next 跳转到当前编辑文件的下一个文件,如果当前文件做了更改,则需要先保存当前文件,然后才可以跳转到下一个文件
:N、prev 跳转到当前编辑文件的上一个文件
:last 跳转到所有文件的最后一个文件
:first 跳转到所有文件的第一个文件
:qa 全部退出,关闭所有编辑窗口
我们有的时候需要看着上边的文件在下边进行编辑,所以需要进行窗口拆分来显示文件内容
Ctrl+w,s 水平拆分当前文件显示窗口,ctrl+w进行选择,方向键可以进行窗口之间的切换
Ctrl+w,v 垂直拆分当前文件显示窗口
vim -o file1 file2 水平拆分窗口显示file1和file2,ctrl+w进行窗口间的切换
vim -O file1 file2 水平拆分窗口显示file1和file2
八、和shell进行交互:
此时不用退出,直接在末行模式下输入command即可,执行完之后按回车键即可回到vim编辑器
:!command enter键返回vim编辑器
九、vim高级管理及其配置文件:
设定vim的当前编辑环境,仅对当前vim进程有效,退出则设定作废
:set ic 忽略大小写,此时在使用查找文本和命令补全时非常方便
:set noic 取消忽略大小写
:set ai 设定编辑时文本进行自动行缩进
:set noai 取消行缩进
:set hlsearch 查找文本时以高亮颜色显示查找到的文本
:set nohlsearch 取消高亮显示
:syntax on 开启脚本编辑时的语法高亮
:syntax off 关闭语法高亮
Vim编辑器的全局配置文件存放在/etc/vimrc中,这个文件的编辑对全局用户都有效
用户自己家目录下的 ~/.vimrc中的配置只对用户自己有效,而用户家目录中的vim配置文件可能不存在,我们只需创建编辑即可,切记编辑为隐藏文件
当我们使用vim编辑器编辑文件非正常退出时,系统会自动保存一个同名的隐藏文件,在下次登录时会提示用户操作,如编辑inittab时,强行禁止vim进程,则系统会自动保存一个.inittab.swp文件,里边保存的是用户这次对文件inittab的修改
下次登录时的操作提示一般会有六个,分别是
Open read-only :以只读方式打开此文件,当你只是想查看次文件而并不想编辑时
Edit anyway:以正常方式打开此文件,不载入暂存档的内容,容易出现错误,不建议使用
Recovered:载入暂存档的内容,显示之前更改过的文件
Delete it:将此文件删除,如果确定此文件没有用时,可以删除
Quit:退出vim编辑器
Abort:忽略此编辑行为
vimtutor,Linux操作系统中自带的vim使用教程,非常详细,初学者可以阅读学习;直接在命令行输入vimtutor即可查看vim的详细使用说明