@@ -13,36 +13,36 @@ solution:
1313 url : editors-solution
1414---
1515
16- 写作和写代码其实是两项非常不同的活动。当我们编程的时候,会经常在文件间进行切换、阅读、浏览和修改代码,而不是连续编写一大段的文字。因此代码编辑器和文本编辑器是很不同的两种工具(例如微软的 Word 与 Visual Studio Code)
16+ 写作和写代码其实是两项非常不同的活动。当我们编程的时候,会经常在文件间进行切换、阅读、浏览和修改代码,而不是连续编写一大段的文字。因此代码编辑器和文本编辑器是很不同的两种工具(例如微软的 Word 与 Visual Studio Code)。
1717
1818作为程序员,我们大部分时间都花在代码编辑上,所以花点时间掌握某个适合自己的编辑器是非常值得的。通常学习使用一个新的编辑器包含以下步骤:
1919
2020- 阅读教程(比如这节课以及我们为您提供的资源)
2121- 坚持使用它来完成你所有的编辑工作(即使一开始这会让你的工作效率降低)
22- - 随时查阅:如果某个操作看起来像是有更方便的实现方法,一般情况下真的会有。
22+ - 随时查阅:如果某个操作看起来像是有更方便的实现方法,一般情况下真的会有
2323
2424如果您能够遵循上述步骤,并且坚持使用新的编辑器完成您所有的文本编辑任务,那么学习一个复杂的代码编辑器的过程一般是这样的:头两个小时,您会学习到编辑器的基本操作,例如打开和编辑文件、保存与退出、浏览缓冲区。当学习时间累计达到20个小时之后,您使用新编辑器的效率应该已经和使用老编辑器一样快。在此之后,其益处开始显现:有了足够的知识和肌肉记忆后,使用新编辑器将大大节省你的时间。而现代文本编辑器都是些复杂且强大的工具,永远有新东西可学:学的越多,效率越高。
2525
2626# 该学哪个编辑器?
2727
28- 程序员们对自己正在使用的文本编辑器通常有着 [ 非常强的执念] ( https://en .wikipedia.org/wiki/Editor_war ) 。
28+ 程序员们对自己正在使用的文本编辑器通常有着 [ 非常强的执念] ( https://zh .wikipedia.org/wiki/编辑器之战 ) 。
2929
3030
31- 现在最流行的编辑器是什么?[ Stack Overflow的调查 ] ( https://insights.stackoverflow.com/survey/2019/#development-environments-and-tools ) ( 这个调查可能并不如我们想象的那样客观,因为Stack Overflow 的用户并不能代表所有程序员) 显示,[ Visual Studio Code] ( https://code.visualstudio.com/ ) 是目前最流行的代码编辑器。而[ Vim] ( https://www.vim.org/ ) 则是最流行的基于命令行的编辑器。
31+ 现在最流行的编辑器是什么?[ Stack Overflow 的调查 ] ( https://insights.stackoverflow.com/survey/2019/#development-environments-and-tools ) ( 这个调查可能并不如我们想象的那样客观,因为 Stack Overflow 的用户并不能代表所有程序员) 显示,[ Visual Studio Code] ( https://code.visualstudio.com ) 是目前最流行的代码编辑器。而 [ Vim] ( https://www.vim.org ) 则是最流行的基于命令行的编辑器。
3232
3333## Vim
3434
35- 这门课的所有教员都使用Vim作为编辑器。Vim有着悠久历史;它始于1976年的Vi编辑器 ,到现在还在
36- 不断开发中。Vim有很多聪明的设计思想,所以很多其他工具也支持Vim模式 (比如,140万人安装了
35+ 这门课的所有教员都使用 Vim 作为编辑器。Vim 有着悠久历史;它始于 1976 年的 Vi 编辑器 ,到现在还在
36+ 不断开发中。Vim 有很多聪明的设计思想,所以很多其他工具也支持 Vim 模式 (比如,140 万人安装了
3737[ Vim emulation for VS code] ( https://github.com/VSCodeVim/Vim ) )。即使你最后使用
38- 其他编辑器,Vim也值得学习 。
38+ 其他编辑器,Vim 也值得学习 。
3939
40- 由于不可能在50分钟内教授Vim的所有功能,我们会专注于解释Vim的设计哲学 ,教你基础知识,
40+ 由于不可能在 50 分钟内教授 Vim 的所有功能,我们会专注于解释 Vim 的设计哲学 ,教你基础知识,
4141并展示一部分高级功能,然后给你掌握这个工具所需要的资源。
4242
43- # Vim的哲学
43+ # Vim 的哲学
4444
45- 在编程的时候,你会把大量时间花在阅读/编辑而不是在写代码上。所以,Vim 是一个_多模态_编辑
45+ 在编程的时候,你会把大量时间花在阅读/编辑而不是在写代码上。所以,Vim 是一个 * 多模态 * 编辑
4646器:它对于插入文字和操纵文字有不同的模式。Vim 是可编程的(可以使用 Vimscript 或者像
4747Python 一样的其他程序语言),Vim 的接口本身也是一个程序语言:键入操作(以及其助记名)
4848是命令,这些命令也是可组合的。Vim 避免了使用鼠标,因为那样太慢了;Vim 甚至避免用
@@ -52,39 +52,39 @@ Python 一样的其他程序语言),Vim 的接口本身也是一个程序语
5252
5353# 编辑模式
5454
55- Vim的设计以大多数时间都花在阅读 、浏览和进行少量编辑改动为基础,因此它具有多种操作模式:
55+ Vim 的设计以大多数时间都花在阅读 、浏览和进行少量编辑改动为基础,因此它具有多种操作模式:
5656
57- - * 正常模式* :在文件中四处移动光标进行修改
58- - * 插入模式* :插入文本
59- - * 替换模式* :替换文本
60- - * 可视化 (一般,行,块)模式 * :选中文本块
61- - * 命令模式* :用于执行命令
57+ - ** 正常模式* * :在文件中四处移动光标进行修改
58+ - ** 插入模式* * :插入文本
59+ - ** 替换模式* * :替换文本
60+ - ** 可视化模式 ** (一般,行,块):选中文本块
61+ - ** 命令模式* * :用于执行命令
6262
63- 在不同的操作模式下,键盘敲击的含义也不同。比如,` x ` 在插入模式会插入字母` x ` ,但是在正常模式
63+ 在不同的操作模式下,键盘敲击的含义也不同。比如,` x ` 在插入模式会插入字母 ` x ` ,但是在正常模式
6464会删除当前光标所在的字母,在可视模式下则会删除选中文块。
6565
66- 在默认设置下,Vim会在左下角显示当前的模式。 Vim启动时的默认模式是正常模式 。通常你会把大部分
66+ 在默认设置下,Vim 会在左下角显示当前的模式。Vim 启动时的默认模式是正常模式 。通常你会把大部分
6767时间花在正常模式和插入模式。
6868
69- 你可以按下 ` <ESC> ` (退出键) 从任何其他模式返回正常模式。 在正常模式,键入 ` i ` 进入插入
70- 模式, ` R ` 进入替换模式, ` v ` 进入可视(一般)模式, ` V ` 进入可视(行)模式, ` <C-v> `
71- (Ctrl-V, 有时也写作 ` ^V ` )进入可视(块)模式, ` : ` 进入命令模式。
69+ 你可以按下 ` <ESC> ` (退出键)从任何其他模式返回正常模式。在正常模式,键入 ` i ` 进入插入
70+ 模式,` R ` 进入替换模式,` v ` 进入可视(一般)模式,` V ` 进入可视(行)模式,` <C-v> `
71+ (Ctrl-V, 有时也写作 ` ^V ` )进入可视(块)模式,` : ` 进入命令模式。
7272
73- 因为你会在使用 Vim 时大量使用 ` <ESC> ` 键,所以可以考虑把大小写锁定键重定义成 ` <ESC> ` 键 ([ MacOS 教程] ( https://vim.fandom.com/wiki/Map_caps_lock_to_escape_in_macOS ) )。
73+ 因为你会在使用 Vim 时大量使用 ` <ESC> ` 键,所以可以考虑把大小写锁定键重定义成 ` <ESC> ` 键([ MacOS 教程] ( https://vim.fandom.com/wiki/Map_caps_lock_to_escape_in_macOS ) )。
7474
7575# 基本操作
7676
7777## 插入文本
7878
79- 在正常模式,键入 ` i ` 进入插入模式。现在 Vim 跟很多其他的编辑器一样,直到你键入` <ESC> `
80- 返回正常模式。 你只需要掌握这一点和上面介绍的所有基础知识就可以使用 Vim 来编辑文件了
79+ 在正常模式,键入 ` i ` 进入插入模式。现在 Vim 跟很多其他的编辑器一样,直到你键入 ` <ESC> `
80+ 返回正常模式。你只需要掌握这一点和上面介绍的所有基础知识就可以使用 Vim 来编辑文件了
8181(虽然如果你一直停留在插入模式内不一定高效)。
8282
8383## 缓存, 标签页, 窗口
8484
8585Vim 会维护一系列打开的文件,称为“缓存”。一个 Vim 会话包含一系列标签页,每个标签页包含
8686一系列窗口(分隔面板)。每个窗口显示一个缓存。跟网页浏览器等其他你熟悉的程序不一样的是,
87- 缓存和窗口不是一一对应的关系;窗口只是视角。一个缓存可以在_多个_窗口打开 ,甚至在同一
87+ 缓存和窗口不是一一对应的关系;窗口只是视角。一个缓存可以在 * 多个 * 窗口打开 ,甚至在同一
8888个标签页内的多个窗口打开。这个功能其实很好用,比如在查看同一个文件的不同部分的时候。
8989
9090Vim 默认打开一个标签页,这个标签也包含一个窗口。
@@ -106,8 +106,8 @@ Vim 默认打开一个标签页,这个标签也包含一个窗口。
106106
107107# Vim 的接口其实是一种编程语言
108108
109- Vim 最重要的设计思想是 Vim 的界面本身是一个程序语言。键入操作 (以及他们的助记名)
110- 本身是命令, 这些命令可以组合使用。 这使得移动和编辑更加高效,特别是一旦形成肌肉记忆。
109+ Vim 最重要的设计思想是 Vim 的界面本身是一个程序语言。键入操作(以及他们的助记名)
110+ 本身是命令,这些命令可以组合使用。这使得移动和编辑更加高效,特别是一旦形成肌肉记忆。
111111
112112## 移动
113113
@@ -147,9 +147,9 @@ Vim 最重要的设计思想是 Vim 的界面本身是一个程序语言。键
147147 - 但是对于操纵/编辑文本,不单想用退格键完成
148148- ` O ` / ` o ` 在之上/之下插入行
149149- ` d{移动命令} ` 删除 {移动命令}
150- - 例如, ` dw ` 删除词, ` d$ ` 删除到行尾, ` d0 ` 删除到行头。
150+ - 例如,` dw ` 删除词, ` d$ ` 删除到行尾, ` d0 ` 删除到行头。
151151- ` c{移动命令} ` 改变 {移动命令}
152- - 例如, ` cw ` 改变词
152+ - 例如,` cw ` 改变词
153153 - 比如 ` d{移动命令} ` 再 ` i `
154154- ` x ` 删除字符(等同于 ` dl ` )
155155- ` s ` 替换字符(等同于 ` xi ` )
@@ -234,15 +234,15 @@ def main():
234234
235235# 自定义 Vim
236236
237- Vim 由一个位于 ` ~/.vimrc ` 的文本配置文件(包含 Vim 脚本命令)。 你可能会启用很多基本
237+ Vim 由一个位于 ` ~/.vimrc ` 的文本配置文件(包含 Vim 脚本命令)。你可能会启用很多基本
238238设置。
239239
240240我们提供一个文档详细的基本设置,你可以用它当作你的初始设置。我们推荐使用这个设置因为
241241它修复了一些 Vim 默认设置奇怪行为。
242242** 在[ 这儿] ( /2020/files/vimrc ) 下载我们的设置,然后将它保存成
243243` ~/.vimrc ` .**
244244
245- Vim 能够被重度自定义,花时间探索自定义选项是值得的。你可以参考其他人的在GitHub
245+ Vim 能够被重度自定义,花时间探索自定义选项是值得的。你可以参考其他人的在 GitHub
246246上共享的设置文件,比如,你的授课人的 Vim 设置
247247([ Anish] ( https://github.com/anishathalye/dotfiles/blob/master/vimrc ) ,
248248[ Jon] ( https://github.com/jonhoo/configs/blob/master/editor/.config/nvim/init.vim ) (uses [ neovim] ( https://neovim.io/ ) ),
@@ -252,7 +252,7 @@ Vim 能够被重度自定义,花时间探索自定义选项是值得的。你
252252
253253# 扩展 Vim
254254
255- Vim 有很多扩展插件。跟很多互联网上已经过时的建议相反,你_不_需要在 Vim 使用一个插件
255+ Vim 有很多扩展插件。跟很多互联网上已经过时的建议相反,你 * 不 * 需要在 Vim 使用一个插件
256256管理器(从 Vim 8.0 开始)。你可以使用内置的插件管理系统。只需要创建一个
257257` ~/.vim/pack/vendor/start/ ` 的文件夹,然后把插件放到这里(比如通过 ` git clone ` )。
258258
@@ -275,7 +275,7 @@ plugins"。
275275# 其他程序的 Vim 模式
276276
277277
278- 很多工具提供了 Vim 模式。这些 Vim 模式的质量参差不齐;取决于具体工具, 有的提供了
278+ 很多工具提供了 Vim 模式。这些 Vim 模式的质量参差不齐;取决于具体工具,有的提供了
279279很多酷炫的 Vim 功能,但是大多数对基本功能支持的很好。
280280
281281## Shell
@@ -377,7 +377,7 @@ notebooks](https://github.com/lambdalisue/jupyter-vim-binding) 中用 Vim 快捷
377377
378378# 课后练习
379379[ 习题解答] ( {{site.url}}/{{site.solution_url}}/{{page.solution.url}} )
380- 1 . 完成 ` vimtutor ` 。 备注:它在一个
380+ 1 . 完成 ` vimtutor ` 。备注:它在一个
381381 [ 80x24] ( https://en.wikipedia.org/wiki/VT100 ) (80 列,24 行)
382382 终端窗口看起来效果最好。
3833831 . 下载我们提供的 [ vimrc] ( /2020/files/vimrc ) ,然后把它保存到 ` ~/.vimrc ` 。 通读这个注释详细的文件
@@ -389,13 +389,13 @@ notebooks](https://github.com/lambdalisue/jupyter-vim-binding) 中用 Vim 快捷
389389 https://github.com/ctrlpvim/ctrlp.vim`
390390 1 . 阅读这个插件的
391391 [ 文档] ( https://github.com/ctrlpvim/ctrlp.vim/blob/master/readme.md ) 。
392- 尝试用 CtrlP 来在一个工程文件夹里定位一个文件, 打开 Vim, 然后用 Vim 命令控制行开始
392+ 尝试用 CtrlP 来在一个工程文件夹里定位一个文件,打开 Vim, 然后用 Vim 命令控制行开始
393393 ` :CtrlP ` .
394- 1 . 自定义 CtrlP: 添加
394+ 1 . 自定义 CtrlP:添加
395395 [ configuration] ( https://github.com/ctrlpvim/ctrlp.vim/blob/master/readme.md#basic-options )
396396 到你的 ` ~/.vimrc ` 来用按 Ctrl-P 打开 CtrlP
3973971 . 练习使用 Vim, 在你自己的机器上重做 [ 演示] ( #demo ) 。
398- 1 . 下个月用 Vim 完成_所有的_文件编辑 。每当不够高效的时候,或者你感觉 “一定有一个更好的方式”时,
398+ 1 . 下个月用 Vim 完成 * 所有的 * 文件编辑 。每当不够高效的时候,或者你感觉 “一定有一个更好的方式”时,
399399 尝试求助搜索引擎,很有可能有一个更好的方式。如果你遇到难题,可以来我们的答疑时间或者给我们发邮件。
4004001 . 在其他工具中设置 Vim 快捷键 (见上面的操作指南)。
4014011 . 进一步自定义你的 ` ~/.vimrc ` 和安装更多插件。
0 commit comments