第四天:文件处理工具VIM
一、文本编辑工具简介
1、全屏编辑器:nano(字符工具),gedit(图形化工具),vi,vim,行编辑器:sed
2、vi:Visual editor,文本编辑器,是Linux必备工具之一,功能强大,学习曲线较陡峭,学习难度大
3、vim :Visual editor iMproved , 和vi使用方法一致,但功能更为强大,不是必备软件。 官网:www.vim.org; 学习网站:https://www.w3cschool.cn/vim/
4、gvim :一个vim编辑器的图形版本
二、VIM命令详解 vim [OPTION] ... FILE ...
1、常用参数
+# 打开文件后,让光标处于第#行的行首,+默认行尾
+/PATTERN 让光标处于第一个被PATTERN匹配到的行行首
-b file 二进制方式打开文件
-d file1 file2 比较多个文件,相当于vimdiff
-m file 只读打开文件
-e file 直接进入ex模式,相当于执行ex file
-y file Easy mode ,直接可以操作文件,ctrl+o:wq|q!,保存和不保存退出
2、三种主要模式
命令或普通模式:默认模式,可以实现移动光标,剪切/粘贴文本
插入(insert)或编辑模式,用于修改文本
扩展命令或命令行模式 :保存,退出等
3、三种模式转换
命令模式--》插入模式
i insert ,在光标所在处输入
I 在当前光标所在行的行首输入
a append ,在光标所在处后面输入
A 在当前光标所在行的行尾输入
o 在当前光标所在行的下方打开一个新行
O 在当前光标所在行的上方打开一个新行
插入模式---ESC --->命令模式
命令模式---:---->扩展命令模式
扩展命令模式---ESC,enter ----->命令模式
3、扩展命令模式:按 :进入
w 写(存)磁盘文件
wq 写入并退出
x 写入并退出
X 加密
q 退出
q! 不存盘退出,即使更改都将丢失
r 读文件内容到当前文件中
w 将当前文件内容写入另一个文件
!command 执行命令
e!command 读入命令的输出
4、地址定界 :start_pos; end_pos CMD
(1)格式
# 第#行
#,# 从左#行,到右#行
#,+# 从左#行,到右+#行
. 当前行
$ 最后一行
.,$-1 当前行到倒数第二行
% 全文
(2)命令
d 删除
y 复制
w file 将范围内的行另存到指定文件中
r foile 在指定位置插入指定文件中的所有内容
t#行号 将前面指定的行复制到#行后
m#行号 将前面指定的行移动到#行后
5、查找并替换
s/要查找的内容/替换为的内容/修饰符
修饰符: i 忽略大小写; g 全局替换,默认情况下,每一行只替换第一次出现; gc 全局替换,每次替换前询问
分隔符:#,@
6、定制vim的工作特性
(1)配置文件地址
/etc/vimrc 全局
~/.vimrc 个人
(2)行号:
set number / set nonumber
(3)忽略字符的大小写 set ignorecase set noic
(4)自动缩进:set autoindent set noai
(5)复制保留格式:set paste set nopaste
(6)显示tab^|和换行符和¥显示
set list set nolist
(7)高亮搜索:set hlsearch set nohlsearch
(8)语法高亮: syntax on syntax off
(9)文件格式 :set fileformat=dos /unix
(10)TAB用空格代替:set expandtab set noexpandtab
(11)tab 用指定的空格的个数代替: set tabstop=#
(12)设置缩进宽度:
#向右缩进 命令模式 >>
#向左缩进 命令模式 <<
设置缩进为4个字符: set shiftwidth=4
(13)设置文本宽度 set textwidth=95 set wrapmargin=15
(14)设置光标所在行的标识线:set cursorline set nocursorline
(15)加密:set key=password set key=
(16)了解更多::
:help option-list
:set or :set all
7、命令模式
(1)ZZ 保存退出 ZQ不保存退出
(2)光标跳转: h 左 L右 j下 K 上
(3)单词单跳转:
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
#COMMAND:由#指定一次跳转的单词数
(4)当前页跳转
H:页首
M:页中间行
L:页底
zt:将光标所在当前行移到屏幕顶端
zz:将光标所在当前行移到屏幕中间
zb:将光标所在当前行移到屏幕底端
(5)行首行尾跳转
^ 跳转至行首的第一个非空白字符
o 跳转至行首
$ 跳转至行尾
(6)行间移动
#G 或者扩展命令模式下
:# 跳转至由第#行
G 最后一行
1G,gg 第一行
(7) 句间移动:
) 下一句
( 上一句
(8)段落间移动
} 下一段
{ 上一段
(9)命令模式翻屏操作
ctrl+f 向文件尾部翻一屏
ctrl+b 向文件首部翻一屏
ctrl+d 向文件尾部翻半屏
ctrl+u 向文件首部翻半屏
(10)字符编辑
x 剪切光标处的字符
#x 剪切光标处起始的#个字符
xp 交换光标所在处的字符及其后面字符的位置
~ 转换大小写
j 删除当前行后的换行符
(11)替换命令
r 只替换光标所在处的一个字符
R 切换成REPLACE模式
(12)删除命令
d 删除命令,可结合光标跳转字符,实现范围删除
d$ 删除到行尾
d^ 删除到非空行首
d0 删除到行首
dw
de
db
#COMMAND
dd: 剪切光标所在的行
#dd 多行删除
D 从当前光标位置一直删除 到行尾,等同于d$
(13)复制命令(yank)
y 复制,行为相似于d,命令
y$
y0
y^
ye
yw
yb
#COMMAND
yy 复制行
#yy 复制多行
Y 复制整行
(14) 粘贴命令(paste)
P 缓冲区存的如果为整行,则粘贴当前光标所在行的下方,否则,则粘贴至当前光标所在处的后面
p 缓冲区存的如果为整行,则粘贴当前光标所在行的上方,否则,则粘贴至当前光标所在处的前面
(15) 改变命令(change)
命令C删除后切换成插入模式
(16) vimtutor: vim说明书
三、其他工作
1、cat
2、tac 倒着显示文件内容
3、rev 同一行倒着写
4、hexdump 显存非文本16进制
5、more
6、less 翻页显示 ,支持管道
7、head :显示文件的前几行
8、tail -f 跟踪日志变化
9、cut :按分隔符,剪切内容
10、df
11、paste 两个文件合并 竖转横
12、wc 单词统计 wc -l
13、sort 对文件进行排序,按字符顺序
14、uniq 去重
15、diff 比较两个文件不同
16、 patch 复制在其它文件中进行的改变
17、vimdiff 相当于vim -d
18、cmp 比较两个二进制文件