记录个人学习过程,如有错误或不足欢迎大家指正~~
vim是vi的升级版本
1.vim的基本模式
- 命令模式(一般模式)
- 输入模式(编辑模式)
- 末行模式(命令行模式)
命令模式进入输入模式方法:
- a 光标所在字符后输入
- A 光标所在行行尾输入
- i 光标所在字符前输入
- I 光标所在行行首输入
- o 光标所在行下一行输入
- O 光标所在行上一行输入
- s 删除光标所在字符后输入
- S 删除光标所在行后输入
Tips:最常使用的为ai o三个键
- HOME键 行首
- END键 行尾
命令模式
-
yy复制
-
p粘贴(当前行下一行)
-
P粘贴(当前行的上一行)
50yy向下复制50行 -
dd剪切 / 删除
100dd向下剪切100行 -
^ 行首
-
$ 行尾
-
d^ 删除当前字符到行首(不包含当前字符)
-
d$ 删除当前字符到行尾(包含当前字符)
-
y^复制当前字符到行首(不包含当前字符)
-
y$ 复制当前字符到行尾(包含当前字符)
-
35G 定位到35行
-
gg 首行
-
G 最后一行
-
dgg 从当前行删除到首行(包含当前行)
-
dG 删除当前行到尾行(不包含当前行)
-
u 撤销一部操作
-
ctrl+r 重做
-
w下一个单词的首字符
dw yw
J 合并行
末行模式
- shfit + :进入末行模式
- :w 保存
- :q 退出
- :wq 保存退出
- :w! 强制保存
- :q! 强制退出
- :wq! 强制保存退出
- :w /tmp/cc.txt 另存
- :1,3w /tmp/new.txt 存的是1–3行
- :e /root/aa.txt 打开一个文件
- :e! 重新打开当前文件
- :X 加密文件
显示行号
:set nu
:set nonu
显示空格或者制表符
:set list
:set nolist
文件中所有的制表符都设置为16个空格长度
:set tabstop=16
只更改设置之后的制表符长度
:set softtabstop=16
自动缩进
:set autoindent
:set noautoindent
搜索忽略大小写
:set ignorecase smartcase
Tips: 永久生效的方法还是得修改配置文件
操作:
vim /etc/vimrc
在文件末尾添加 set nu 等等(修改配置文件时尽量在整个文件的末尾,便于以后查错和修改)
查找
/关键字
n 下一个 N 上一个
?关键字
n 上一个 N 下一个
替换
通用格式为:s///
:s/ab/xx/
替换当前行第一个匹配字符串
:s/ab/xx/g
替换当前行所有匹配字符串
:%s/ab/xx/g
替换所有行中所有匹配字符串
:%s/ab/xx/gc
交互式替换所有行中所有匹配字符串
s 替换 g 全局 % 所有行 c交互式
:3,5s/ab/xx/gc
3到5行
2.vim其他模式
可视化模式
在命令模式下按v
左下角会出现
此时可以移动光标进行批量操作
选中操作内容 y 复制 d删除
可视化块模式
在命令模式下按ctrl+v
ctrl+v选中–>shift+i---->输入#----->ESC
3.多文件操作
vim aa.txt cc.txt tt.txt
:next
下一个文件:prev
上一个文件:last
最后一个文件:first
第一个文件
ctrl+^切换到上个文件
:wqa
ctrl+w+w 改变光标位置(文件之间切换)
横向排序
vim -O aa.txt cc.txt tt.txt
竖向排列
vim -o aa.txt cc.txt tt.txt
4.格式转换
由于Linux下的换行符和Windows下不同(Linux为 \n,Windows为 \r\n),所以需要转换一下格式才能在Windows下正常显示。这里我们安装一个unix2dos包:
yum install unix2dos
unix2dos anaconda-ks.cfg