[TOC]
vim 编辑器
什么是vim
vim是linux系统中一个强大的文本编辑器
vim功能比 vi 强大
- 编辑配置文件
- 写脚本
- 批量修改
- 查找内容
- 语法检测高亮显示
vim的三种工作模式
命令模式(普通模式)
最开始使用vim命令打开文件时,即进入命令模式
跳转光标
G:(shift+g)将光标快速跳转到文件的末尾
gg:将光标移动到文件的开头
ngg:n代表阿拉伯数字,将光标跳转到第n行
$(shift+4):将光标跳到行末
^(shift+6):将光标跳到行首
复制粘贴
yy:复制光标所在行的内容
nyy:(yny)n代表阿拉伯数字,复制光标所在行及后n行内容
p:将复制的内容,粘贴到光标所在行的下一行
p:将复制的内容,粘贴到光标所在行的上一行
删除剪切
dd:剪切,删除光标所在行的内容
ndd|dnd:剪切,删除以当前行的指定行数的内容
dG:删除光标所在行到文件末尾所有行的内容
D:将光标所在字符删除一直删到行末
x:剪切,删除光标所在字符
X:剪切,删除光标所在字符的前一个字符
撤销替换
r:替换光标所在字符
R:批量替换字符,替换光标所在字符及后面所有的字符,直到按ESC结束
u:撤销上一步操作
crtl+r:恢复撤销
保存退出
ZZ:(shift + zz) 保存并退出
编辑模式 (输入模式)
从命令模式切换到编辑模式
# 进入编辑模式的标识,左下角 -- INSERT --
a:在光标所在字符之后,进入编辑模式
A:在光标跳转到行末,并进入编辑模式
o:在光标所在行的下一行(另起一行)进入编辑模式
O:在光标所在行的上一行,进入编辑模式
i:在光标所在字符的之前进入编辑模式
I:将光标移到行首,并进入编辑模式
s:删除光标所在字符,进入编辑模式
S:删除光标所在行的一整行内容,并进入编辑模式
从编辑模式切换到回命令模式
ESC
末行模式 (底行模式)
文件的保存和退出
# 进入末行模式,只能从命令模式进入末行模式
## 方式一 输入 :
## 方式二 输入 /
:w # write 写入,保存
:q # quit 退出
:wq # 保存并退出
:w! # 强制保存
: q! # 强制退出
:wq! # 强制保存退出
:x # 保存退出
跳转行号
# 命令模式中,跳转行号 ngg
:n n代表阿拉伯数字,将光标跳转到指定的行
内容的查找和替换
## 内容查找
/string:查找想要查找的字符串,输入回车后高亮显示
按n:向下查找下一个字符串
按N:向上查找上一个字符串
## 内容替换
:/原内容/新内容/
:/root/zls #把root替换成zls (只这么写,不生效)
:s/root/sj/ #s:查找并替换
:s/root/sj/g #g:global 全局 (默认只替换一行内容)
:1,10s/root/sj/g #1,10 把1-10行匹配到的内容全部替换
:%s/root/sj/g # %代替所有行
:%s#原内容#新内容#g {一般用这个来分割}
把 /sbin/nologin 替换成 /bin/bash
: %s#/sbin/nologin#/bin/bash#
分隔符可以随便使用,建议就是,原内容和新内容,里面不包含你写的分隔符即可。
\#abc $abc
末行模式报错
## 文件内容修改后,不保存想退出 :q,必须加!退出
E37:No write since last change (add | to override)
## 针对root用户,只读文件无法修改,保存退出需要加! :wq!
E45:'readonly' option is set (add i to override)
## 无法打开这个文件
E212:Unable to open and write files
末行模式其他功能
# 显示行号
:set number # 简写 :set nu
# 自动缩进
:set autoindent # 简写 :set ai
# 不区分大小写
:set ignorecase # 简写 : set ic
# 查看文件中的结尾和制表符,等特殊符号
:set list
## 取消变量
:set no(ai|ic|nolist)
vim视图模式
视图模式,是属于命令模式之下的一种模式
- 块视图模式
ctrl+v:进入可视块视图模式
-- VISUAL BLOCK --
# 1.按光标删除选中所有字符 x
# 2.批量修改文件(添加注释)
1)按crtl+V 进入可视块图模式
2)移动光标
- 1.按下键
- 2.ngg
- 3.G
3)按shitf + i 进入编辑模式
4)输入"#"
5)按ESC退出编辑模式
- 行视图模式
shift+v进入行视图模式
vim扩展项
## 文件对比命令 :diff (不推荐)
0 ✓ 07:27:14 root@miaosen,10.0.0.100:~ # diff sujing.txt sujing1.txt
2,3d1
< asaf
< asdadas
## 文件对比命令:vimdiff(推荐)
## crtl+ww 切换文件
## 编辑文件指定的行
vim+n n:代表阿拉伯数字