vim文本编辑器及文本处理常用命令
文章目录
一、文本编辑器的种类主要有:
行编辑器:sed
全屏编辑器:nano,vi
vim – Vi Improved(vi文本编辑器的升级版)
二、Vim文本编辑器相关命令:
Vim是从 vi发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
vim打开文件:
vim[option]…FILE…
+# 打开文件后,让光标处于第#行行首 -o 后跟多个文件可水平显示多个窗口 -O 后跟多个文件可垂直显示多个窗口 -b 以二进制方式打开文件 -d file1 file2… 比较多个文件
注:当一个文件不存在时,用vim打开编辑存盘后会自动创建它
vim的三种主要模式:
命令(normal)模式:默认模式,可移动光标,剪切/粘贴文本。左下角显示文本路径,行数,字符数,右下角显示光标位置
插入(insert)模式:也叫编辑模式,修改文本。左下角显示 –INSERT–
扩展命令(extended command)模式:保存、退出等。左下角显示 “:”
3.vim模式切换:
命令模式—>插入模式
i:在光标处输入
I:在光标所在行首输入
a:在光标所在处后输入
A:在光标所在行行尾输入
o:在光标所在行的下方打开一个新行
O:在光标所在行的上方打开一个新行
插入模式—>命令模式
ESC
命令模式—>扩展命令模式
:
扩展命令模式—>命令模式
ESC,Enter
vim的其他一些模式:
替换(replace)模式: 命令模式下R切换,可随意替换字符;右下角显示–REPALCE–
可视化(visual)模式:v 切换面向字符的可视化模式;右下角显示–VISUAL–
V 切换面向行的可视化模式
ctrl+v 面试块的可视化模式
vim关闭文件
扩展模式
按”:”从命令模式进入Ex模式 wq 存盘退出 q 文本未修改,不存盘退出 q! 文本已被修改,想不存盘退出 w file 文件另存为file r file 读取file文件内容到当前文件 !command 直接在扩展模式下执行命令 r!command 读入命令的输入到当前文件光标处
命令模式下也可关闭文件(不推荐使用)
ZZ 保存退出 ZQ 不保存退出
命令模式常用命令:
单词间跳转:
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 返回上次撤销
扩展命令模式常用命令:
格式:地址定界+编辑命令
地址定界
:# 跳到第#行
:#,# 第左侧第#行,到右侧第#行;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:查找并替换
格式:s/要查找的内容/替换为的内容/修饰符
修饰符:
i:忽略大小写
g:全局替换每一行的第一次出现的匹配
gc:全局替换所有匹配,每次替换前询问
查找替换的分隔符/可用其他分隔符代替:如#,@
命令模式
u: 撤销更改
ctrl+r 恢复上一次撤销
. 重复执行上一次操作
1. 重复执行上一次操作n次
- vim的剪贴板
有26个命名剪贴板和一个无命名剪贴板,存放不同的剪切内容,可以不同会话间分享
例:”myy 表示复制光标所在行到m剪贴板
“mp 表示将m剪贴板内容粘贴
3″tyy 表示复制3行内容到t剪贴板
“tp 表示将t剪贴板内容粘贴
- 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的工作特性
扩展命令模式下执行:
set number 添加行号
set nonumber 取消行号
此操作仅临时有效,退出重进vim后,操作失效,要想永久保存vim的工作特性,需写入配置文件中
配置文件:使vim工作特性永久有效
全局:/etc/vimrc
个人:~/.vimrc
其他一些常用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
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 基于行过滤的文本过滤工具
-v 显示不被匹配到的行 -i 忽略字符大小写 -n 添加匹配到的行的行号 -c 统计被匹配到的行数 -o 仅显示匹配到的字符 -q 静默模式 -A# 包含此匹配行和后#行 -B# 包含此匹配行和前#行 -C# 包含此匹配行和前后#行 -e 实现多个匹配字符的或者(or)关系 -e a -e b:a或b -w 匹配整个单词,数字、字母、下划线都算单词一部分 -r 递归目录 -E 使用ERE,扩展的正则表达式 -F 相当于fgrep