:w /tmp/bbb #另存为
0 行首
$ 行尾
ctrl+f 下翻页
ctrl+b 上翻页
行复制,命令行模式下
yy 复制光标所在的行
p 在光标所在行的下面插入复制的一行
P 在光标所在行的上面插入复制的一行
2yy 从光标开始复制二行 #数字多少,代表复制多少行
p 粘贴
段复制,命令行模式下
v 移动光标选择自己想复制的段,按下y复制某个段
p 在光标所在字符后面粘贴
P 在光标所在字符前面粘贴
删除单个字符,命令行模式下
x 删除光标所在的字符
X 删除光标前的字符
3x 删除三个字符
删除某个单词,命令行模式下
dw 删除光标后的单词
db 删除光标前的单词
daw 删除光标所在的单词 delete a word
. 重复之前的操作
删除某个段,命令行模式下
v 选中选择段,然后x删除
删除行,命令行模式下
dd 删除光标所在的行
3dd 删除光标所在开始的三行,往下数 #数字多少,代表删除几行
快速清空正在编辑的文件,命令行模式下
gg然后111111dd #数字>行数就能够清空
gg然后dG #删除当前行到最后一行
某行我们指定删除到某个字符,命令行模式下
dtu 从当前字符删除到u delete to u
d0 从当前字符到行首的字符全部删除
d$ 从当前字符到行尾的字符全部删除
删除后的字符自动复制
向下搜索,命令行模式下
/mask 向下搜索mask
n 继续向下
N 反向
向上搜索,命令行模式下
?mask 向上搜索mask
n 继续向上
N 反向
忽略大小写搜索
/Maskc
正则搜索,命令行模式下(不支持扩展正则)
/^L 以L开头的
/(mask) 不支持扩展正则
针对行的字符快速定位,命令行模式下
f1 光标快速定位到1
单个字符快速替换,命令行模式下
r4 光标所在的字符替换为4 replace
批量替换,命令行模式下
:%s/no/yes/g 所有的no替换为yes
:%s/no/yes 每一行的第一个no替换为yes
:2s/2/3/g 只替换第二行的
:2,4s/3/4/g 第二行到第四行的3替换4
替换前进行确认
:%s/no/yes/gc c表示替换前需要确认
正则替换(不支持扩展正则)
:%s/ListenAddress .*/ListenAddress 127.0.0.1/g
vim从命令行模式转换为编辑模式的方法
字符前插入
i
字符后插入
a
行首插入
I
行末插入
A
光标所在行的下面新起一行插入
o
光标所在行的上面新起一行插入
O
从编辑模式切换到命令行模式就是按esc
块编辑是指纵向批量编辑,命令行模式下
ctrl+v r 块替换
ctrl+v x 块删除
ctrl+v I 块操作从字符前插入
ctrl+v A 块操作从字符后插入
插入后一定要记得按两次esc键
:set all命令
查看默认的设置项目
显示行数
:set number #显示行数
:set nonumber #不显示行数
:set relativenumber #显示相对行数
自动缩进
:set autoindent #打开自动缩进
:set noautoindent #关闭自动缩进
粘贴模式,保留粘贴的文本格式
:set paste
取消搜索高亮功能
:set nohlsearch
示例文本vim /tmp/shijiange.c
#include <stdio.h>
main() {
printf("hello world!");
printf("hello world!");
}
自动缩进,命令行模式下
5== #底下5行自动缩进
v选中块,然后== #选中的块自动缩进
批量缩进取消缩进
>> 相当于按一个tab
<< 相当于删除一个tab
2>> 底下两行往左缩进
代码自动补全功能
ctrl+n 代码自动补全
打开多个文件
vim /tmp/shijiange1.txt
:tabnew /tmp/shijiange2.txt #打开新的文件,同时旧的文件也在编辑
gt #切换窗口
:qa! #所有编辑文件不保存退出
:wqa #所有编辑文件保存退出 all
对比
vimdiff /tmp/shijiange1.txt /tmp/shijiange2.txt
ctrl+w l 移动到右窗口
ctrl+w h 移动到左窗口
]c 移动到下一个不同的点
[c 移动到上一个不同的点
示例python文件vim /tmp/shijiange.py
print('1.1.1.1')
if 3 == 3:
print('shijiange')
运行正在编辑的python脚本
:!ifconfig #运行ifconfig命令查看ip
:!python % #运行正在编辑的python脚本