vim技巧
1. vim模式
1 | 正常模式(按Esc或Ctrl+[进入) 左下角显示文件名或为空 |
2. 打开文件
1 | # 打开单个文件 |
3. 插入命令
1 | i 在当前位置生前插入 |
4. 查找命令
最简单的查找
1 | /text  查找text,按n健查找下一个,按N健查找前一个。 |
快速查找,不需要手打字符即可查找
1 | * 向后(下)寻找游标所在处的单词 |
精准查找:匹配单词查找
如果文本中有 hello
,helloworld
,hellopython
那我使用 /hello ,这三个词都会匹配到。
有没有办法实现精准查找呢?可以使用
1 | /hello\> |
精准查找:匹配行首、行末
1 | # hello位于行首 |
5. 替换命令
1 | ~ 反转游标字母大小写 |
6. 撤销与重做
1 | u 撤销(Undo) |
7. 删除命令
需要说明的是,vim 其实并没有单纯的删除命令,下面你或许理解为剪切更加准确。
以字符为单位删除
1 | x 删除当前字符 |
以单词为单位删除
1 | dw 删除当前字符到单词尾 |
以行为单位删除
1 | dd 删除当前行 |
8. 复制粘贴
普通模式中使用y复制
1 | yy 复制游标所在的整行(3yy表示复制3行) |
普通模式中使用p粘贴
1 | p(小写):代表粘贴至光标后(下边,右边) |
9. 剪切粘贴
1 | dd 其实就是剪切命令,剪切当前行 |
10. 退出保存
1 | :wq 保存并退出 |
11. 移动命令
以字符为单位移动
1 | h 左移一个字符 |
以行为单位移动
1 | # 10指代所有数字,可任意指定 |
以单词为单位移动
1 | w 向前移动一个单词(光标停在单词首部) |
以句为单位移动
1 | ( 移动到句首 |
跳转到文件的首尾
1 | gg 移动到文件头。 = [[ == `` |
其他移动方法
1 | ^ 移动到本行第一个非空白字符上。 |
使用 具名标记
跳转,个人感觉这个很好用,因为可以跨文件。
1 | 使用 ma ,可以将此处标记为 a,使用 'a 进行跳转 |
当在查看错误日志时,正常的步骤是,vim打开文件,然后使用 shift+g
再跳转到最后一行,这里有个更简单的操作可以在打开文件时立即跳到最后一行。只要在 vim 和 文件 中间加个 +
即可。
1 | vim + you.log |
举一反三,当你想打开文件立即跳转到指定行时,可以这样
1 | # 打开文件并跳转到 20 行 |
当你使用 /
搜索定位跳转或者使用 :行号
进行精准跳转时,有时我们想返回到上一次的位置,如何实现?
只要使用 Ctrl+o 即可返回上一次的位置。
12. 排版功能
缩进
1 | :set shiftwidth? 查看缩进值 |
如何你要对代码进行缩进,还可以用 ==
对当前行缩进,如果要对多行对待缩进,则使用 n==
,这种方式要求你所编辑的文件的扩展名是被vim所识别的,比如.py
文件。
排版
1 | :ce 居中 |
13. 注释命令
多行注释
1 | 进入命令行模式,按ctrl + v进入 visual block模式,然后按j, 或者k选中多行,把需要注释的行标记起来 |
取消多行注释
1 | 进入命令行模式,按ctrl + v进入 visual block模式,按字母l横向选中列的个数,例如 // 需要选中2列 |
复杂注释
1 | :3,5 s/^/#/g 注释第3-5行 |
14. 调整视野
1 | "zz":命令会把当前行置为屏幕正中央, |
15. 区域选择
1 | 要进行区域选择,要先进入可视模式 |
16. 窗口控制
新建窗口
1 | # 打开两个文件分属两个窗口 |
窗口切换
1 | # 特别说明:Ctrl w <字母> 不需要同时按 |
窗口移动
1 | # 特别说明:Ctrl w <字母> 不需要同时按 |
调整尺寸
1 | # 友情提示:键盘切记不要处于中文状态 |
退出窗口
1 | :close 关闭当前窗口 |
17. 文档加密
1 | vim -x file_name |
18. 录制宏
按q键加任意字母开始录制,再按q键结束录制(这意味着vim中的宏不可嵌套),使用的时候@加宏名,比如qa。。。q录制名为a的宏,@a使用这个宏。
19. 执行命令
1 | # 重复前一次命令 |
20. 帮助命令
1 | 在Unix/Linux系统上 |
21. 配置命令
显示当前设定
1 | :set或者:se显示所有修改过的配置 |
更改设定
1 | :set nu 显示行号 |