From 278de9ab89a4a4199409be5ad44576de865aee15 Mon Sep 17 00:00:00 2001 From: Wang Shidong Date: Mon, 22 May 2017 12:26:49 +0800 Subject: [PATCH] Update README.md --- README.md | 50 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0f11ebd..8b29dcb 100644 --- a/README.md +++ b/README.md @@ -146,6 +146,8 @@ around paragraph_)。 如果你能看见 Vim 老司机操作,你会发现他们使用 Vim 脚本语言就如同钢琴师弹钢琴一样。复杂的操作只需要几个按键就能完成。他们甚至不用刻意去想,因为这已经成为[肌肉记忆](https://en.wikipedia.org/wiki/Muscle_memory)了。这减少[认识负荷](https://en.wikipedia.org/wiki/Cognitive_load)并帮助人们专注于实际任务。 +返回主目录 [:arrow_heading_up:](#简介) + ## 入门 Vim 自带一个交互式的教程,内含你需要了解的最基础的信息,你可以通过终端运行以下命令打开教程: @@ -168,6 +170,8 @@ Vim 基于一个 [vi](https://en.wikipedia.org/wiki/Vi) 克隆,叫做 [Stevie] 最后一个建议:使用[插件](#插件管理)之前,请先掌握 Vim 的基本操作。很多插件都只是对 Vim 自带功能的封装。 +返回主目录 [:arrow_heading_up:](#简介) + ## 精简的 vimrc 用户的 vimrc 配置文件可以放在 `~/.vimrc`,或者为了更好的分离放在 `~/.vim/vimrc`,后者更便于通过版本控制软件备份和同步整个配置,比方说 Github。 @@ -182,6 +186,8 @@ Vim 基于一个 [vi](https://en.wikipedia.org/wiki/Vi) 克隆,叫做 [Stevie] **建议**:大多数插件作者都维护不止一个插件并且将他们的 vimrc 放在 Github 上展示(通常放在叫做 "vim-config" 或者 "dotfiles" 的仓库中),所以当你发现你喜欢的插件时,去插件维护者的 Github 主页看看有没有这样的仓库。 +返回主目录 [:arrow_heading_up:](#简介) + ## 我正在使用什么样的 Vim 使用 `:version` 命令将向你展示当前正在运行的 Vim 的所有相关信息,包括它是如何编译的。 @@ -213,6 +219,8 @@ endif :h +feature-list ``` +返回主目录 [:arrow_heading_up:](#简介) + ## 备忘录 为了避免版权问题,我只贴出链接: @@ -225,6 +233,8 @@ endif 或者在 Vim 中快速打开备忘录:[vim-cheat40](https://github.com/lifepillar/vim-cheat40)。 +返回主目录 [:arrow_heading_up:](#简介) + # 基础 ## 缓冲区,窗口,标签 @@ -245,6 +255,8 @@ Vim 是一个文本编辑器。每次文本都是作为**缓冲区**的一部分 顺带提一下,缓冲区列表是全局可见的,你可以在任何标签中访问任何一个缓冲区。 +返回主目录 [:arrow_heading_up:](#基础) + ## 已激活,已载入,已列出,已命名,缓冲区 用类似 `vim file1` 的命令启动 Vim 。这个文件的内容将会被加载到缓冲区中,你现在有一个**已载入的缓冲区**。如果你在 Vim 中保存这个文件,缓冲区内容将会被同步到磁盘上(写回文件中)。 @@ -255,6 +267,8 @@ Vim 是一个文本编辑器。每次文本都是作为**缓冲区**的一部分 **未命名的缓冲区**是一种没有关联特定文件的缓冲区,这种缓冲区经常被插件使用。比如 `:enew` 将会创建一个无名临时缓冲区。添加一些文本然后使用 `:w /tmp/foo` 将他写入到磁盘,这样这个缓冲区就会变成一个**已命名的缓冲区**。 +返回主目录 [:arrow_heading_up:](#基础) + ## 参数列表 [全局缓冲区列表](#缓冲区窗口标签)是 Vim 的特性。在这之前的 vi 中,仅仅只有参数列表,参数列表在 Vim 中依旧可以使用。 @@ -277,6 +291,8 @@ Vim 是一个文本编辑器。每次文本都是作为**缓冲区**的一部分 相关帮助:`:h argument-list` +返回主目录 [:arrow_heading_up:](#基础) + ## 按键映射 使用 `:map` 命令家族你可以定义属于你自己的快捷键。该家族的每一个命令都限定在特定的模式下。从技术上来说 Vim 自带高达 12 中模式,其中 6 种可以被映射。另外一些命令作用于多种模式: @@ -330,9 +346,13 @@ Vim 是一个文本编辑器。每次文本都是作为**缓冲区**的一部分 相关帮助: - :h key-notation - :h mapping - :h 05.3 +```vim +:h key-notation +:h mapping +:h 05.3 +``` + +返回主目录 [:arrow_heading_up:](#基础) ## 映射占位符 @@ -355,6 +375,8 @@ nnoremap h :helpgrep 请参阅 `:h mapleader` 与 `:h maploacalleader` 来获取更多帮助。 +返回主目录 [:arrow_heading_up:](#基础) + ## 寄存器 寄存器就是存储文本的地方。我们常用的「复制」操作就是把文本存储到寄存器,「 粘贴」 操作就是把文本从寄存器中读出来。顺便,在 Vim 中复制的快捷键是 y,粘贴的快捷键是 p。 @@ -401,6 +423,8 @@ Vim 为我们提供了如下的寄存器: **有趣的是**: 在 Vim 中,`y` 是复制命令,源于单词 "yanking"。而在 Emacs 中,"yanking" 代表的是粘贴(或者说,重新插入刚才删掉的内容),而并不是复制。 +返回主目录 [:arrow_heading_up:](#基础) + ## 范围 范围 (Ranges) 其实很好理解,但很多 Vim 用户的理解不到位。 @@ -451,6 +475,8 @@ Vim 为我们提供了如下的寄存器: :h 10.3 ``` +返回主目录 [:arrow_heading_up:](#基础) + ## 标注 你可以使用标注功能来标记一个位置,也就是记录文件某行的某个位置。 @@ -488,6 +514,8 @@ Vim 为我们提供了如下的寄存器: 请使用 `:marks` 命令来显示所有的标注,参阅 `:h mark-motions` 来获取关于标注的更多帮助。 +返回主目录 [:arrow_heading_up:](#基础) + ## 补全 Vim 在插入模式中为我们提供了多种补全方案。如果有多个补全结果,Vim 会弹出一个菜单供你选择。 @@ -524,6 +552,8 @@ Vim 在插入模式中为我们提供了多种补全方案。如果有多个补 :h new-omni-completion ``` +返回主目录 [:arrow_heading_up:](#基础) + ## 动作,操作符,文本对象 **动作**也就是指移动光标的操作,你肯定很熟悉 `h`、`j`、`k` 和 `l`,以及 `w` 和 `b`。但其实,`/` 也是一个动作。他们都可以搭配数字使用,比如 `2?the` 可以将光标移动到倒数第二个 "the" 出现的位置。 @@ -546,6 +576,8 @@ Vim 在插入模式中为我们提供了多种补全方案。如果有多个补 请参阅 `:h text-objects` 来获取更多关于文本对象的帮助。 +返回主目录 [:arrow_heading_up:](#基础) + ## 自动命令 在特定的情况下,Vim 会传出事件。如果你想针对这些事件执行回调方法,那么就需要用到自动命令这个功能。 @@ -578,6 +610,8 @@ au BufNewFile,BufRead *.rb,*.rbw setf ruby 请参阅 `:h autocommand` 来获取更多帮助 +返回主目录 [:arrow_heading_up:](#基础) + ## 变更历史,跳转历史 在 Vim 中,用户最近 100 次的文字改动都会被保存在**变更历史**中。如果在同一行有多个小改动,那么 Vim 会把它们合并成一个。尽管内容改动会合并,但作用的位置还是会只记录下最后一次改动的位置。 @@ -604,6 +638,8 @@ Vim 中的跳转命令,包括 `'`、`` ` ``、`G`、`/`、`?`、`n`、`N`、`% :h jumplist ``` +返回主目录 [:arrow_heading_up:](#基础) + ## 内容变更历史记录 Vim 会记录文本改变之前的状态。因此,你可以使用「撤销」操作 u 来取消更改,也可以通过「重做」操作 Ctrl + r 来恢复更改。 @@ -657,6 +693,8 @@ baz(3) quux(4) :h usr_32 ``` +返回主目录 [:arrow_heading_up:](#基础) + ## 全局位置信息表,局部位置信息表 在某一个动作返回一系列「位置」的时候,我们可以利用「全局位置信息表」和「局部位置信息表」来存储这些位置信息,方便以后跳转回对应的位置。每一个存储的位置包括文件名、行号和列号。 @@ -692,6 +730,8 @@ Vim 中,全局位置信息表只能有一个,但每一个窗口都可以有 执行了上面的代码,你就能看到所有包含字符串 "foo" 的文件名以及匹配到的相关字段都会显示在全局位置信息表中。 +返回主目录 [:arrow_heading_up:](#基础) + ## 宏 你可以在 Vim 中录制一系列按键,并把他们存储到[寄存器](#寄存器)中。对于一些需要临时使用多次的一系列操作,把它们作为宏保存起来会显著地提升效率。对于一些复杂的操作,建议使用 Vim 脚本来实现。 @@ -745,6 +785,8 @@ q :h 'lazyredraw' ``` +返回主目录 [:arrow_heading_up:](#基础) + ## 颜色主题 颜色主题可以把你的 Vim 变得更漂亮。Vim 是由多个组件构成的,我们可以给每一个组件都设置不同的文字颜色、背景颜色以及文字加粗等等。比如,我们可以通过这个命令来设置背景颜色: @@ -769,6 +811,8 @@ q - [主题列表](#主题列表) - [自定义主题中的颜色](#自定义主题中的颜色) +返回主目录 [:arrow_heading_up:](#基础) + ## 折叠 每一部分文字(或者代码)都会有特定的结构。对于存在结构的文字和代码,也就意味着它们可以按照一定的逻辑分割成不同区域。Vim 中的折叠功能,就是按照特定的逻辑把文字和代码折叠成一行,并显示一些简短的描述。折叠功能涉及到很多操作,而且折叠功能可以嵌套使用。