post

Vim zh-cn:简介

Vim 是什么?

Vim 是一个文本编辑器,可用于编辑任意类型的文本,无论是购物清单、书稿,还是软件代码。

Vim 之所以与众不同,是因为它是少有的几个很强很简单的软件之一。

简单意味着它很容易上手。简单意味着它简约的界面,你可以专注在主要任务上,即编辑。简单意味着它源于不多的几个核心理念,你深入学习它时一点也不费力气。

强大意味着做起事情来,更快、更好、更容易。强大意味着它把不那么简单的事情变为可能。强大并不意味着复杂,而是“事半功倍”

Vim 能做什么?

你可能会说:“不就是一个文本编辑器嘛,它能做什么大不了的”?

此言差矣。

我们随意看些例子,比如比较 Vim 和你目前的编辑器。这个练习的要点是针对每个例子你都要回答一个问题:“用我目前的编辑器该怎么来做到呢?”

注意
别太在意这里所给的 Vim 命令的细节,重要的是使你明白这一切都是可能的,并非如何用它去做到的。那些是本书后文要讲的内容。

编辑

在 Vim 里

如何把光标下移 7 行?

7j

如何删除一个单词?(译注:英文书写中最大的特点是,单词和单词之间会有空格或标点隔开。)

dw

如何在文件中搜索当前光标所在的单词?

*

如何只在第 50 到 100 行之间查找并替换?

执行 :50,100s/old/new/g

如果想同时看同一个文件的两个不同的部分呢?

执行 :sp 来’分割’视图

如果要打开当前光标下的文件呢?

gf (意思是 ‘g’o to this ‘f’ile,转到这个文件)

如果想选一个更好的配色方案呢?

执行 :colorscheme desert 来选择 ‘desert’ 配色方案(我的最爱)

如果想映射键盘快捷键 ctrl-s 来保存文件呢?

执行 :nmap <c-s>:w<CR>。注意 <CR> 是指’c’arriage ‘r’eturn,也就是回车键。

如果你想保存当前打开的文件组以及任何修改过的设置,以便日后继续编辑,该怎么办呢?

执行 :mksession ~/latest_session.vim,下次用 vim -S ~/latest_session.vim 打开 Vim。

如果想让代码语法着色呢?

执行 :syntax on。 如果它没有正确的识别出该语言,比如,可以这样执行 :set filetype=Wikipedia

如果想让代码的不同的部分折叠起来,以便每次只注意其中的某个部分上呢?

执行 :set foldmethod=indent,这里假设你的文件是适当缩进过的。还有一些其他的折叠方式。

如果想在标签中打开多个文件呢?

使用 :tabedit <file> 来在“标签”中打开多个文件(就像浏览器多标签一样),使用 ctrl-pgup/ctrl-pgdn 在标签之间切换。

你在文档中经常使用一些词汇,在下次用到该词的时候有没有办法可以快速的插入呢?

ctrl-n 看一下根据当前词“自动补全”的候选词列表,它是基于该文档中所有出现过的词汇。此外,可以使用 :ab mas Maslow's hierarchy of needs 指定缩写的自动扩展,下次你只需键入 m a s <space> 即可。

一些资料中有且仅有每行的前 10 个字符是有用的,如何只得到这些资料呢?

ctrl-v,选择相应的文本并按 y 来复制被选的行和列。

如果你收到一份全大写的文档,读起来很头疼,怎么把它转换为小写的呢?

在 Vim 中,执行如下脚本:

:for i in range(0, line('$'))
:    call setline(i, tolower(getline(i)))
:endfor

别担心,更多的细节会在后续的章节中作探讨。另外一个更好的办法是执行 :%s#\(.\)#\l\1#g,话说回来,还是更容易想到上一种办法。

其实还有一种更简单的办法,键入 (1GVG) 全选文本,再按 u 把文本转换为小写,不过呢,这样太简单了,不如上面的办法,可以秀一秀让 Vim 一步步执行动作是多么的酷。

呦,该服了吧?

在以上示例中,你已经看到了 Vim 在实战中的强大。任何其他编辑器要实现同等的功能都可能会麻烦的不得了。另外,让人惊奇的是,所有的这些强大的功能都很容易理解。

要注意到,上述示例中,鼠标一次也没有被用到!这可是件好事。数数每一天你的手要在键盘和鼠标之前移动多少下,你就会意识到尽可能避免它的好处了。

千万别看到这些功能就晕头转向了。Vim 最棒的地方就是,你不需要了解它全部的、富有成效的功能,你只需要了解一些基本概念。只要你掌握了这些基本概念,在需要时,很容易就学会其他的任何功能了。


Advertisements