mirror of
https://gitlab.com/wsdjeg/vim-galore-zh_cn.git
synced 2025-01-19 03:19:27 +08:00
Update README.md
This commit is contained in:
parent
32207f2629
commit
278de9ab89
50
README.md
50
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 <leader>h :helpgrep<space>
|
||||
|
||||
请参阅 `:h mapleader` 与 `:h maploacalleader` 来获取更多帮助。
|
||||
|
||||
返回主目录 [:arrow_heading_up:](#基础)
|
||||
|
||||
## 寄存器
|
||||
|
||||
寄存器就是存储文本的地方。我们常用的「复制」操作就是把文本存储到寄存器,「 粘贴」 操作就是把文本从寄存器中读出来。顺便,在 Vim 中复制的快捷键是 <kbd>y</kbd>,粘贴的快捷键是 <kbd>p</kbd>。
|
||||
@ -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<cr>` 可以将光标移动到倒数第二个 "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 会记录文本改变之前的状态。因此,你可以使用「撤销」操作 <kbd>u</kbd> 来取消更改,也可以通过「重做」操作 <kbd>Ctrl + r</kbd> 来恢复更改。
|
||||
@ -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 中的折叠功能,就是按照特定的逻辑把文字和代码折叠成一行,并显示一些简短的描述。折叠功能涉及到很多操作,而且折叠功能可以嵌套使用。
|
||||
|
Loading…
x
Reference in New Issue
Block a user