Loading

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 保存退出
View Code

命令模式移动光标

0:行首
$:行尾
   k   
h     l
   j    
分队对应上下左右
View Code

命令模式删除、复制、撤销、回退

补充:
末行: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就不会自动删除了,只能用户手动删除。

 

posted @ 2021-06-14 10:29  浅忆尘  阅读(63)  评论(0)    收藏  举报