vim
Contents
命令行模式
- 正常模式
- 插入模式
- 替换模式
- 可视化
- 命令模式
可以通过ECS从任何其他模式返回正常模式 v进入可视一般模式,V进入可视行模式 :进入命令行模式 i进入插入模式 R进入替换模式
基本操作
插入
在正常模式, 键入 i 进入插入模式。ecs 回到正常模式
缓存 标签 窗口
vim 会维护一系列打开的文件,称为 “缓存”。 一个 Vim 会话包含一系列标签页,每个标签页包含 一系列窗口 (分隔面板)。每个窗口显示一个缓存。 跟网页浏览器等其他你熟悉的程序不一样的是, 缓存和窗口不是一一对应的关系; 窗口只是视角。 一个缓存可以在 多个 窗口打开,甚至在同一 个标签页内的多个窗口打开。这个功能其实很好用, 比如在查看同一个文件的不同部分的时候。
命令行
- :q 退出 (关闭窗口)
- :w 保存 (写)
- :wq 保存然后退出
- :e {文件名} 打开要编辑的文件
- :ls 显示打开的缓存
- :help {标题}打开帮助文档
- :help :w 打开 :w 命令的帮助文档
- :help w 打开 w 移动的帮助文档
移动
- 基本移动: hjkl (左, 下, 上, 右)
- 词: w (下一个词), b (词初), e (词尾)
- 行: 0 (行初), ^ (第一个非空格字符), $ (行尾)
- 屏幕: H (屏幕首行), M (屏幕中间), L (屏幕底部)
- 翻页: Ctrl-u (上翻), Ctrl-d (下翻)
- 文件: gg (文件头), G (文件尾)
- 行数: :{行数}
或者 {行数}G ({行数}为行数) - 杂项: % (找到配对,比如括号或者 /* */ 之类的注释对)
- 查找:f{字符},t{字符},F{字符},T{字符}
- 查找/到 向前/向后 在本行的{字符}
- , / ; 用于导航匹配
- 搜索: /{正则表达式}, n / N 用于导航匹配
编辑
- i 进入插入模式
- 但是对于操纵/编辑文本,不单想用退格键完成
- O / o 在之上/之下插入行
- d{移动命令}删除 {移动命令}
- 例如, dw 删除词, d$ 删除到行尾, d0 删除到行头。
- c{移动命令}改变 {移动命令}
- 例如, cw 改变词
- 比如 d{移动命令} 再 i
- x 删除字符 (等同于 dl)
- s 替换字符 (等同于 xi)
- 可视化模式 + 操作
- 选中文字, d 删除 或者 c 改变
- u 撤销,
重做 - y 复制 / “yank” (其他一些命令比如 d 也会复制)
- p 粘贴
- 更多值得学习的: 比如 ~ 改变字符的大小写
计数
- 3w 向前移动三个词
- 5j 向下移动 5 行
- 7dw 删除 7 个词
修饰语
- 你可以用修饰语改变 “名词” 的意义。修饰语有 i, 表示 “内部” 或者 “在内“, 和 a, 表示 ”周围“。
- ci( 改变当前括号内的内容
- ci[ 改变当前方括号内的内容
- da’ 删除一个单引号字符窗, 包括周围的单引号
进阶
搜索和替换
:s (替换) 命令
- %s/foo/bar/g ==>在整个文件中将 foo 全局替换成 bar
- %s/[._]((._))/\1/g ==>将有命名的 Markdown 链接替换成简单 URLs
多窗口
- 用 :sp / :vsp 来分割窗口
- 同一个缓存可以在多个窗口中显示
扩展
- vimtutor 是一个 Vim 安装时自带的教程
- Vim Adventures 是一个学习使用 Vim 的游戏