vim学习小计
说起来,从接触Linux到现在,使用Vim大概有一年的时间,大部分时候主要在编辑一些配置文件,查看文档使用。算不上vim的高级玩家,在此主要针对vim的一些常见使用场景做一个命令汇总。
打开文件
vim -On file1 file2 # 左右打开两个文件
vim -on file1 file2 # 上下打开两个文件
vim -d file1 file2 # diff
编辑常用
数字+hjkl 上下左右
^ $ 跳转到行首行位
gg G 首行 尾行
aAoO 插入在前后上下
数字+yy 数字+pp 复制粘贴
通过c-f
向下翻页,c-b
向上翻页;c-e
逐行下滚,c-y
逐行上滚。这在几乎所有Unix软件中都是好使的,比如man和less。 H
可以移动到屏幕的首行,L
到屏幕尾行,M
到屏幕中间。
zt
可以置顶当前行,通常用来查看完整的下文,比如函数、类的定义。 zz
将当前行移到屏幕中部,zb
移到底部。
多行编辑
最常用的编辑即为块注释和块取消注释:
c-v 向下选中要被注释的行 # 选中模式
I # insert,在首行插入注释符
Esc # 推出即将首行更改应用到选中行
取消块注释差不多,选中之后x
即可
多窗口编辑
:split file 横屏打开一个文件
:vsplit file 竖屏打开一个文件
c-w hjkl 上下左右切换活动窗口
c-w w 顺序切换
c-w HJKL 上下左右移动窗口
vim有多标签功能Tag,但我觉得用得很少,在此不表
另外用得比较多的,前后台切换(这个其实是Linux的用法):
切换到后台: c-z
切换到前台: fg 回车
退出
ZZ 保存退出
ZQ 不保存退出
其他
显示行号: :set nu
设置编码: :set encoding:utf-8
美化json: :%!python -m json.tool
全局替换: :%s/被替换的/替换后的/g
解决粘贴时跳行问题: :set paste