vim编辑器
vim一直是linux采用的标准编辑器下面来简单的介绍一下怎么使用vim
vim刚进入默认是在命令模式下,下面来介绍几种从命令模式进入插入模式的方法(esc从插入模式退回命令模式):
i : 光标在当前位置进入插入模式
I :光标所在当前位置移动到行首进入插入模式
A :光标所在一行移动到行尾进入插入模式
a :光标后退一格进入插入模式
o :光标所在的行下面新加一行进入插入模式
O :光标所在的行上面新加一行进入插入模式
从命令模式进入扩展命令模式如上图所示(shift + :)进入扩展命令模式,下面来介绍下在此模式下退出的几种方法:
q :不保存退出
q! :不保存强制退出
wq :保存退出
wq! :保存强制退出
ZZ :在命令模式下存盘退出(慎用)
ZQ :在命令模式下不存盘退出
有些时候我们在在使用vim的时候需要执行其他命令,一般情况下我们还得从vim中退出来,但是下面的这几个命令就不需要了:
!COMMAND : 在扩展命令模式下直接就可以执行你想要执行的命令
r filename :读取文件的内容到当前文件夹
w filename :将当前文件内容另存为指定的文件中
r!COMMAND : 读取命令的内容到到当前文件的指定位置
下面我们来相对比较详细的来介绍一下vim的一些比较好用的组合键
字符间跳转:
#h : 光标处往左移动#个字符
#l :光标处往右移动#个字符
#j :光标所在之处的行往下移动几行
#k :光标所在之处的行往上移动几行
注:“#”是你想输入的数字。
单词间跳转:
w :下个单词词首
e :下个单词词尾
b :当前或前一个单词的词首
数字加上面的命令:
#w:光标移动到后#个单词的词首
#e:光标移动到后#个单词的词尾
#b:光标向前移动#个单词的词首
当前页跳转:
H:从光标之处跳转到当前页的页首
M:从光标之处跳转到当前页的中间
L:从光标之处跳转到当前页的页尾
行首行尾跳转:
^ : 跳转到光标所在本行的第一个非空白字符
0 : 跳转到光标所在本行的行首(包括空格)
$ : 跳转到光标所在本行的行尾
行间移动:
G :从光标之处跳转到最后一行的行首
gg(或:1G) :从光标之处跳转到第一行的行首
#G :跳转到第#行的行首
句间移动:
( : 从光标所在之处跳转到上一句句首
) : 从光标所在之处跳转到下一句句首
段间移动:
{ :跳转到上一段
} :跳转到下一段
翻屏操作:
ctrl + b : 向文件首部翻一屏
ctrl + f : 向文件尾部翻一屏
ctrl + u : 向文件首部翻半屏
ctrl + d : 想文件尾部翻半屏
字符编辑:
x : 删除光标所在之处的字符
#x : 删除从光标之处开始的往后几个字符
x : 把光标所在之处的字符与光标所在之处的后一个字符交换位置
~ : 转换大小写
J : 删除光标所在行的换行符(把光标所在之行及后面的一行合为一行)
替换命令:
r : 把光标所在之处的字符替换为你输入的字符
#r : 把包括光标所在之内往后的#个字符替换为你输入的字符
R : 开启全局替换模式
删除命令:
d$ : 从光标所在之处删除到行尾
d^ : 从光标所在之处删除到行首(不包括行首的空格)
d0 :删除到行首(包括行首的空格)
dw :删除光标处单词
#dw :把包括光标之内往后的#个单词删除
de :删除光标所在单词后的单词
db : 删除光标所在单词前的单词
dd :删除光标所在的整行
#dd : 把包括光标在内的后#行删除
dG :把包括光标所在行及后面的所有内容都删除
dgg :把包括光标所在行及前面的所有内容都删除
复制命令:
y$ : 从光标处复制到行尾
y0 : 从光标处复制到行首
y^ : 从光标处复制到非空行首
ye : 若光标在单词词首则复制则复制本单词,若不在单词词首只复制本单词后的字符
yb : 若光标在单词词首则复制则复制本单词,若不在单词词首只复制本单词前的字符
yw : 复制光标所处单词
yy : 复制光标所在的整行
#yy : 把包括光标所在行的后面#行复制
改变命令
c$ : 把光标所在之处及光标所在行后面的内容删除然后进行编辑
c^ : 把光标所在之处及光标所在行前面的内容删除然后进行编辑(不包括行首的空格)
c0 : 把光标所在之处及光标所在行前面的内容删除然后进行编辑(包括行首的空格)
ce : 若光标在词首则把整个光标所在单词删掉进行编辑,若光标所处位置不在单词词首则把包括光
标之处字符及本单词光标之后的字符删掉进行编辑
cb : 若光标在词首则把整个光标所在单词删掉进行编辑,若光标所处位置不在单词词首则把包括光
标之处字符及本单词光标之前的字符删掉进行编辑
cc : 把光标所在的行删除之后进行编辑
C : 把包括光标所在的字符及本行后面的内容删除
命令模式:
格式:
COMMAND :
y : 复制
d : 删除
gU : 变大写
gu : 变小写
例如:
0y$ 的解释如下:
0 : 先把光标跳转到行首,
y : 从这里开始进行拷贝,
$ : 拷贝到光标所处之行的行尾
ye : 拷贝到本单词最后一个字符
100iwang[Esc]:黏贴wang100次(在命令模式下输入数字100,然后按下“i”键,在输入“wang”,
紧接着按下“Esc”键,就会在光标之后复制wang100次)
地址定界:
格式:start_pos,end_pos
# : 具体到第#行,例如#是2就表示第2行;
#,# : 左侧#表示起始行,右侧表示结尾行
#,+# : 左侧表示起始行,加上右侧#行(2,+3 :表示从第2到第5行)
. : 表示当前行
注意地址定界也支持模式:
格式:/part1/,/part2/
从第一次被part1模式匹配到的行开始一直到第一次被part2匹配到的行结束
行号和模式可以混用,例如:
#,/part/
/part/,$
使用方式:后跟一个编辑命令:
d:删除
y:复制
w file:将指定范围内的行另存为到指定的文件里面
r file:将读取出来的范围行插入到文件内
扩展命令模式模式:查找
/PATTERN : 从当前光标所在处向文件尾部查找(例如:/^root :以root开头向下查找)
?PATTERN : 从光标所在处向文件首部查找;
n:与命令同方向查找;N:与命令反方向查找;
s:在扩展模式下完成查找替换操作:
格式:s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用\1,\2,......等后向引用;还可以使用 "& 引
用前面查找时找到的内容
修饰符:
i : 忽略大小写
g : 全局替换,默认情况下只替换第一次出现
gc : 全局替换,每次替换前会询问
查找替换中的分隔符 / 可替换为其他字符,例如:
s@/etc@/var@g : 用@作为分隔符
s#/boot#/#i : 用#作为分隔符
命令模式:
u : 撤销最近的更改
#u : 撤销之前多次更改
U : 撤销光标落在这行后的所有此行的更改
. : 重复前一个操作
n. : 重复抢一个操作n次