vim总结
Vim模式
第一章到第五章的笔记:
VIM
1 :version 查看配置文件 vimrc 的位置
it shows: “user vimrc file: "$HOME/.vimrc"”
配置文件在用户目录下~/.vimrc ,如果没有,就自己创建一个
vimrc “ 表示注释
#移动
hjkl 左下上右
0 移动到行首
^ 移动到代码的第一个字符
$ 移动到行尾
w/W 移动到下一个单词. w把标点也作为一个单词, W以空格区分单词
b/B 反向移动
e/E 移动到下一个单词结尾
ge 反向到下一个单词结尾
#跳转
Ctrl+f 下一页
Ctrl+b 上一页
Ctrl+d/u 向下/上翻半页
gg 跳转到文件首行
<line_number>gg/G 跳转到指定行。如输入 8gg就回跳转到第8行。
G 跳转到文件最后一行
Ctrl+g 查看文件信息:文件名,当前行数,当前百分比
#缩进
>> 右锁进。普通模式下,需要在有字符的情况下。
<< 左锁进。
命令模式下
:m,n> m行到n行进行缩进
:m>n m行开始,连续缩进n行
Vim
delete 剪切
yank 拷贝
put 粘贴
:h 帮助命令
:h reg 寄存器的帮助命令。寄存器可以大概理解为剪切板。
yy 赋值整行。
dd 剪切整行
:reg 查看剪切版(寄存器)中的内容。
p 粘贴
u 撤销
ctr+r 重做
yw 赋值当前光标单词,y2w 向前复制2个单词。
x 删除当前光标所在字符。
dw 删除当前字符
d{hjkl} 删除上下左右的字符
d$ 删除到行尾
d^ 删除到行首
5dd 连续向下删除5行
5w 正向移动5个单词
5dw 连续先前删除5次
~ 单个字符大小写切换
g~w 单词大小写切换
g~~ 整行大小写切换
guw 单词强制小写
gUw 单词强制大写
guu 当前行小写
fs 查找下一个字符‘s’ 的位置。当前行查找
Fs 反向查找下一个字符‘s’ 的位置。当前行查找。
dft 删除光标到当前行到查找‘t’之间的字符。但前行查找
/string 命令行全文查找当前字符穿string。
替换
:s/set/world/g 当前行 ‘set’ 修改为 ‘world’
:%s/set/world/g 全文 ‘set’ 修改为 ‘world’
shift + r 替换模式,新的输入会覆盖当前行。
缓冲区
vim file1 file2 打开多个文件,每个文件对应一个缓冲区
:ls 列出来当前缓冲区
:bp 前一个
:bn 后一个
:ball 所有的
:qall 退出所有的
分屏
vim -O file1 file2 水平分屏,打开file1,file2 两个文件。
vim -o file1 file2 竖直分屏
ctrl + w + h/j/k/l 移动选中分屏
标签:
:tabsnew file1 在新标签中打开file1
:tabs 查看当前所打开的标签页
:tabclose 关闭当前所打开的标签
:tabonly 除了当前关闭所有标签
:tabn 移动下一个标签
:tabp 移到前一个标签
:tabfirst 移到第一个标签
:tablast 移到最后一个标签
:tabm 2 移到第二个标签, 从0开始
gt 移动到下一个标签
gT 移动到上一标签
2gt 移动到第二个标签,从1开始。
文本对象
可视化模式下
viw i 不包括空格,空格计数
vis 选中句子
vip 选中段落
vi( 选中小括号
vi[ 选中中括号
vit 选中标签中的内容
vaw a 空格不计数
v2aw
daw 删除当前单词,包括删除空格
diw 删除当前单词,不删除空格
dw 删除光标后
宏
普通模式下 qa,开始录制寄存器到a寄存器中。
按 i,进入编辑。
esc 退出编辑。
q退出录制。
100@a 把a寄存器中的宏执行100次。
@@ 执行一遍上一次的操作
:n,mnormal @a
可视化
v 面向字符
shift + v 面向行
ctrl + v 面向块
gv 重选上次高亮边界
o 切换选取边界
案例1:仅把大括号内的进行缩进。
f () {
111
222
333
}
1 选中:光标移动到大括号左面,’vi{‘
2 缩进: ‘>>’
3 再次缩进: ‘.’
4 取消一次缩进: ‘u’
案例2:制表
chapter Page
一 10
二 30
三 60
1 绘制竖线:
光标移到‘chapter’ ‘Page’单词之间,ctrl+v 进入块编辑。
向下移动选中一列
r 替换
| 完成
2 绘制横线
把‘chapter| Page’ 拷贝一下。再把一行替换掉。
shift + v 选中一行。
r 单个字符替换
- 完成。
chapter| Page
_____________
一 | 10
二 | 30
三 | 60
案例三
aaa ggg bbb
aaa ggg bbb
aaa ggg bbb
替换为
aaa ... bbb
aaa ... bbb
aaa ... bbb
1 ctrl+v,光标移动到第一个g,向下移动。e选中当前单词,ggg。
2 c 修改
3 输入 …
4 退出编辑,完成。
案例4: 再每行行尾添加 end
1
1 2
1 2 3
1 2
1
1 ctrl+v 进入块模式
2 从上到下选一列
3 $ 选到行尾
4 A 进入插入模式,行尾添加end。
5 退出。完成。
1 end
1 2 end
1 2 3 end
1 2 end
1 end
部分内容有筛选。
普通模式下的命令:
数字键0-------->光标移到包含缩进的行最前方
shift+6(^键)--->光标移到不包含缩进的文字最前方
shift+4($键)---->光标移到最后方
w/W ----------->正向移动到下一个单词的开头(大写W,不包含特殊字符如逗号)
b/B ---------->反向移动到下一个单词的开头
e/E ----------->正向移动下一单词结尾
ge ----------->反向移动下一单词结尾
1gg ----------->移到第一行
10gg ----------->移到第十行
G ------------->移到最后一行
<< ------------->左边缩进
yy ------------>复制
3yy------------>复制三行
y2w ----------->复制光标后面两个单词
p ------------->粘贴
dd------------->剪切
3dd ----------->剪切3行
x/X ------------>删除光标下后一个/前一个单字符
d$/D ----------->删除从光标到行尾的字符
d^ ------------>删除从光标到行头的字符
dj ------------->删除光标下面一行包括自己两行
dk ------------->删除光标上面一行包括自己两行
/xx ------------->查找xx,可以按n下一行,N上一行
. --------------->重复之前的操作
命令模式下的命令:
:10,15> ---------->第十行到第十五行进行右缩进
:> ----------->光标当前行右缩进
:10>3 ---------->第十行 后三行右缩进
:s/a/b/g --------->当前行下,把所以a替换成b
:%s/set/hello/g --->整个文本的set替换成hello
终端下:
vim -o3 文件名 --------->竖直方向分三屏
vim -O3 文件名 --------->水平方向分三屏
分屏模式下,ctrl+ww把光标移到下一个窗体
ctrl+wc ------关闭当前窗体
:sp 新文件名 --->上下分割并打开一个新文件
:vsp 新文件名 --->左右分割并打开一个新文件
宏操作:
qa开始记录宏到a寄存器中
qA追加宏在a寄存器中
x@a 执行x遍a寄存器中的操作
@@ 再执行一遍上一次操作
:n,m normal @a n到m行执行寄存器a中操作
ctrl+a当前数字加一
可视化模式:
v ----->普通进入
V ----->面向行进入
ctrl+v-->面向列进入
gv ----->重新选中之前的选区高亮
在列可视化模式下可以用r替换空白为#来进行批量注释操作
在列模式下替换竖排多个字母为少量字母,用c命令编辑后esc就可以替换完成