vim文本编辑器及文本处理常用命令
Vim是从 vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
一、文本编辑器的种类主要有
行编辑器:sed
全屏编辑器:nano,vi
vim – Vi Improved(vi文本编辑器的升级版)
二、Vim文本编辑器相关命令:
Vim是从 vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
1.vim打开文件:
vim[option]…FILE…
+# 打开文件后,让光标处于第#行行首
-o 后跟多个文件可水平显示多个窗口
-O 后跟多个文件可垂直显示多个窗口
-b 以二进制方式打开文件
-d file1 file2… 比较多个文件
注:当一个文件不存在时,用vim打开编辑存盘后会自动创建它
2.vim的三种主要模式:
命令(normal)模式:默认模式,可移动光标,剪切/粘贴文本。左下角显示文本路径,行数,字符数,右下角显示光标位置
插入(insert)模式:也叫编辑模式,修改文本。左下角显示 –INSERT–
扩展命令(extended command)模式:保存、退出等。左下角显示 “:”
3.vim模式切换:
命令模式—>插入模式
i:在光标处输入
I:在光标所在行首输入
a:在光标所在处后输入
A:在光标所在行行尾输入
o:在光标所在行的下方打开一个新行
O:在光标所在行的上方打开一个新行
插入模式—>命令模式
- ESC
命令模式—>扩展命令模式
- :
扩展命令模式—>命令模式
- ESC,Enter
4.vim的其他一些模式:
替换(replace)模式: 命令模式下R切换,可随意替换字符;右下角显示–REPALCE–
可视化(visual)模式:v 切换面向字符的可视化模式;右下角显示–VISUAL–V 切换面向行的可视化模式
ctrl+v 面试块的可视化模式
5.vim关闭文件
扩展模式
按”:”从命令模式进入Ex模式
wq 存盘退出
q 文本未修改,不存盘退出
q! 文本已被修改,想不存盘退出
w file 文件另存为file
r file 读取file文件内容到当前文件
!command 直接在扩展模式下执行命令
r!command 读入命令的输入到当前文件光标处
命令模式下也可关闭文件(不推荐使用)
ZZ 保存退出
ZQ 不保存退出
6.命令模式常用命令:
单词间跳转:
w 下一个单词词首
e 下一个单词词尾
b 当前或前一个单词的词首
当前页跳转:
H 页首
M 页中间
L 页底
行首行尾跳转:
^ 跳转至行首第一个非空白字符
0 跳转至行首
$ 跳转至行
行间移动:
#G 调至第#行;扩展模式下可执行 :G
G 最后一行
1G,gg 第一行
命令模式下字符操作
x:删除光标所在处字符
#x:删除从光标所在处开始#个字符
xp:交换光标所在处字符和它后面字符的位置(原理是剪切粘贴)
~:波浪符转换大小写
J:删除当前行后的换行符
r:替换光标所在处字符
d:删除命令
d$ 当前光标删除至行尾
d^ 当前光标删除到非空行首
d0 当前光标删除到行首
dw 删除单词
dd 删除光标所在的行
#dd 多行删除,一下删除#行
y:复制命令(用法类似d删除)
y$ 复制当前光标到行尾
y^ 复当前光标位置到非空行首
yw 复制单词
yy 复制光标所在的行
p:粘贴
p 粘贴至光标所在行下一行
P 粘贴至光标所在行上一行
u:撤销更改
#u 撤销之前多次修改
U 撤销光标落在这行后所有此行的修改
Ctrl+r 返回上次撤销
7.扩展命令模式常用命令:
格式:地址定界+编辑命令
地址定界
:# 跳到第#行
:#,# 第左侧第#行,到右侧第#行;2,5表示第2到第5行
:#,+# 从左侧第#行,加上右侧#的行;2,+3表示第2到5行
:. 当前行
$ 最后一行
% 全文,相当于1,$
:/pat1/,/pat2/ 从pat1匹配到的行开始,到第一次被pat2匹配到的行
:/pat1/,# 可混用
使用方式:后跟一个编辑命令
d 删除
y 复制
w file 将范围内行另存至指定文件中
r file 在指定位置插入匹配内容
查找字符
/PATTERN:从光标所在处向文件尾部查找
?PATTERN:从光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向
查找并替换
- s/要查找的内容/替换为的内容/修饰符
修饰符:
i:忽略大小写
g:全局替换每一行的第一次出现的匹配
gc:全局替换所有匹配,每次替换前询问
查找替换的分隔符/可用其他分隔符代替:如#,@
命令模式
u:撤销更改
ctrl+r 恢复上一次撤销
. 重复执行上一次操作
8.vim的剪贴板
有26个命名剪贴板和一个无命名剪贴板,存放不同的剪切内容,可以不同会话间分享
”myy 表示复制光标所在行到m剪贴板
“mp 表示将m剪贴板内容粘贴
3″tyy 表示复制3行内容到t剪贴板
“tp 表示将t剪贴板内容粘贴
9.vim多文件模式
vim FILE1 FILE2 FILE3
:next 下一个文件
:prev 上一个文件
:first 第一个文件
:last 最后一个文件
:wall 保存所有文件
:qall 退出所有
:wqall 保存退出
单文件的窗口分隔:方便对照文件内容
ctrl+w放开后按s 水平分割
ctrl+w放开后按v 垂直分割
ctrl+w放开后按q 取消相邻窗口
ctrl+w放开后按w 取消全部窗口;与:wqall相同
三、定制vim的工作特性
1.扩展命令模式下执行:
set number 添加行号
set nonumber 取消行号
此操作仅临时有效,退出重进vim后,操作失效,要想永久保存vim的工作特性,需写入配置文件中
2.配置文件:使vim工作特性永久有效
全局:/etc/vimrc
个人:~/.vimrc
3.其他一些常用vim特性命令:
忽略大小写
set ic 忽略大小写
set noic 取消忽略大小写
自动缩进
set ai 自动和上一行对齐
set noai 取消对齐
文件格式转换
set fileformat=unix Windows文件转换Linux文件
set fileformat=dos Linux文件转换Windows文件
设置光标所在行下划线
set cursorline 启用
set no cursorline 禁用
复制时保留格式:
set paste 启用
set nopaste 禁用
查看全部已配置的vim工作特性
:set 显示全部已配置set
:help 查看帮助
四、文本处理常用命令
cut 按列抽取文本
-d 指定分隔符
-f 指定第几列
–output-delimiter=’ ‘ 指定单引号中符号作为分隔符
diff 比较两个文件直接的差别,后跟file1,file2
- -u
head
-n 显示头n行
-c 显示头n个字节
tail
-n 显示最后n行
-c 显示最后n个字节
-f 跟踪文本的变化(追加内容),可写为tailf
-F 跟踪文件名
sort 排序
-t 指定分隔符(类似cut -d)
-k 指定第几列(类似cut -f)
-n 以数字排序
-r 倒序排列
-f 忽略大小写
-u 删除重复的行压缩到一行
-R 随机排序
paste 合并两个文件同行号的列到一行
-s 合并两个文件按一行显示
-d 指定分隔符,类似cut -d的用法
grep 基于行过滤的文本过滤工具(grep文本处理三剑客之一)
-v 显示不被匹配到的行
-i 忽略字符大小写
-n 添加匹配到的行的行号
-c 统计被匹配到的行数
-o 仅显示匹配到的字符
-q 静默模式
-A# 包含此匹配行和后#行
-B# 包含此匹配行和前#行
-C# 包含此匹配行和前后#行
-e 实现多个匹配字符的或者(or)关系 -e a -e b:a或b
-w 匹配整个单词,数字、字母、下划线都算单词一部分
-r 递归目录
-E 使用ERE,扩展的正则表达式
-F 相当于fgrep