常用命令汇总
按ESC键 跳到命令模式,然后:·
- :w 保存文件但不退出vi
- :w file 将修改另外保存到file中,不退出vi
- :w! 强制保存,不推出vi
- :wq 保存文件并退出vi
- :wq! 强制保存文件,并退出vi
- :q 不保存文件,退出vi
- :q! 不保存文件,强制退出vi
- :e! 放弃所有修改,从上次保存文件开始再编辑
1切换插入模式:
命令模式下
a (小写)光标之后进行插入
A (大写)光标所在行尾进行插入
i (小写)光标前开始进行插入
I (大写)光标所在行首进行插入
o (小写)光标所在行后新插入一空行进行插入
O (大写)光标所在行前新插入一空行进行插入
插入模式下按ESC键返回命令模式
2 切换到编辑模式
命令模式下按【:】进入编辑模式,键入命令回车后自动返回到命令模式或按ESC键返回到命令模式。
3 保存文件
编辑模式下
:w (小写)保存文件
?:wq (小写)保存并退出vim
:w 文件名1 将文件另存为文件名1
:ZZ (大写)保存文件并退出,相当于:wq
:wq! (小写)文件所有者强制保存只读文件,如果不是文件所有者进行此操作,不能成功
:q! 退出不保存文件
4 复制(yank)
命令模式下
yy或 Y 复制光标所在整行
y^ 复制到光标所在行行首,不包括光标位置字符
y$ 复制到光标所在行行尾,包括光标位置字符
yw 复制一个单词,光标必须在单词首部
yG 复制到文件尾
y1G 复制到文件首
nyy 复制光标所在行开始的n行
5 粘贴
命令模式下
p (小写)粘贴到光标后
P (大写)粘贴到光标前
6 删除
命令模式下
x (小写)删除光标前一个字符
X (大写)删除光标后一个字符
dd (小写)删除光标所在整行
dw (小写)删除光标所在处一个单词
dG 删除光标所在整行到文件尾
dgg 删除光标所在整行到文件首
D (大写)删除到行尾,包含光标处的字符
d$ 与D效果相同
d0 删除到行首,不包含光标处的字符
d^ 与d0效果相同
:n1,n2d 编辑模式下,删除n1-n2行
7撤销
命令模式下
u (小写)无限次保存前撤销(大概500多次)
ctrl+r redo
8 字符替换
命令模式下
r (小写)替换光标所在处一个字符
R (大写)开始替换,直到按ESC键退出替换,相当于按下键盘上到insert键
cc (小写)取代光标所在整行
S (大写)与ss(小写)效果相同
C (大写)取代到行尾,包括光标处字符
c0 (小写,数字0)取代到行首,不包括光标处字符
c^ (小写)与c0(小写,数字0)效果相同
9 字符串查找和替换
命令模式下
/string 从光标处开始向下开始查找字符串string
/查找模式下按n(小写)查找下一个,按N(大写)查找上一个
?string 从光标处开始向上开始查找字符从string
?查找模式下按n(小写)查找上一个,按N(大写)查找下一个
* 向下完整匹配光标下的单词
# 向上完整匹配光标下的单词
g* 向下部分匹配光标下的单词
g# 向上部分匹配光标下到单词
编辑模式下
:set ic 查找时,忽略大小写
:set noic 取消查找时忽略大小写
:f string (小写f与string有空格)搜索一行中匹配到的string
:%s/old/new/g 全文将old替换为new,不提示
:%s/old/new/c 全文将old替换为new,提示是否替换
:n1,n2s/old/new/g n1-n2行中,将old替换为new,不提示
:n1,n2s/old/new/c n1-n2行中,将old替换为new,提示是否替换
在替换文本old或new中有/字符时,需要用\进行转义
10 显示行号
编辑模式下
:set nu(mber) 显示行号
:set nonu 取消显示行号
:set nu! 取消显示行号
11 简单排版
编辑模式下
:ce(nter) 居中显示光标所在行
:ri(ght) 靠右显示光标所在行
:le(ft) 靠左显示光标所在行
命令模式下
J 将光标所在下一行合并到光标所在行
>> 光标所在行增加缩进(一个tab)
<< 光标所在行减少缩进(一个tab)
n>> 光标所在行开始的n行增加缩进
n<< 光标所在行开始的n行减少缩进
12 书签
命令模式下
mx 设定书签,x是任意一个字母,通常小写(a-z),x为小写字母时,局限在一个文件之间切换;大写字母时,可在文件之间切换.
`x (`位于数字键1旁边)跳转到书签x
编辑模式下
:marks 查看标签
13 光标移动方式
命令模式下
H (大写,Head)移动到屏幕顶第一个非空白字符
M (大写,Mid)移动到屏幕中间第一个非空白字符
L (大写,Last)移动到屏幕底部第一个非空白字符
( (左小括号)移动到上一个句子首
) (右小括号)移动到下一个句子首
{ (左大括号)移动到上一个段落首
} (右大括号)移动到下一个段落首
% 光标跳转到匹配到括号处,支持{}()
[[ 光标跳转到代码块开头即{处,要求{独占一行
gD 光标跳转到局部变量定义处
'' (两个单引号)光标跳转到上次停靠处
h (小写)光标左移一个字符,相当于左方向键
l (小写)光标右移一个字符,相当于右方向键
k (小写)光标垂直上移一行,相当于上方向键
j (小写)光标垂直下移一行,相当于下方向键
ctrl+f (forword)向下整页翻页
ctrl+b (backward)向上整页翻页
ctrl+u (up)向上翻半页
ctrl+d (down)向下翻半页
zz (小写)让光标所在行居于屏幕中央
zt (小写)让光标所在行居于屏幕最顶部
zb (小写)让光标所在行居于屏幕底部
编辑模式下
:n 指定移动到第n行
14 数字前缀与重复
命令模式下
将数字加在命令前,标示该命令处理几次,如5dd标示执行5次dd(删除光标所在整行)操作。
. (英文句号)为命令重复命令,按下一次执行一次上一次执行过的命令。
15 浏览目录
编辑模式下
:e 目录 列出指定目录下的文件和目录
16 vim技巧
技巧1 导入文件或shell命令执行结果
编辑模式下
:r 文件名1 将文件1内容引入到本文件中
:!shell命令 在vim中执行shell命令,执行完后按回车会到vim界面
:r !shell命令 (r与!之间有空格)将shell命令执行的结果导入到本文件中
技巧2 自定义快捷键操作
编辑模式下
:map ^x 命令 (map与^之间、x与命令之间有空格,此处到^并非键盘上的^,而是按下ctrl+v出现到快捷键,表示ctrl键,后面到x为任意字母)按下ctrl+x后会执行对应到命令
例:
:map ^p I#<ESC> 当按下ctrl+p快捷组合键时,在光标所在行行首添加一个#号,并回到命令模式
技巧3 连续行注释
编辑模式下
:n1,n2/^/#/g (#号为注释符号,在shell中注释符号为#,C++中为//)
:n1,n2/^/\/\//g C++源文件多行连续注释
技巧4 替换
:ab string1 string2 在vim中输入string1按空格或回车后,string1会自动替换为string2
:unab string1 取消string1的替换
vim配置文件
~/.vimrc
可将编辑模式下的命令写在里面,每个命令单独一行,这样每次启动时,会自动执行里面的命令
详解:
vim的三种模式
编辑模式(命令模式)——键盘操作通常解析为编辑命令;
输入模式——键盘输入模式;
末行模式——Vim内置的命令接口,执行Vim内置命令
vim配置文件: /etc/vimrc
模式转换:
输入模式——>编辑模式:
按“ESC”键,转入编辑模式
输入模式——> 末行模式:
输入“:”,转入末行模式
末行模式——>编辑模式:
按两次“ESC”键 ,转入输入模式
编辑模式——> 输入模式:
i:在当前的光标所在的字符的前面,转入输入模式
I:在当前的光标所在的行首,转入输入模式
a:在当前的光标所在的字符的后面,转入输入模式
A:在当前光标所在的行尾,转入输入模式
o:在当前的光标所在的行的下面,新建一行,转入输入模式
O:在当前的光标所在的字符的上面,新建一行,转入输入模式
退出模式:
:q 退出
:wq 保存退出
:q! 不保存退出
编辑模式ZZ 保存退出
末行模式
在编辑模式下,输入: 即可
:10d 删除第10行
:10,20d 删除第10到20行
:! ls /etc 与命令相结合
Vim打开文件
# vim /path/to/somefile 若文件存在,则打开 ;若不存在,则创建并打开
# vim +n FILE 打开FILE文件且光标选择FILE文件的第n行
# vim + FILE 打开FILE文件且光标选择FILE文件的最后一行
# vim + /PATTERN FILE 打开FILE文件,定位至第一次被PATTERN匹配到的行的行首
1、多个文件同时打开
# vim /etc/passwd /etc/rc.d/rc.sysinit /etc/issue
:next 跳转到下一个文本
:prev 跳转到前一个文本
:first 跳转到第一个文本
:last 跳转到最后一个文本
:qalll 退出所有文本,不保存
:wall 保存所有文本并退出
2、分割窗口打开多个文件
# vim -o /etc/passwd /etc/issue
:o 水平分割窗口
:O 垂直分割窗口
Ctrl+w 切换窗口 ;左右箭头,上下箭头 进行光标转移
Vim移动光标
1、逐字符移动光标
h键 向前移动光标;l键 向后移动光标 ;j键 向下移动光标 ;k键 向上移动光标
2、逐单词移动光标
w键 移动光标至下一个单词的词首;e键 移动光标至下一个单词的词尾 ;b键 移动光标至前一个单词的词首
Nw | Ne |Nb 代表了向前,向后移动了n个单词
3、光标行首,行尾跳转
0(数字0)光标移动到行首 ; ^ 光标移动到行中的第一个非空白字符 ; $ 光标移动到行的行尾
4、光标逐行跳转
G 光标跳转至最后一行 ; NG 光标跳转到第N行 ;在末行模式下,直接给出行号即可 如 :10 。
5、光标逐句跳转
) 光标跳转至下一句 ;
( 光标跳转至上一句 ;
Num 与句跳转快捷键一同使用,向指定方向跳转句的个数 ,如10( ,代表向前跳转10句
6、光标逐段跳转
} 光标跳转至下一段 ;
{ 光标跳转至上一段 ;
Num 与段跳转快捷键一同使用,向指定方向跳转段的个数 ,如10{ ,代表向前跳转10段
Vim编辑操作
1、删除单个字符命令x
x 删除光标所在处的单个字符 ;
Nx 删除光标所在处及向后的共N个字符
2、删除行命令d
d命令与跳转命令结合使用;如d0 ,d$ , d{ , d( ,dw , dh ;
dd删除光标所在行
3、末行模式下的范围定界
:n,md 删除第n行到m行 ;
:. 表示当前行 ;
:$ 表示最后一行 如 :.,$-2d 代表删除当前行到倒数第二行的内容
:/prt1/,/prt2/ 被第一次prt1匹配的行至被第二次prt2匹配的行就结束
:+N 向下的N行
:% 表示全文
4、替换命令r
r 替换光标所在处的字符
5、改变命令c ,与d命令相似
c 表示删除内容并进入输入模式进行内容替换
c 与跳转命令结合使用,如 c0 ,c$ , c{ , c} , cw , ch
cc 删除光标所在行,并进入输入模式
Ncc 删除光标之后的N行,进入输入模式
6、复制命令y
y命令与跳转命令结合使用;如y0 ,y$ , y{ , y( , yw , yh ;
yy 复制当前行
Nyy 复制光标之后的N行
7、粘贴命令p
p 如果删除的或复制的内容为整行内容,则粘贴纸光标所在行的下方 ,如果删除或复制的内容为为非整行内容,则粘贴至光标所在行的后面
P 如果删除的或复制的内容为整行内容,则粘贴纸光标所在行的上方 ,如果删除或复制的内容为为非整行内容,则粘贴至光标所在行的前面
8、撤销命令u
u 撤销之前的命令操作
#u 撤销#次操作
Ctrl +r 撤销掉错误的撤销操作
Vim翻屏操作及查找替换
Ctrl + f 向文件尾部翻一屏 ; Ctrl + b 向文件首部翻一屏
Ctrl + d 向下翻半屏 ; Ctrl + u 向上翻半屏
Enter 向后翻一行 ; k 向上翻一行
/PATTERN 向下查找匹配PATTERN的字符
?PATTERN 向上查找匹配PATTERN的字符
查找替换:
在末行模式下使用s命令
格式为 :ADD1,ADD2 s@PATTERN(正则表达式)@string@gi ,其中g 代表golal ,i表示不区分大小写
例:1,+9s@[[:space:]]\{1,\}#@@g 从第一行到第10行中,查找以至少一个空白字符,且紧跟# ,替换为空
例:1,28s@^[^#].*@#&@g 从第一行至第28行中,替换以非# 开头的行,前面加#
例:1,28s@\(l\(..e\)\)\(.*\1\)@L\2\3@g 替换前后相同的l为L
将当前文件中的部分内容另存为另外一个文件,w
末行模式下 :ADDR1,ADDR2w /PATH/to/somwhere
将另外一个文件的内容填充在当前文件中
末行模式下 :r /PATH/To/Somewhere
根shell 交互
末行模式下 :!COMMAND
Vim窗口属性定义
1、显示或取消行号
:set nu 显示行号
:set nonu 取消行号显示
2、设定vim编辑器显示忽略或区分字符大小写
:set ic 忽略大小写
:set noic 不忽略大小写
3、设定自动缩进
:set ai 或 :set autoindent 设置自动缩进
:set noai 取消自动缩进
4、高亮显示搜索结果
:set hlseartch 高亮显示
:set nohlsearch 取消高亮显示
5、语法高亮
:syntax on 语法高亮显示
:syntax off 关闭语法高亮显示
6、显示与之匹配的括号
:set sm 显示与之匹配的括号
:set nosm 取消显示与之匹配的括号
