vim的工作模式
vi:Visual Editor的缩写,是一种命令行界面的文本编辑器。
vim:Vi IMproved(增强版vi)
1、用不同颜色显示文字内容(vi的是黑白的)
2、进行诸如shell脚本,c等程序编辑功能
3、可以视为一种程序编辑器。
vim安装命令:
yum install -y vim-enhanced
vim的3种工作模式(重点)
①一般模式(也叫指令模式):光标移动、删除、复制粘贴、查找替换。
②编辑模式:编辑文本,进行文本的插入或者替换等。
③命令行模式:保存文件,离开vi,读入文件,显示行号等。
操作:
运行vim
vim filename
如果有该文件,则打开文件;如果没有,则新建文件,因此,该命令无论什么时候都不会报错。
回车进入vim工作界面,此时是一般模式:
如果要输入内容,要从一般模式切换成编辑模式(输入i,I,a,A,r,R任意一个):
①插入模式(insert):i, I
②插入模式(append):a , A
③插入模式(open): o , O
④替换模式(replace):r, R
注意:按【Esc】键退出编辑模式,回到一般模式中。
输入完成后,要保存,在编辑模式不能保存,要用命令行模式。编辑模式不能直接切换成命令行模式,要先切成一般模式(按Esc),再切命令行模式(按:):
vim常见命令
一般模式下的快捷键
移动光标:
h, j, k, l, H, M, L,G, 1G, nG, n<space>, n[Enter], 0或者【Home】, $或者【End】
删除、复制与粘贴:
x相当于【Del】,X,nx,dd,ndd,d1G,dG,d$,d0,yy,nyy,y1G,yG,y0,y$,
p
为将已复制的数据在光标下一行粘贴(小写p),
P
为将已复制的数据在光标上一行粘贴(大写P)
u
:复原前一个操作
【Ctrl】+r
:重做上一个操作
.
:重复前一个操作
查找与替换:
/word ?word n N
:n1,n2s/word1/word2/g
:1,$s/word1/word2/g
: 1,$s/word1/word2/gc
n+方向键(n为一个数字)
:移动多个字符
例:
光标向左移动8个字符:8h 或 8←
光标向右移动20个字符:20l 或 20→ 或20空格
vim的其他事项——文件救援
在使用vim 编辑时, vim 会在被编辑的文件的目录下,再建立一个名为 .filename.swp的文件(临时的交换文件,用于备份缓冲区中的内容)。
如果只读取文件,没有对文件进行修改,是不会建立.filename.swp文件的。
如果你的系统因为某些原因断线了, 导致你编辑的文件还没有储存,就可以通过.filename.swp恢复原文件
操作:
新建文件:
回车,按i,输入文本内容:
不保存,之间关掉终端,然后再次打开终端,查看文件,看到产生了.swp文件:
再次打开aa.txt:
如果要恢复,按R,回车,就回到编辑页面了
这次按Esc,输入:wq保存:
然后再进一次:
还是会看到以下界面;
因为.swp还没有删除,要手动删除之后,才不会有这个提示:
然后再 vim aa.txt就是直接正常打开了
vim的其他事项——改变颜色
用vi /etc/profile
打开文件:
可以看到字体是纯黑的
用vim /etc/profile
打开:
可以看到代码是有颜色的,可读性较好
(所以推荐编程序时使用vim)
vim的其他事项——多窗口编辑
操作示例:
这里用O,垂直分割:
要切换的话,先按Ctrl+w,松手,然后按←或→,每次切换都要先按一次Ctrl+w
如果现在只想保留当前的窗口,其他的都关掉,按Esc,输入:only
,回车;
此时想再打开3.java文件,按Esc,输入:sp 3.java
:
此时上面是3.java,下面是2.java
如果想退出2.java,保留3.java,先Ctrl+w,松手,按↓,切到2.java的窗口,然后按Esc,输入:q
,就只剩下3.java:
vim的其他事项——多文件编辑
操作示例:
但是切换不是循环结构,再输入:n
不会回到1.java,要回1.java只能通过:N
如果要查看现在vim都打开了哪些文件,用:files
:
后面的行数是说明之前打开文件时光标最后停在了哪一行
vim的其他事项——块选择
操作示例:
按下v:
此时按上下左右的箭头就可以进行字符选择,这里选择到三个单词,然后按y就可以复制:
到最后一行,按p,就可以进行粘贴:
按V,按上下箭头可选择行:
按y,复制:
下面没有行号了。就按i进入编辑模式,敲几个回车,按Esc回到一般模式,按p粘贴:
区块选择:
按Ctrl+v,按箭头选择(是长方形的):
按y复制,按p粘贴
删除也一样,选中,然后按d删除
综合练习
1.请在 /tmp 这个目录下建立一个名为 vimtest 的目录;
mkdir /tmp/vimtest
2.进入 vimtest 这个目录当中;
cd /tmp/vimtest
3.将 /etc/man.config 复制到本目录下;
cp /etc/man.config .
4.使用 vim 打开本目录下的 man.config 这个文件;
vim man.config
5.在 vim 中设定一下行号;
:set nu (然后你会在画面中看到左侧出现数字即为行号。)
6.移动到第 58 行,向右移动 40 个字符,请问你看到的双引号内是什么目录?
先按下『58G』再按下『40→』会看到『/dir/bin/foo』这个字样在双引号内;
7.移动到第一行,并且向下搜寻一下『 bzip2 』这个字符串,请问他在第几行?
先执行『1G』或『gg』后,直接输入『/bzip2』,则会去到第 118 行才对!
8.接着下来,我要将 50 到 100 行之间的『小写 man 字符串』改为『大写 MAN 字符串』,并且一个一个挑选是否需要修改,如何下达指令?如果在挑选过程中一直按『y』,结果会在最后一行出现改变了几个 man 呢?
直接下达『 :50,100s/man/MAN/gc 』即可!若一直按『y』最终会出现『在 23 行内置换 25个字符串』的说明。
9.修改完后,突然反悔了,要全部复原,有哪些方法?
(1)简单的方法可以一直按『 u 』回复到原始状态,
(2)使用丌储存离开『 :q! 』之后,再重新读取一次该文件;
10.我要复制 65 到73 这九行的内容(含有MANPATH_MAP),并且贴到最后一行之后;
『65G』 然后再『 9yy 』之后最后一行会出现『复制九行』之类的说明字样。按下『 G 』到最后一行,再给他『 p 』贴上九行!
11.21 到 42 行之间的开头为 # 符号的批注数据我不要了,要如何删除?
因为 21~42 22 行,因此『 21G 』→『 22dd 』就能删除22 行,此时你会収现游标所在 21 行的地方变成MANPATH 开央啰, 批注的 # 符号那几行都被删除了。
12.将这个文件另存成一个 man.test.config 的文件名;
『 :w man.test.config 』,你会发现最后一行出现 "man.test.config" [New].. 的字样。
13.去到第 27 行,并且删除 15 个字符,结果出现的第一个单词是什么?
『27G』 之后,再给他『15x 』即可删除 15 个字符,出现『 you 』的字样;
14.在第一行新增一行,该行内容输入『I am a student…』;
先『 1G 』去到第一行,然后按下大写的『 O 』便新增一行且在插入模式;开始输入『I am a student...』后,按下[Esc]回到一般模式等待后续工作;
15.储存后离开vim。
:wq