高效率编辑器 VIM-操作篇,非常适合 VIM 新手
虽然从很久前就开始用 VIM 了,但一直都是半调吊子,翻来覆去只用自己会的命令。最近为了提高书写代码的效率,还有 coding 时候的乐趣,又重新钻研了一下 VIM,发现了一篇很好的 VIM 入门的文章,原文是英文版的,我觉得非常适合 VIM 使用入门,所以翻译了过来。这里是简单的介绍了 VIM 的操作方式,并没有说为什么要用 VIM,如果你想知道答案可以去 Google,VIM 被誉为编辑器之神。
这篇教程写了在不同工作模式下使用 VIM 的一些基本技巧——即插入模式(insert mode), 命令模式(command mode), 存取文件等。目的是帮助刚刚接触 VIM 的新手更加有效率的使用这个出色的编辑器。
说明:在这篇文章里面,<C-X> 代表 Ctrl + X——就是按住 Ctrl 键然后再按 X。而且你可以在很多情况下使用 :help command 来获得大部分命令的帮助,这个是 VIM 的内部帮助文件命令。
高效率移动
在插入模式之外
基本上来说,你应该尽可能少的呆在插入模式里面,因为在插入模式里面 VIM 就像一个“哑巴”编辑器一样。很多新手都会一直呆在插入模式里面,因为这样易于使用。但 VIM 的强大之处在于他的命令行模式!你会发现,在你越来越了解 VIM 之后,你就会花越来越少的时间使用插入模式了。
使用 h、j、k、l
使用 VIM 高效率编辑的第一步,就是放弃使用箭头键。使用 VIM,你就不用频繁的在箭头键和字母键之间移来移去了,这会节省你很多时间。当你在命令模式时,你可以用 h、j、k、l 来分别实现左、下、上、右箭头的功能。一开始可能需要适应一下,但一旦习惯这种方式,你就会发现这样操作的高效之处了。
在你编辑你的电子邮件或者其他有段落的文本时,你可能会发现使用方向键和你预期的效果不一样,有时候可能会一次跳过了很多行。这是因为你的段落在 VIM 看来是一个大的长长的行。这时你可以在按 h、j、k 或者 l 之前键入一个 g,这样 VIM 就会按屏幕上面的行如你所愿的移动了。
在当前行里面有效的移动光标
很多编辑器只提供了简单的命令来控制光标的移动(比如左、上、右、下、到行首/尾等)。VIM 则提供了很多强大的命令来满足你控制光标的欲望。当光标从一点移动到另外一点,在这两点之间的文本(包括这两个点)称作被“跨过”,这里的命令也被称作是 motion。(简单说明一下,后面会用到这个重要的概念)
这里是常用到的一些命令(motion):
- fx:移动光标到当前行的下一个 x 处。很明显,x 可以是任意一个字母,而且你可以使用 ; 来重复你的上一个 f 命令。
- tx:和上面的命令类似,但是是移动到 x 的左边一个位置。(这真的很有用)
- Fx:和 fx 类似,不过是往回找。
- w:光标往前移动一个词。
- b:光标往后移动一个词。
- 0:移动光标到当前行首。
- ^:移动光标到当前行的第一个字母位置。
- $:移动光标到行尾。
- ):移动光标到下一个句子。
- ( :移动光标到上一个句子。
在整个文件里面有效移动光标
VIM 有很多命令,可以用来到达文件里面你想到达的地方。下面是一些在文件里面移动的命令:
- <C-F>:向下移动一屏。
- <C-B>:向上移动一屏。
- G:到文件尾
- numG:移动光标到指定的行(num)。(比如 10G 就是到第 10 行)
- gg:到文件首
- H:移动光标到屏幕上面
- M:移动光标到屏幕中间
- L:移动光标到屏幕下面
- *:读取光标处的字符串,并且移动光标到它再次出现的地方。
- #:和上面的类似,但是是往反方向寻找。
- /text:从当前光标处开始搜索字符串 text,并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话,按 n。
- ?text:和上面类似,但是是反方向。
- ma:在当前光标的位置标记一个书签,名字为 a。书签名只能是小写字母。你看不见书签的存在,但它确实已经在那里了。
- `a:到书签 a 处。注意这个不是单引号,它一般位于大部分键盘的 1 的左边。
- `.:到你上次编辑文件的地方。这个命令很有用,而且你不用自己去标记它。
高效的输入
使用关键词自动完成
VIM 有一个非常漂亮的关键词自动完成系统。这表示,你可以输入一个长词的一部分,然后按一下某个键,然后 VIM 就替你完成了这个长词的输入了。举个例子:你有一个变量名为 iAmALongAndAwkwardVarName 在你写的代码的某个地方。也许你不想每回都自己一个一个字母的去输入它。
使用关键词自动完成功能,你只需要输入开始几个字母(比如 iAmAL),然后按 <C-N>(按住 Ctrl,再按 N)或者 <C-P>。如果 VIM 没有给出你想要的词,继续按,直到你满意为止,VIM 会一直循环它找到的匹配的字符串。
聪明的进入插入模式
很多新手进入插入模式都只是用 i。这样当然可以进入插入模式,但通常不是那么合适,因为 VIM 提供了很多进入插入模式的命令。下面是最常用的一些:
- i:在当前字符的左边插入
- I:在当前行首插入
- a:在当前字符的右边插入
- A:在当前行尾插入
- o:在当前行下面插入一个新行
- O:在当前行上面插入一个新行
- c{motion}:删除 motion 命令跨过的字符,并且进入插入模式。比如:c$,这将会删除从光标位置到行尾的字符并且进入插入模式。ct!,这会删除从光标位置到下一个叹号(但不包括),然后进入插入模式。被删除的字符被存在了剪贴板里面,并且可以再粘贴出来。
- d{motion}:和上面差不多,但是不进入插入模式。
Pages: 1 2
版权声明: 允许非商业性转载,但转载时必须标明作者及原文链接.
本文网址: http://linuxtoy.org/archives/efficient-editing-with-vim.html
建议使用vimtutor学习vim,提供了联机的教程,可以直接进行操作练习,非常直观
半调子 不对,应该是 半吊子
另:其实我的mail是
today.xa#gmail+com
@today:谢谢你的纠正。
居然打错了~~ 我回家补语文去。。。
[...] LinuxTOY » 高效率编辑器 VIM-操作篇,非常适合 VIM 新手 (tags: vim) [...]
好文!
toy,你好.
似乎上面有几个指令在gvim中无法实现.请问windows平台下gvim版本和vim指令是完全通用的吗?
在Ubuntu上apt了vim-gnome
但碰到一个问题,如果文本文件是中文文件名,双击打开无法正确显示
但从终端下用
$gvim 中文文本文件名
却可以正常工作,虽然使用上没有什么问题,但还是不方便
强文
@albertleemon:我没有过在 Windows 中使用 VIM 的经验,所以不确定你的疑问是否真的存在,抱歉。也许,你可以从 VIM 手册中找到平台、版本间的差别。
...
w:光标往前移动一个词。
b:光标往后移动一个词。
...
这个地方好像没有写对吧。b应该是往前一个单词,w是往后一个单词。
我用的是version 6.3.71
w Move the cursor forward by a word.
b Move the cursor backward by a word.
看了原文突然想起来,这个向前向后其实不同的人应该理解不一样哈。其实方向都是一样的。真不好意思哈
很有益处,谢谢
gvim 双击中文文件的使用方法:
find / | grep gvim.desktop
用编辑器打开,
其中的EXEC的内容是gvim -f %U
就是因为有这个%U所以直接点击打开中文文件的时候文件名解析不对。
去掉。
另外-f会对latex-vim套件有影响,只可以编译(ll),不可以预览(lv),去掉以后就行了。
w Move the cursor forward by a word.
b Move the cursor backward by a word.
-------------------------------------
个人以为这里翻译成“向后移动”和“向左移动”比“前”和“后”更容易理解。
在全文搜索时,这两个单词则可翻译为“下”和“上”。
It 's really helpful. Thank you so much. ^_^
Really helpful!
Love vim now!
Thanks!^_^
[...] 文本编辑:既然已经有了 VIM、Emacs,那么我们还奢求什么呢? [...]
问下,这篇日志的分页功能是如何实现的?就是日志下的page 1 2
@yegle: WP 内置的,在编辑文章时插入
<!--nextpage-->即可。@toy
thx,没怎么细细研究wp……
[...] 高效率编辑器 VIM这篇教程写了在不同工作模式下使用 VIM 的一些基本技巧——即插入模式(insert mode), 命令模式(command mode), 存取文件等。目的是帮助刚刚接触 VIM 的新手更加有效率的使用这个出色的编辑器。 [...]
手把手教你把Vim改装成一个IDE编程环境(图文)
http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx
如果使用/text来搜索text,可以用大写的N来往前搜索。
你好,这篇文章已经收藏到我的博客里。
欢迎光临:http://hi.baidu.com/ext3/
你好,你的文章我转走了。
http://mcooldog.blog.ubuntu.org.cn/
[...] 高效率编辑器 VIM-操作篇,非常适合 VIM 新手 — LinuxTOY (tags: vim tutor linux tips tutorial guide) [...]
好文,我也转。
http://www.ken1ken.com/user/flytwokites/
Thanks very much. This article really helps!
[...] 转载自:http://linuxtoy.org/archives/efficient-editing-with-vim.html [...]
@albertleemon
我的xp下的gvim7.1可实现上述全部功能
[...] Toy Posted in Tutorials , Text Editor , Featured Post RSS Trackback 虽然从很久前就开始用 VIM [...]
[...] 附:常用到的一些命令(motion):(来自于高效率编辑器 VIM-操作篇,非常适合 VIM 新手) [...]