2_learn-to-use-Vim-editor
[!AI_SUMMARY]-
本文介绍了学习使用 Vim 编辑器的好处和方法。
- Vim 的优点: 适用于代码编辑,避免鼠标和上下左右键,提高编辑效率。
- Vim 的学习曲线: 初期学习较难,但掌握后效率大幅提升。
- Vim 的编辑模式: 普通模式、插入模式、可视模式、选择模式、命令模式、Ex 模式。
- Vim 的缓存、标签页、窗口: 一个 Vim 会话包含多个标签页,每个标签页包含多个窗口,一个缓存可以在多个窗口打开。
I 为什么学 Vim ¶
放着好端端的类似于 word 以及像我们现在用的 obsidian 软件不用,为什么要学什么 vim 或者说 Emacs 等类似编辑器呢?
写作和写代码其实是两项非常不同的活动。当我们编程的时候,会经常在文件间进行切换、阅读、浏览和修改代码,而不是连续编写一大段的文字。因此代码编辑器和文本编辑器是很不同的两种工具(例如微软的 Word 与 Visual Studio Code
) 。作为程序员,我们大部分时间都花在代码编辑上,所以花点时间掌握某个适合自己的编辑器是非常值得的
missing-semester 上是这么说的,我想这类编辑器意义也正是如此;至于为什么是 vim,理由颇多,读者可以自行了解这类编辑器之间的区别,一个参考是 Stack Overflow 的调查
当然,一个在 Linux 同样使用较多的代替品是 nano ,这里是一个教程
II Vim 的哲学 ¶
Vim 是一个多模态编辑器:它对于插入文字和操纵文字有不同的模式。Vim 是可编程的(可以使用 Vimscript 或者像 Python 一样的其他程序语言
更加详细介绍可见维基百科,我们将在下面讲解比较常用的内容。
III 学习曲线 ¶
在 维基百科 上就表明了:
对于大多数用户来说,Vim 有着一个比较陡峭的学习曲线。这意味着开始学习的时候可能会进展缓慢,但是一旦掌握一些基本操作之后,能大幅度提高编辑效率。为了帮助学习,Vim 为初学者准备了 Vim 教学。通常可以在 Unix 系统命令行下输入 "vimtutor" 或者点击 Windows 系统桌面上的 Vim 教学图标进入。在 Vim 用户手册中更加详细的描述了 Vim 的基础和进阶功能。可以在 Vim 中输入 ":help user-manual" 进入用户手册。手册除了原始的英文版本之外,也被志愿者翻译成了各国文字,其中包括中文。新用户也应该学习 Vim 的帮助系统。可以在 Vim 中输入不带参数的 "help" 来阅读主帮助文件
本文是让读者初识Vim,讲解不甚详细,会列出常用项;有所不明所以也算正常,我们将在后面或者是提供的链接中详细进行讲解
其他教程也有不错的,在 CS 自学指南中就有推荐,不加赘述
IV Vim 的接口其实是一种编程语言 ¶
Vim 最重要的设计思想是 Vim 的界面本身是一个程序语言。键入操作(以及他们的助记名) 本身是命令,比如说,我们可以用 3j
来讲光标下移三行,而不用将手移动到方向键上并且按三次
这些命令可以组合使用。这使得移动和编辑更加高效,特别是一旦形成肌肉记忆。
V 编辑模式 ¶
Vim 的设计以大多数时间都花在阅读、浏览和进行少量编辑改动为基础,因此它具有 6 种基本模式和 5 种派生模式:
在默认设置下,Vim 会在左下角显示当前的模式。Vim 启动时的默认模式是普通模式。通常你会把大部分 时间花在普通模式和插入模式。
你可以按下 <ESC>
(退出键)从任何其他模式返回普通模式。在普通模式,键入 i
进入插入模式,R
进入替换模式,v
进入可视(一般)模式,V
进入可视(行)模式,<C-v>
(Ctrl-V, 有时也写作 ^V
)进入可视(块)模式,:
进入命令模式
基于有些按键经常性使用且仍然不是十分方便(如 Esc
键
V.1 基本模式 ¶
V.1.1 普通模式 ¶
在普通模式中,用的编辑器命令,比如移动光标,删除文本等等。这也是 Vim 启动后的默认模式。这正好和许多新用户期待的操作方式相反(大多数编辑器默认模式为插入模式
多数时候你会在普通模式下,使用移动命令在缓存中导航。在 Vim 里面移动也被称为 “名词”, 因为它们指向文字块。
- 基本移动 :
hjkl
(左, 下, 上, 右) - 词:
w
(下一个词) ,b
(词初) ,e
(词尾) - 行:
0
(行初) ,^
(第一个非空格字符) ,$
(行尾) - 屏幕:
H
(屏幕首行) ,M
(屏幕中间) ,L
(屏幕底部) - 翻页:
Ctrl-u
(上翻) ,Ctrl-d
(下翻) - 文件:
gg
(文件头) ,G
(文件尾) - 行数:
:{行数}<CR>
或者{行数}G
({ 行数 } 为行数 ) - 杂项:
%
(找到配对,比如括号或者 / / 之类的注释对) - 查找:
f{字符}
,t{字符}
,F{字符}
,T{字符}
- 查找 / 到 向前 / 向后 在本行的 { 字符 }
,
/;
用于导航匹配
- 搜索 :
/{正则表达式}
,n
/N
用于导航匹配
Vim 强大的编辑能力来自于其普通模式命令。普通模式命令往往需要一个操作符结尾。例如普通模式命令 "dd" 删除当前行,但是第一个 "d" 的后面可以跟另外的移动命令来代替第二个 "d",比如用移动到下一行的 "j" 键就可以删除当前行和下一行。另外还可以指定命令重复次数,"2dd"(重复 "dd" 两次
在普通模式中,有很多方法可以进入插入模式。比较普通的方式是按 "a"(append/追加)键或者 "i"(insert/插入)键。
V.1.2 插入模式 ¶
在普通模式中,键入 i
进入插入模式。
这时的编辑器和我们平时使用的基本相同。但是所有你需要用鼠标做的事,你现在都可以用键盘:采用编辑命令和移动命令的组合来完成。这就是 Vim 的界面开始看起来像一个程序语言的时候。Vim 的编辑命令也被称为 “动词”,因为动词可以施动于名词。
i
进入插入模式- 但是对于操纵 / 编辑文本,不单想用退格键完成
O
/o
在之上 / 之下插入行d{移动命令}
删除 { 移动命令 }- 例如,
dw
删除词 ,d$
删除到行尾 ,d0
删除到行头。
- 例如,
c{移动命令}
改变 { 移动命令 }- 例如,
cw
改变词 - 比如
d{移动命令}
再i
- 例如,
x
删除字符(等同于dl
)s
替换字符(等同于xi
)- 可视化模式 + 操作
- 选中文字 ,
d
删除 或者c
改变
- 选中文字 ,
u
撤销 ,<C-r>
重做y
复制 / “yank” (其他一些命令比如d
也会复制)p
粘贴- 更多值得学习的 : 比如
~
改变字符的大小写
在这个模式中,大多数按键都会向文本缓冲区中插入文本。大多数新用户希望文本编辑器编辑过程中一直保持这个模式。
在插入模式中,可以按 ESC 键回到普通模式。
V.1.3 可视模式 ¶
这个模式与普通模式比较相似。但是移动命令会扩大高亮的文本区域。高亮区域可以是字符、行或者是一块文本。当执行一个非移动命令时,命令会被执行到这块高亮的区域上。Vim 的 " 文本对象 " 也能和移动命令一样用在这个模式中
- 可视化:
v
- 可视化行:
V
- 可视化块:
Ctrl+v
可以用移动命令来选中
V.1.4 选择模式 ¶
这个模式和无模式编辑器的行为比较相似(Windows 标准文本控件的方式
V.1.5 命令模式 ¶
在普通模式下键入 :
进入命令模式。 在键入 :
后,你的光标会立即跳到屏幕下方的命令行。 这个模式有很多功能,包括打开,保存,关闭文件,以及 退出 Vim。
:q
退出(关闭窗口):w
保存(写):wq
保存然后退出:e {文件名}
打开要编辑的文件:ls
显示打开的缓存:help {标题}
打开帮助文档:help :w
打开:w
命令的帮助文档:help w
打开w
移动的帮助文档
V.1.6 Ex 模式 ¶
这和命令模式比较相似,在使用 ":visual" 命令离开 Ex 模式前,可以一次执行多条命令
V.1.7 扩展 ¶
V.1.7.1 计数 ¶
你可以用一个计数来结合“名词”和“动词”,这会执行指定操作若干次。
3w
向后移动三个词5j
向下移动 5 行7dw
删除 7 个词
V.1.7.2 修饰语 ¶
你可以用修饰语改变“名词”的意义。修饰语有 i
,表示“内部”或者“在内”,和 a
, 表示“周围”。
ci(
改变当前括号内的内容ci[
改变当前方括号内的内容da'
删除一个单引号字符串, 包括周围的单引号
V.1.8 演示 ¶
missing-semester 给我们举了一个实例并给出了详细的步骤,请读者自行学习,这一段建议观看 Youtube 视频,视频非常友好地在右下角给出了当时按键及其顺序。
VI 缓存, 标签页, 窗口 ¶
Vim 会维护一系列打开的文件,称为“缓存”。一个 Vim 会话包含一系列标签页,每个标签页包含 一系列窗口(分隔面板
Vim 默认打开一个标签页,这个标签也包含一个窗口。
VII 扩展资料 ¶
vimtutor
是一个 Vim 安装时自带的教程- Vim Adventures 是一个学习使用 Vim 的游戏
- Vim Tips Wiki
- Vim Advent Calendar 有很多 Vim 小技巧
- Vim Golf 是用 Vim 的用户界面作为程序语言的 code golf
- Vi/Vim Stack Exchange
- Vim Screencasts
- Practical Vim(书籍)
其他还有关于 vim 的讲解,但我似乎看不太懂,放着放着,先等把上面理解吧。
$$