3-vim、文件处理
vim编辑器
交互式编辑器,提高文本处理效率
一次性读入内存,一旦读大文件,内存就崩了。
三种模式
1 1-命令模式:进入后默认模式 2 3 2-编辑模式: 4 a:光标后编辑,append 5 A:直接光标移动到行尾进入编辑模式 6 i:光标前插入,insert进入编辑模式 7 I:行首插入进入编辑模式 8 o:另起下一行,进入编辑模式 9 O:光标的上一行进入编辑模式 10 11 3-末行模式: 12 从命令模式,:进入 13 :q,没有修改退出 14 :wq,保存退出 15 :q!,放弃修改强制退出 16 :wq!只读文件,且为老大root,对文件强行修改保存退出 17 :ZZ保存退出 18 :x 保存退出
命令模式移动光标
0:行首 $:行尾 k h l j 分队对应上下左右
命令模式删除、复制、撤销、回退
补充:
末行:set nu显示行号
ngg移动到第n行
nG:也是移动到第n行
G:移动到末行。
dd:剪切当前行,如果不粘贴p,那么就是删除操作
ndd:删除当前行为1,向下数n行
yy:复制当前行
nyy:复制n行
p:粘贴
np:粘贴n次
所有的操作记录都在一个栈中保存。
u:撤销刚才复制操作,相当于回退一步
ctrl+r:回复刚才的撤销操作,相当于向前走一步
可视块
v:进入可视块模式,普通可视块 ctrl+v:垂直选中模式,常用语批量加注释
选中要加注释的行开头,shift+i,才能进入编辑,编辑好之后按esc,全部行注释全部加好。
查找、替换内容
/num 查找num字符串
替换语法
:范围 s/souce/destination/选项
默认只会替换每一行的一个单词,多余的不替换
选项加g表示全局替换,每行不管多少全部替换
选项i,表示忽略大小写
单行的话
:2 s///只替换第二行。
:% s/gyx/thb/g %表示全部行,g表示这行从左到右。
%:表示所有行
s:substitute替换
也可以具体,:1,6 s/source/destination/
:6,$ s/// 6-最后一行
中间字符串支持正则表达式
:% s/^gyx/th/g 以gyx为开头的行才替换。
新模式w
除了模式s,还有w和r
:1,5 w /root/1.txt 将1-5行内容写到/root/1.txt文件中
模式r,从另一个文件读内容到当前文件。
:r /usr/1.txt 将此文件读到当前光标所在行的下一行
vimdiff
vimdiff 1.txt 2.txt
打开2个窗口,不通的行高亮显示。
ctrl+ww可以切换窗口,注意是两个w
其他与单窗口无区别。
尤其协同开发,多个人对同一个文件进行了修改,合并的时候会冲突,你觉得第三行要加装饰与,我觉得第三行要加状语,那么二者就冲突
这是就需要选择最好的那一个,作为最终的版本。
现在都用git,vimdiff用的比较少。
diff
diff 1.txt 2.txt
<333
----
>33
>444
只要标识出来的就是两个文件不同的地方,<表示1.txt >表示右边的2.TXT
----为分割线
vim同时编辑多个文件
vim -o a.txt b.txt
-O:大o是并排排列,小o是上下排列
上下两个窗口,也可以多个文件,同样是ctrl+ww切换窗口
退出是一次性退出两个窗口。
交换文件 .swap
vim软件运行期间产生的数据放在内存中,关掉软件会把内存中的数据清掉
交换文件存在的目的是,记录你的修改,一旦你正常退出,交换文件没有任何意义,直接被删除。
异常退出时,交换文件不会删除,为了提醒你有未保存的修改,想怎么做看你自己
使用vim编辑时,将终端关掉,造成未保存的样子。
再次打开报有一个交换文件,让你无法编辑文件
提示的是你想如何对待.swap交换文件
原理:
1. 打开文件后,os自动创建一个.swap文件的隐藏临时文件,里面存放这你修改的没有保存的内容。
2. 正常修改后退出,会删除
3. 只要交换文件没有删除,os就不会自动删除了,只能用户手动删除。
看十遍不如自己写一遍!巩固基础,纵横开拓!

浙公网安备 33010602011771号