编辑模式--->输入模式
i : insert 在光标所在处输入;
a:append 在光标所在处后面输入;
o:在当前光标所在行的下方打开一个新行;
I:在当前光标所在行的行首输入;
A:在当前光标所在行的行尾输入;
O:在当前光标所在行的上面打开一个新行
移动光标(编辑模式)
1.移动光标
h 左
l 右
j 下
k 上
#h :移动#个字符
单词间跳转
w: 下一个单词的词首
e:当前或下一个单词的词尾
b:当前或前一个单词的词首
2、行内跳转
0:绝对行首
$ :绝对行尾
^ 行首的第一个非空白字符
3.行间跳转
gg 第一行
G 最后一行
#G : 跳转至#行
4.删除单个字符
x 逐个字符删除(删除光标所在处及向后的单个字符)
nx 指定删除n个字符 (删除光标所在处及向后的共n个字符)
nX : 删除光标所在处及向前的共n个字符
xp:交换光标所在处的字符及其后面字符的位置(前后交换)
5.删除行命令
dd 单行删除(剪切) 删除当前光标所在行
ndd n行删除(剪切) 删除包括当前光标所在行在内的n行
d$
d^
d0
末行模式 n,md 指定删除(剪切)行位置
PS 可按p键黏贴
6.复制黏贴 (y,yank)
yy 单行剪切
nyy n行剪切
PS 可按p键黏贴
7.替换命令
r 单个字符替换
R 多个字符替换
8.撤销命令
u 撤销前一次的编辑操作操作
连续u命令可能撤销此前的n次编辑操作(最多50次操作)
nu 撤销最近n次编辑操作
撤销刚才撤销的操作(返回上次一撤销的操作):ctrl+r
. :重复前一个编辑操作
9.可视化模式
什么是可视化:就是选中一块区域,然后在上面进行一些操作,记住与普通的操作不同的是,可视化操作是对整块选中的区域进行操作的,有些时候效率会更高。
v 按字符选取 (使用上下左右键来使用光标选定)
V 按矩形选取
PS y 复制
PS p 黏贴
PS u 字母全部变为小写
PS U 字母全部变为大写
PS > 向右缩进
PS < 向左缩进
末行模式:内建的命令行接口
地址定界
:start_pos,end_pos # :具体第#行,例如2表示第2行; #,# :从左侧#表示行起始,到右侧#表示行结尾; #,+# :从左侧#表示的行起始,加上右侧#表示的行数; . :当前行 $:最后一行 .,$-1 % :全文,相当于1,$ /pat1/,/pat2/ :从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束
后跟一个编辑命令
d y w /PATH/FROM/SOMEFILE :将范围内的行另存至指定文件中 10,50w /tmp/test/new r /PATH/FROM/SOMEFILE :在指定位置(即当前光标位置)插入指定文件中的所有内容 100r /etc/issue :在指定位置即从100行处插入/etc/issue文件所有内容
10.查找
末行模式下:
/PATTERN :向后搜索字符串PATTERN
e.g /\<r..t\>
?PATTERN :向前搜索字符串PATTERN
- n:向下逐个显示匹配到的信息
- N:向上逐个显示匹配到的信息
11.查找并替换
末行模式:
n,m s/old/new/gi 或s@@@ 或s%%%
ps: i表示大小写不敏感查找,I表示大小写敏感; PS: n:起始行 m:终止行 old:想要选择匹配到的信息 new:想要改变的信息 PS: 从第二行到第二十行中的a全部替换为b:2,20s/a/b/g PS: .:表示当前行 $:表示最后一行 %:表示全文
#,$ @/old/new/g :从当前#行到最后一行替换
1,$s/r\(..\)t/R\1T/g
%s/l....x/&er/
&: 直接引用前面所有匹配内容
注:
要查找的内容:可使用模式
替换为的内容:不可使用模式,但可以使用\1,\2,...等后向引用符号,还可以使用"&"引用前面查找时查找到的整个内容
12.使用vim编辑多个文件
vim file1 file2 file3...
PS:先打开file1,若想编辑file2,可在末行模式下输入next
若文件有很多个,则可以在末行模式下输入last(最后一个文本) first(第一个文件)等对应的英文
若文件有很多个,则可以在末行模式下输入
- :next 切换至下一个文件
- :prev 切换至前一个文件
- :last 切换至最后一个文件
- :first 切换至第一个文件
- 退出 :qa 全部退出
13 .窗口分割模式
vim -O file1 file2 垂直分割显示
vim -o file1 file2 水平分割显示
ctrl+w+上下键,来回切换窗口
单文件窗口分割:
ctrl+w+s 水平拆分窗口 ctrl+w+v 垂直拆分窗口 在窗口间切换光标 ctrl+w w 切换窗口 ctrl+w q 退出当前窗口
:qa 关闭所有窗口
vim保存之前不会对文件做实际的修改,只是加载到缓冲区中,对文件的编辑其实是对缓冲区的编辑,直到:w时才会存入物理文件
14.跟shell交换
末行模式下:
!COMMAND (要执行的shell)
15.高级会话
末行模式下:
(1)显示或取消行号:显示 set nu 取消 set nonu
(2)设定自动缩进: 设定 set ai 取消 set noai
(3)查找到的文本信息高亮:设定 set hlsearch 取消 set nohlsearch
语法高亮:设定 syntax on 取消 syntax off
(4)括号匹配
匹配:set sm (set showmatch)
取消: set nosm
(5)忽略字符的大小写
启用:set ic
不忽略:set noic
16.文件加密
末行模式下:
设定 X
取消 X 一直回车
17.配置文件
/etc/vimrc 全局文件
~/.vimrc 在自己家目录下仅对该用户设置
练习
替换/tmp/functions文件中的/etc/sysconfig/init为/var/log
:%s@/etc/sysconfig/init@/var/log@g
删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号
:%s/^#\([[:space:]]\)\+/\1/g
每行开头为空白字符的行的行首添加一个#号
:%s/^[[:space:]]\+/#&/
如何设置tab缩进为4个字符?
# 永久设置(设置后重新打开文件编辑即可生效) [root@wybaron_host1015 ~]# echo -e "set ts=4\nset expandtab" >> /etc/vimrc
将文本文件中的TAB替换为空格
# 命令行模式下
:set ts=4
:set expandtab
:%retab!
# 加!是用于处理所有的TAB,若不加!,则只处理行首的TAB
将文本文件中的空格替换为TAB
# 命令行模式下
:set ts=4
:set noexpandtab
:%retab!
# 加!是用于处理所有的TAB,若不加!,则只处理行首的TAB
更详细请参考:http://note.youdao.com/noteshare?id=04b6d3beacfd1f5c0aa14485c32cf4a7&sub=11F0136F9D0548C38A0DD116EC80D654
配置自己vim请参考: https://blog.csdn.net/zisefeizhu/article/details/89407487
文件颜色及类型
文件不同颜色所代表的不同含义:
白色: 普通颜色
红色: 压缩文件
黄色: 设备文件(/dev目录下)
青蓝色:链接文件
青绿色:可执行文件
青黄色:管道文件
粉红色:图片文件或socket(用s表示)
文件类型:
- :普通文件
l(小写L):链接文件
b :块文件【块设备文件】
c :字符设备文件
p :管道文件