思想
对程序员来说vim是最优秀的文本编辑器,核心思想就是所有的操作通过键盘实现。
纵向编辑
进入纵向编辑模式:ctrl + v
修改
- 切换模式:ctrl + v
- 移动到某行,比如最后一行:G,第五行:5G
- 修改字符r,或者删除字符d
列前添加
- 光标定位到指定的列
- 进入纵向编辑模式,移动光标到指定的列
- 输入I进入指定的插入点,输入要插入的字符串
- 按esc退出即可
列后添加
- 光标定位到指定的列
- 进入纵向编辑模式,移动光标到指定的列
- 输入A进入指定的插入点,输入要插入的字符串
- 按esc退出即可
历史修改
放弃最近的修改(undo):u
回复最近的修改(redo):ctrl + r
替换
idea中的vim能力有限,尽量在terminal下执行,在mac环境中;%代表整个文件中起作用;
#保留匹配的行:
v/<string to match>/d
#删除匹配的行:
g/<string to match>/d
#删除空行:
g/^$/d
#mac下删除换行:
%s/\n//g
#替换第一行到最后一行所有匹配:
1,$s/<match string to be replaced>/<new string>/g
配套工具vimdiff
可以通过两种方式启动:vimdiff等价vim -d
光标移动
- 文件之间切换光标:control + w,w
- 差异点之前移动光标:
向上:[c
向下:]c
内容折叠
- 展开文件内容:zo
- 折叠文件内容:zc
文件合并
- 拷贝差异点的内容到另外一个文件中,可能有多行:dp(diff put)
- 获得另外一个文件中的内容到差异点处:do(diff get)
- 撤销修改,光标必须在修改的文件中,类似vim的redo和undo
同时操作
- 如果文件都没有修改,同时关闭即可:qa
- 如果有文件修改,强制放弃,并全部关闭:qa!
- 如果有文件修改,同时写入并关闭:wqa
- 如果有文件修改,同时写入:wa