Vim
在linux的世界中,绝大多数配置文件是以ASCII的纯文本形式存在,(什么是纯文本文件:其实文件记录的就是1或者0,而我们通过编码系统将这些0或者1转换成我们认识的文字就是了)
为何要学习vim?
1.所有的unix like系统都会内置vi文本编辑器,其他的文本编辑器不一定存在;
2.很多软件的编辑接口都会主动调用vim;
3.Vim具有程序编程能力,可以主动以字体颜色辨别语法的正确性,方便程序设计;
4.编程简单,编辑速度相当快速;
Vim分为三种模式:一般模式;命令模式;编辑模式;
在vim里面,【tab】健所得到的结果和空格是不一样的
在一般模式移动光标的方法:
1 . h 向左移动一个字符 j 向下.... k 向上... l 向右...(如果要进行多此移动的话,例如向下移动30行,可以使用30j)
2 . [ctrl]+f == [page down]向下移动一页
3 . [ctrl]+b == [page up] 向上移动一页
4 . [ctrl]+d 向下移动半页
5 . [ctrl]+u 向上移动半页
6. + 光标移动非空白行的下一行
7. - .................的上一行
8. n[space] 光标会向右移动这一行的n个字符
9. 0或者功能键【home】移动到这行字符的最前面
10. $或者[end]移动到这行字符最后面字符处
11. H 光标移动到这个屏幕的最上方那一行的第一个字符
12. M .................................的中央...................................
13. L ..................................的最下面..............................
14. G 移动到这个文件的最后一行
15. nG n为数字,移动到这个文件的第n行
16. gg 移动到这个文件第一行 ,相当于1G
17. N[enter] N为数字,光标向下移动N行
一般模式下的查找和替换:
1./word 向下寻找一个名为word的字符串
2.?word 向上寻找一个名为word的字符串
3.n 这个n是英文键,代表重复前一个查找的操作,例如,刚才查找的是word这个字符串,当按下n时,他向下继续查找一个名称为word的字符串
4.N 和n的功能相反,N是向上查找一个名为word的字符串
5.:n1,n2s/word1/word2/g n1,n2为数字,意思是在n1和n2行之间查找word1这个字符串,并用word2替换掉。
6.:n1,$s/word1/word2/g 从第n1行到最后一行查找并替换
7.n1,$s/word1/word2/gc 和上面的功能一样,就是在替换之前提示是否确认替换掉
一般模式的删除,复制与粘贴
1.x,X 在一行中,x为向后删除一个字符,X向前删除一个字符
2.nx n为数字,nx表示向后删除n个字符,nX 相前删除
3.dd 删除一整行
4.ndd n为数字,删除光标所在向下n行
5.d1G 删除光标所在到第一行的所有数据
6.dG 删除从光标所在到最后以行的所有数据
7.d$ 删除光标所在处到该行最后一个字符
8.d0 删除光标所在处到该行第一个字符
9.yy 复制光标所在的那一行
10.nyy n为数字,复制光标所在行向下n行的数据
11.y1G 复制光标所在到第一行的所有数据
12.yG 复制从光标所在到最后以行的所有数据
13.y0 复制光标所在处到该行第一个字符
14.y$ 复制光标所在处到该行最后一个字符
15.P,P p为将复制的数据在光标下一行粘贴,P为将复制的数据在光标的上一行粘贴
16.J 将光标所在行与下一行所结合
17.c 重复删除多个数据,例如向下删除10行(10c)
18.u 复原上一个操作
19.[ctrl]+r 重做上一个操作
20. . 小数点,重复上一个操作(重复删除,重复粘贴)
一般模式到编辑模式的可用按钮
i,I i为目前光标所在行处插入,I为目前所在行的第一个非空格处开始插入
A,a a为从目前光标所在的下一个字符处开始插入,A为从光标所在行的最后一个字符开始插入
O,o o为目前光标所在行的下一行开始插入,O为目前光标所在的上一行开始插入
R,r r只会替换光标所在的第一个字符一次,R会一直替换光标所在的文字,直到安退出键为至
一般模式切换到命令模式可用
说几个不错的
:w 【filename】 将这个编辑好的文件保存成为另一个文件
:r 【filename】 在编辑的数据中,读入另一个文件的数据,即将‘filename’这个文件内容加到光标所在行的后面
:n1,n2 w 【filename】 将此文件的n1到n2行保存到另一个文件中
Vim 的保存文件,恢复与打开的警告信息
目前主要的编辑软件都会有‘恢复’的功能,当系统因为某些原因导致死机的情况时,还可以通过某些特别的机制将之前未保存的数据救回来。
当我们使用vim编辑时,vim会在被编辑的文件目录下在建一个名为 .filename.swp 的文件,下来我们以 /tmp/passwd 为例,当系统断线时,编辑的文件还没保存,此时 .filename.swp 就起到了作用:
不正常关闭;
生成的暂存文件(由于不正常中断,导致暂存盘无法通过正常流程来结束,所以暂存文件就不会消失,而继续保留下来)
出现上面的问题有两类可以导致:
1.可能有其他人或程序同时在编辑这个文件。
解决方法:
由于linux时多人,多任务的环境,因此可能很多人同时在编辑同一个文件。
找到另外那个程序或人员,请他将该vim结束
还有你可以输入大写o,只读模式
2,在前一个vim的环境中,可能因为某些不明原因导致vim中断
如果你当前没有保存你编辑的东西,此时你可以选择R,
O 只读
E 还是用正常的方式打开你要编辑的那个文件,并不会载入暂存文件的内容。不过很容易出现两个用户互相改变对方文件等问题。
R 就是救回你之前编辑没有保存的文件,当时救回之后,退出,还要手动删除那个暂存文件。
D 如果你确定那个暂存文件无用,就按D直接删除
Q 不会进行任何操作回到命令提示符
A 忽略这个编辑行为i,和Q相识
Vim 块选择
v 字符选择,会将经过的地方反白选择
V 行选择,会将光标经过的行反白处理
[ctrl]+v 块选择,可以用长方形的方式选择数据
y 将选择的地方复制
d 删除
Vim 多文件编辑
假如,你想要将hosts 里面的ip复制到你的/etc/ww下,此时,解决的办法是:
vim filname1 filename2 用vim同时打开两个文件
:n 编辑下一个文件
:N 编辑上一个文件
:files 列出当前这个vim的打开所有文件
Vim 多窗口功能
当我有一个非常大的文件,我查阅到后面的数据时,想要对照前面的数据,师傅需要使用[ctrl]+f
Page up 来跑前跑后查阅?
用法:
用vim打开一个文件,在命令行输入 “:sp [filename]” 只有一个文件时,可以不加上文件名,但是如果打开了两个文件时,就必须加上文件名
:sp [filename] 打开一个新窗口
[ctrl]+w+向下键/j 将光标移动到下方的窗口
[ctrl]+w+向上键/k 将光标移动到上方的窗口
[ctrl]+k+q 结束当前窗口
水平拆分窗口 ctrl+w, s
垂直拆分窗口 ctrl+w, v / :sp
:qa 关掉所有窗口
分窗口显示多个文件:
#vim -o filename1 filename2 水平显示文件
#vim -O filename1 filename2 垂直显示多个文件
在vim中如何和shell交互
:! 命令 然后回车,看完之后在回车还是回到了vim中
显示忽略区分字符大小写
:set ic
:set noignorecase /:set noic
设定自动缩键
:set autoindent
:set ai
取消为:set noai
查找到的文本高亮显示或取消
:set hlsearch
:set nohlsearch(取消)
语法高亮
:syntax on
:syntax off(关闭)
Vim环境设置与记录: ~/.vimrc ~/.viminfo
~/.viminfo 如果我们以vim软件查找一个文件的某个字符串时,这个字符串会反白,这是因为我们会主动将你曾经做过的行为记录下来,保存在~/.viminfo 当中
~/.vimrc 整体的vim设置值一般放在/etc/vimrc,不过,不建议修改它,你可以修改~/.vimrc(默认不存在,你可以手动建立这个文件)。
DOS与linux的段行字符
DOS(windows) 使用的段行字符为“^M$” 我们称为CR和LF两个字符。
Linux,则仅有LF($)段行字符
将linux文件转换为DOS
##UNIX2dos -k filename
将DOS文件转换为linux
#dos2UNIX -k -n filename1 filename.linux