forked from wuzhouhui/hacking_vim
-
Notifications
You must be signed in to change notification settings - Fork 0
/
preface.tex
194 lines (152 loc) · 8.86 KB
/
preface.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
% vim: ts=4 sts=4 sw=4 et tw=75
\chapter{前言}
\label{chap:preface}
\marginpar{1}
在计算机发展的早期, 系统资源非常有限, 开发人员必须想尽办法优化他们的应
用程序, 文本编辑器也是如此. Vim 是当时最流行的编辑器之一, 因为系统资源
方面的限制, 它被优化得近乎完美.
从那以后, 计算机技术得到了快速的发展, 虽然系统资源已经没有以前那么紧张
了, 但是 Vim 仍然坚持最初的原则.
乍看起来, Vim 好像并没有什么值得称道的地方, 但是, 如果你能透过它简单
的用户界面看到其本质, 就会明白为什么到了如今这个年代, Vim 仍然是众多
用户最喜爱的编辑器.
它几乎囊括了你想要的任何一个功能, 即使有所遗漏, 也可以通过插件或脚本
来实现. 正是由于其出色的灵活性, 使得它成为了众多任务的理想工具, 以及
世界上最先进的编辑器之一.
每天都有大量的新用户加入 Vim 社区, 并开始用 Vim 处理他们的日常工作.
虽然有时候使用起来比较复杂, 但是与其他编辑器相比, 人们还是更愿意
选择 Vim, 本书就是为这些用户而写.
通过阅读本书, 用户可以更加得心应手地使用 Vim, 从而提高工作效率. 他们得
到的不仅仅是一个优化的编辑器, 还有优化的工作流程. 本书帮助用户更加自如
地使用 Vim, 从把它当作一个简单的文本编辑器开始, 一直到其他日常工作, Vim
都可以胜任.
祝你阅读愉快!
\section*{本书主要讨论什么}
\marginpar{2}
第 \ref{chap:getting_started_with_vim} 章: 开始, 介绍 Vim 和它的几个
比较有名的亲戚, 并简要介绍它们和 vi 的关系及其历史.
第 \ref{chap:personalizing_vim} 章: 定制 Vim, 介绍如何配置 Vim, 使得
它更符合用户的个人需求. 主要介绍如何修改字体, 配色方案, 状态行, 菜单,
与工具条.
第 \ref{chap:better_navigation} 章: 快速导航, 介绍一些在多个文件中快速
导航的方法, 通过这些方法, 读者可以轻松地在多个文件之间穿梭.
第 \ref{chap:production_boosters} 章: 助推器, 介绍 Vim 的若干特性,
描述了模版, 自动补全, 折叠, 会话, 和寄存器的使用方法.
第 \ref{chap:advanced_formatting} 章: 格式化进阶, 讨论如何对文本和代码进
行格式化. 它还介绍了如何借助外部工具, 使得 Vim 更加完美.
第 \ref{chap:basic_vim_scripting} 章: Vim 脚本基础, 这一章是为那些想
通过脚本扩展 Vim 功能的人而准备的, 它介绍了脚本的基础知识, 经过
这一章的学习, 读者应该能够写出一些简单的脚本.
第 \ref{chap:extended_vim_scripting}: Vim 脚本进阶, 在第
\ref{chap:basic_vim_scripting} 章的基础上, 再继续讲一些高级的脚本知识,
包括如何在 Vim 脚本中使用外部的脚本语言.
附录 \ref{chap:vim_can_do_everything}: 无所不能的 Vim, 提供了一张游戏
列表, 它们都是用 Vim 脚本开发的, 这一章还简单讨论了如何使用脚本实现
聊天和邮件工具, 另外还介绍了如何将 Vim 作为一个 IDE 使用.
附录 \ref{chap:vim_configuration_alternatives}: Vim 配置管理, 展示如何
通过在线副本来更好地管理和获取 Vim 配置文件.
\section*{为了阅读本书, 你还需要什么}
最近十年, Vim 已经发展成一个功能非常丰富的编辑器, 这同时意味着最新版的某些
功能, 旧版可能并不支持.
Vim 已经移植到了多种平台, 但并不是所有的功能对任意一种平台来说都是可用
的. 这主要是因为有些功能使用了和操作系统密切相关的特性, 而这些特性在其他
平台中可能并不提供.
\marginpar{3}
本书只关注 Vim 使用最广泛的两种平台: Linux 与 Microsoft Windows. 由于 Linux
符合 Unix 标准, 所以同样的结论在其他类 Unix 系统中仍然成立.
\begin{warning}
读者可以在 \url{www.vim.org} 上找到最新版的 Vim 源代码与二进制包. 如果
读者使用的是 Linux, 那么系统中很可能已经安装了 Vim, 而且是默认的编辑器.
\end{warning}
\section*{本书的目标读者}
\label{sec:who_this_book_is_for}
如果读者已经是一位 Vim 用户, 而且想要学习更高级的技巧, 那么这本书就是为你
而写的. 本书致力于帮助读者从一位Vim 中级用户, 上升为高级用户.
\section*{Vim 新手?}
\label{sec:new_to_vim}
虽然本书假设读者已经具备了 Vim 的基本知识, 但即使是新手, 本书也有一定的参考
价值.
如果读者担心自己所掌握的 Vim 知识不足以阅读此书, 那么我建议你可以先看一下
Vimtutor, 在安装 Vim 时, 会顺带安装这个 Vim 入门教程.
运行 Vimtutor, 然后跟着它学习 Vim 的基本使用方法, 这大概需要 30 分钟.
Vimtutor 支持多国语言, 在启动程序时, 可以通过指定国家代码来选择一种语言,
国家代码由 2 个字母组成, 比如 ca, cs, de, el, eo, es, fr, hr, hu, it, ja,
no, ro, 和 zh. 例如, 如果想要阅读德语版的 Vimtutor, 只需要在命令行执行
\texttt{vimtutor de}.
\section*{排版约定}
\label{sec:conventions}
本书用不同风格的文本表示不同种类的信息, 这里有一些例子.
\marginpar{4}
包含在正文中的代码会这样显示: ``键入 \texttt{:help 'statusline'}, 就可
以打开 Vim 帮助系统, 查看与状态行有关的全部帮助信息.''
代码块则是:
\begin{vimcode}
function! InfoGuiTooltip()
"get window count
let wincount = tabpagewinnr(tabpagenr(),'$')
let bufferlist=''
"get name of active buffers in windows
for i in tabpagebuflist()
let bufferlist .= '['.fnamemodify(bufname(i),':t').'] '
endfor
return bufname($).' windows: '.wincount.' ' .bufferlist ' '
endfunction
\end{vimcode}
命令模式的输入或输出写成:
\begin{vimcode}
:amenu icon=/path/to/icon/myicon.png ToolBar.Bufferlist :buffers<cr>
\end{vimcode}
新的术语或重点内容加粗显示 \footnote{在中文版中并没有这样做, 因为没必要 ---
译者注}. 读者在屏幕上看到的内容,
比如菜单或对话框中的信息, 会显示成: ``这个命令在所有行的开头查找单词
Error (用脱字符 \textasciicircum 标记)''.
\begin{warning}
这种文本框用来显示警告或重要的提示.
\end{warning}
\begin{tips}
这种文本框用来显示技巧和决窍.
\end{tips}
\section*{读者反馈}
\label{sec:reader_feedback}
对于读者的反馈我们总是非常欢迎. 请把你关于这本书的想法告诉我们 --- 不管是
优点还是缺点, 读者的反馈永远是我们不断进步的源泉.
反馈信息请发送到 \texttt{\email{[email protected]}}, 并在邮件的主题中写上相关
的书名.
\marginpar{5}
如果读者想向我们推荐书籍, 请登陆 \url{www.packtpub.com}, 在表单
\texttt{SUGGEST A TITLE} 中填写相关的信息, 或者发送邮件到
\texttt{\email{[email protected]}}.
如果你对某个主题很有研究, 并且对写作也很感兴趣, 请阅读
\url{www.packtpub.com/authors} 的相关内容.
\section*{客户支持}
\label{sec:customer_support}
既然读者买了 Packt 出版的书籍, 那么我们会尽最大的努力让你觉得物有所值.
\begin{warning}
下载书中的示例源代码:
登陆 \url{http://www.packtpub.com/files/code/0509_Code.zip}, 下载书中
的示例源代码, 下载的文件中含有使用方法.
\end{warning}
\section*{勘误}
\label{sec:errata}
我们已经尽了最大的努力保证内容的正确性, 如果读者在书中发现
了错误 --- 这个错误可能出现在正文中, 也可能出现在代码中 --- 请把错误反馈
给我们. 通过反馈错误, 可以帮助其他读者更顺利地阅读, 也可以帮助我们提升
后续版本的质量. 无论读者发现了什么类型的错误, 请登陆到
\url{http://www.packtpub.com/support}, 选择对应的书籍, 点击 \texttt{let us
know}, 然后输入相关的勘误信息. 一旦勘误通过了校验, 你的提交信息就会被接受,
勘误也会上传到网页中, 或者加到书籍勘误列表, 这个列表可以在书籍的
\texttt{Errata}
部分找到. 登陆 \url{http://www.packtpub.com/support}, 选择对应的书籍,
读者就可以找到该书所有的已知勘误.
\section*{版权声明}
\label{sec:piracy}
因特网物品的版权一直是一个让人头疼的问题. Packt 对版权和授权的保护向来
非常重视, 态度也很坚决. 如果读者怀疑有人在因特网上非法复制我们的作品 ---
无论是什么形式 --- 请把相关的网址或网站名称发给我们
(\texttt{\email{[email protected]}}), 这样我们才能快速地追回损失. 希望读者能
和我们一起尊重作者的辛勤付出, 这样我们才能继续为你奉献精彩的作品.
\marginpar{6}
\section*{答疑}
\label{sec:questions}
无论你对书籍有什么疑问, 都可以联系我们: \texttt{\email{[email protected]}},
我们会尽最大的努力回答你的问题.