前言
- vi是Linux及任何Unix like机器上都支持的一款文字编辑器,类似Windows的记事本,但是vi因为功能不强大的原因,GUN计划推出了vim,也就是vi的进阶版,在最小化的Linux系统中,vim是默认没有安装的,用户需要自行安装,基本会vim的都会vi。用惯了vim你就发现vi很不好用。(最明显的区别是vim支持语法高亮显示)
4大模式
-
vim分为4个模式分别是命令模式,编辑模式,命令模式,可视化模式(此模式vi没有)
打开vim 首先进入的一般模式,如果你按i,a等指令就是进入编辑模式,直接输入:就是进入命令模式,按ctrl v就是进入可视化模式 -
一般模式的操作:
光标定位 hjkl 上下左右 (习惯键盘的上下左右键)
在windows shell中 0 和 home键是定位到行首,$ 和 end键定位到行末(习惯home跟end) 在mac shift+^ 跳到行首 shift +$ 跳到行末(亲测)
gg 跳到首行 G跳到末行 4gg 或者 4G跳到第4行(ngg 或者 nG就跳到n行)
/string(字符串) #意思就是全文查找,如果结果过多,可以通过N或n来进上下文查找, 例如: /server 取消高亮显示可以通过 :noh 取消
/^server # ^以什么开始
/ac$ # $ 以什么结尾
通过 vim + nginx.conf 光标是显示在最后一行的 vim nginx.conf光标随机显示
删除 dd(删除单行) n dd删除n行 例如:10dd(先按数字10 后按dd) 删除10行
复制 y 复制单个字符 yy复制单行 n yy 复制n行 例如:10yy 复制10行
粘贴 p
剪切 dd 用法跟复制用法差不多
x 删除光标所在位置的单个字符
D 从光标处删到行尾(这个指令还是蛮好用的)
u 撤销操作(用的非常多)
ctrl +r 还原撤销操作(用的非常多)
r 替换单个字符(光标所在的字符) -
编辑模式操作:
按i(从光标前输入),a(从光标后输入),o(插入下一行)
然后就是各种编辑的操作 -
可视模式又分v模式(可视模式),ctrl+v模式(可视快模式)
在一般模式按v进入v模式,v模式主要对行进行操作,用的不多,
在一般模式按ctrl+v进入可视快模式(对列进行操作),向上或者向下移动光标,选择自己需要处理的内容,删除的话按x即可删除,添加内容的按大写的I,进入对应的编辑模式,在插入你想要插入的内容,在按esc即可全部删除或者注释。 -
命令模式
在其他任何模式按esc,在按: 进入命令模式
:w 保存
:q 退出
:q! 强制退出(这个用的比较多)
:wq! 强制保存退出
:wq 保存退出(这个用的比较多)
:x 保存退出注:你无论在哪个模式下只要按ESC就会回到一般模式下,也就是你vim打开文件的那个模式
-
其他操作
! +命令 #调用系统命令 :!ip
r +绝对文件路径 #打开某某文件 :r /etc/hosts
vim -o passwd abc #以上下形势,打开两个文档 -o
vim -O dd1 d.txt #以左右方式打开两个文档 -O
[root@Rendering6 ~]# vimdiff passwd /etc/passwd #进行文件内容对比
:no paste 关闭智能缩进
[root@Rendering6 ~]# vim /opt/app/nginx/conf/nginx.conf /etc/passwd #多文档打开
:n #切换到下一个文档
:N #切换到上一个文档
:files #列出所有打开的文档
:sp 切换文档 ctrl +wJ 向下个窗口移动光标 ctrl+wk 向上个窗口移动光标 其他操作同上
在vim abc.txt编辑文件的过程中,可以通过ctrl z将程序暂时放到后台执行 -
文本替换
:2,5 s/sbin/root # 用法 [行数(起始行,结尾行/%)] s/源文件内容/替换文件内容 将文本2,5行中的sbin找出,并且将第一个sbin替换成root # 替换的时候,没有加g的话,默认是替换找到的首个字符
:2,5 s/sbin/root/g # g 全文 将文本2,5行中的sbin全部找出,并且将它全部替换成root(只针对字符)
:7 s/sbin/root/g # 将第7行的所有sbin替换成root(只针对字符) 7是指单独的第7行
:% s/nologin/720/g # 将全文的nologin替换成720 %是全部内容
:% s/bash/qwe/gi # 将全文bash替换成qwe,并且忽视大小写 i忽视大小写
:% s@a@b@g # 将文本所有的a替换成b在2~50行首添加//号注释
:2,50 s/^g
自定义vim使用环境
-
设置行号
:set nu #设置行号
:set nonu #取消行号 -
显示隐藏字符 #有个时候用处比较大的
:set invlist -
永久设置可以行号
vim /etc/vimrc #设置后会影响到系统所有的用户
~/.vimrc #在用户的家目录下,创建一个.vimrc。这样只影响到某一个用户,没有自己建一个在vimc里面添加相应的设置 既可以永久设置vim