序
查看安装路径和安装的软件包
[root@VM_0_15_centos ~]# which vim/usr/bin/vim[root@VM_0_15_centos ~]# rpm -qf `which vim`vim-enhanced-7.4.160-2.el7.x86_64[root@VM_0_15_centos ~]# rpm -qf `which vi`vim-minimal-7.4.160-2.el7.x86_64
一vim编辑器模式
command mode(命令模式) --> edit mode(编辑模式)command mode(命令模式) --> visual edit mode(视图编辑模式)command mode(命令模式) --> extended command mode(扩展命令模式/末行模式)
二vim编辑器模式之间切换
模式之间切换需要先到 命令模式,按ESC键
进入edit mode(编辑模式)
i,在当前字符之前插入 a,在当前字符之后插入 o,在下一行插入 I,行首插入 A,行尾插入 O,上一行插入
进入visual edit mode(视图编辑模式)
v 进入可视模式 ctrl+v 进入可视块模式 V 进入可视行模式
进入exiended command mode(扩展命令模式)
:
三command mode(命令模式)
光标定位
hjkl 左下上右 0和home键 切换到行首 $和end键 切换到行尾 gg 定位到文档的首行 G 定位到文档的末行 ngg / nG 自定义到某行
查找关键字
/string 查找关键字 n 向下查找 N 向上查找 :noh 退出查找
文本编辑
复制 yy 复制光标所在行 5yy 复制5行 剪切/删除 dd 删除光标所在行 6dd 删除6行 粘贴 p 粘贴 恢复 u 将你的操作逐步撤销 ctrl+r 将你的逐步撤销再逐步恢复
其他
x 删除光标所在字符 r 替换光标所在字符 D 从光标删除到行尾
四visual edit mode(视图编辑模式)
通过一个实例会比较容易理解
多行注释实例
1 光标先放在要注释的第一行的行首 2 ctrl+v进入可视块模式 3 向下移动光标,将注释的行都选中 4 按大写的I 5 插入你需要的内容,比如# 6 按esc就会全部添加注释了
删除多行注释
选中内容之后,按d,就会删除了
上述方法适用于所有批量操作场景
五extended command mode(扩展命令模式/末行模式)
w 保存q 内容不改变时,退出wq 保存退出,常用q! 更改了内容之后,想回到上次保存时的状态e! 恢复到上一次保存时的状态
文本替换
场景:/etc/passwd文件中,替换1-3行中每行出现的第一个bin进行替换为xue:1,3 s/bin/xue1-3行全部的bin替换为xue :1,3 s/bin/xue/g替换所有指定行的内容:5 s/bin/xue/g全文范围,将xue改为bin,搜索时候,不区分大小写:% s/xue/bin/gi
六edit mode(编辑模式)
略
扩展1 调用外部文件或者命令
调用外部命令
场景:写脚本时候想要写入网卡mac地址,
1命令模式下输入 :!ifconfig2复制ether 52:54:00:89:a0:9d3编辑模式下粘贴
调用外部文件
1命令模式下输入 :r /etc/passwd2会自动将passwd文件写入到当前文件
扩展2 vim异常退出
touch.txt文件异常退出,再次进入该文件会出现修复界面,该如何修复呢
1直接在修复界面输入命令
只读方式打开 O直接编辑 E恢复 R删除交换文件 D退出 Q中止 A
2在命令行通过命令恢复
q退出该界面用命令修复vim -r touch.txt
补充
.touch.txt.swp文件保存着你上次意外退出还没有保存的文件
上面两种方法都需要将.touch.txt.swp删除,否则会一直提示让你修复文件
扩展3 设置环境
临时设置
:set nu 设置行号:set ic 不区分大小写:set list 显示控制字符:set nonu 取消设置行号
永久设置环境
vim /etc/vimrc 设置后影响系统所有用户vim ~/.vimrc 用户家目录设置后,影响某一用户
在文件下添加内容 set nu 保存会生效
扩展4 打开两个文件
左右方式打开两个文件
vim -O /etc/passwd /etc/hosts
在两个文件中切换
ctrl+ww
扩展5 比较两个文件
有两个命令来对比两个文件,但vimdiff命令会列出两个文件来对比,更加直观
[root@VM_0_15_centos ~]# cp /etc/passwd /etc/mima[root@VM_0_15_centos ~]# echo hhhhhhh >> /etc/mima [root@VM_0_15_centos ~]# diff /etc/passwd /etc/mima 28a29> hhhhhhh[root@VM_0_15_centos ~]# vimdiff /etc/passwd /etc/mima 2 files to edit
:qa 退出两个文件