Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1530846
  • 博文数量: 226
  • 博客积分: 3997
  • 博客等级: 少校
  • 技术积分: 2369
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-19 17:26
个人简介

Never save something for a special occasion. Every day in your life is a special occasion.

文章分类

全部博文(226)

文章存档

2018年(5)

2017年(11)

2016年(1)

2015年(17)

2014年(14)

2013年(30)

2012年(5)

2011年(52)

2010年(107)

分类:

2010-10-25 20:34:29

VIM新手之 高效操作

 

VIM 被誉为编辑器之神。我使用已经一年,却还是个半掉子,一直只使用几个简单的命令。最近为了提高书写代码的效率,还有coding的乐趣,再次学习 VIM。发现一篇 VIM 入门好文章,于是翻译过来分享给vim菜鸟们(说菜鸟并没有鄙视的意思,我们都需要努力并善于学习,不是吗?)。


这篇教程写了在不同工作模式下使用 VIM 的一些基本技巧——即插入模式(insert mode), 命令模式(command mode), 可视选择模式(visual selections)等。希望帮助新手们高效地使用vim这个出色的编辑器。

说明:
文章中 代表 Ctrl + X。
:help command 可以获得大部分命令的帮助。

 

高效移动

在插入模式之外

一般地,应尽量少地呆在插入模式里,因为在插入式中 VIM 就像一个“哑巴”编辑器。很多新手习惯呆在插入模式里,觉得这样易于使用。但 VIM 的强大之处在命令行模式!

vim的方向键 h、j、k、l

由win编辑器转向vim的第一步,放弃使用方向键。不用频繁地在方向键和字母键之间移来移去,可以节省时间。在命令模式可用 h、j、k、l 分别实现左、下、上、右方向键的功能。

在h、j、k、l 前键入一个 g,这样 VIM 就会按屏幕上面的行如你所愿的移动了。

// 先输入数字n再按 h/j/k/l 可实现朝指定方向移动n次

行内移动光标

常用到的一些命令(motion):

  • fx:当前行下一个x。x可以是任意一个字母。可以使用 ; 来重复 f 命令。
  • tx:与fx类似,只是光标停在x的左边。
  • Fx:和 fx 方向相反。
  • w:下一词首。
  • b:和 w 方向相反。
  • 0:数字0,光标移到当前行首。
  • ^:与0相似,只是光标停在第一个非空格字符上。
  • $:行尾。
  • ):下一个句子。
  • (:上一个句子。

文件内移动光标

  • :下移一屏;
  • :上移一屏。
  • G:到文件尾 ;
  • numG:到指定行(num);
  • gg:到文件首 。
  • H:移动光标到屏幕上面 ;
  • M:移动光标到屏幕中间 ;
  • L:移动光标到屏幕下面 。
  • *:向前查找当前光标处字符;
  • #:和 * 方向相反。
  • /text:向前搜索串 text。按 n 重复上次的搜索;
  • ?text:和/text方向相反。
  • ma:在光标位置标记一个书签,书签名 a。书签名只能是小写字母;书签是不可见的。
  • `a:到书签 a 处。注意这是反引号(位于Esc键下方)
  • `.:到上次编辑的地方。very useful!

 

高效输入

使用关键词自动完成

VIM 的关键词自动完成系统功能,举例说明:你有一个变量名为 iAmALongAndAwkwardVarName 但你不用每次都逐字符输入它,使用关键词自动完成功能,你只需要输入开始几个字母(比如 iAmAL),然后按 或者 。如果 VIM 没有给出你想要的词,继续按,VIM 会一直找到匹配的字符串。

聪明地进入插入模式

VIM 提供了很多进入插入模式的命令。常用的一些:

  • i:字符左边插入
  • I:行首插入
  • a:字符右边插入
  • A:行尾插入
  • o:下面插入新行
  • O:上面插入新行
  • c{motion}:删除 motion 命令跨过的字符,并且进入插入模式。比如:
    c$,删除从光标位置到行尾的字符并且进入插入模式。
    ct!,这会删除从光标位置到下一个叹号(不包括!),然后进入插入模式。
    被删除的字符保留在剪贴板中,可用于粘贴。
  • d{motion}:和上面差不多,但是不进入插入模式。

 

移动大段文本

使用可视选择(visual selections)和合适的选择模式

相对VI增强的功能,VIM 允许你高亮(选择)一些文本,并且进行操作。这里有三种可视选择模式:

  • v:按字符选择。
  • V:按行选择。
  • :按块选择。非常强大,少有编辑器支持。你可以选择一个矩形块,并且在这个矩形里面的文本会被高亮。 效果如 dos 黑窗里的“标记”命令。

在选择模式的时候使用上面所述的方向键和命令(motion),比如 vwww 会高亮光标前面的三个词。Vjj 将会高亮当前行以及下面两行。

在可视选择模式下剪切和拷贝

一旦你高亮了选区,你或许想进行一些操作:

  • d:剪贴
  • y:拷贝
  • c:剪贴并进入插入模式

在非可视选择模式下剪切和拷贝

下面的命令实现准确地剪切,不需要进入 visual selections 模式:

  • d{motion}:剪切 motion 命令跨过的字符到剪贴板。比如 dw 剪切一个词, 而 dfS 剪切至下一个 S 之间的字符(包括S)。
  • y{motion}:和 d{motion} 类似,只是拷贝。
  • c{motion}:和 d{motion} 类似,并且进入插入模式。
  • dd:剪切当前行。
  • yy:拷贝当前行。
  • cc:剪切当前行并且进入插入模式。
  • D:剪切至行尾。同 d$
  • Y:拷贝当前行。
  • C:和 D 类似,并且进入插入模式。同 c$
  • x:剪切当前字符到剪贴板。
  • s:和x类似,不过最后进入插入模式。

粘贴

粘贴很简单,按 p。

使用多重剪贴板

VIM 有很多剪贴。剪贴板在 VIM 里面被称为寄存器(Registers)。你可以列出当前定义的所有寄存器名和它们的内容,命令为“:reg”。最好使用小写字母来作为寄存器的名称,因为大写的有些被 VIM 占用了。

使用寄存器的命令为双引号 "。比如:我们要拷贝当前行到寄存器 k。你应该按 "kyy(也可以使用 V"ky)。现在当前行应该已经存在了寄存器 k 里面。现在你可以使用命令 "kp 来粘贴寄存器 k 里面的内容。

 

避免重复

令人惊奇的 . 命令

可以使用 . (小数点符号)重复执行上一个命令。比如 上个命令为 dw (删除一词),现在输入.将再删一词。

使用数字

使用数字也是 VIM 的省时技术之一。很多 VIM 命令之前都可以使用一个数字,告诉 VIM 命令需要执行几次。比如:

  • 3j 光标向下移三行。
  • 10dd 删除十行。
  • y3" 拷贝到第三个出现的引号之间的内容。

数字是扩展 motion 命令作用域非常有效的方法。

记录宏

有时,你需要在文章的每段或者每行都重复相同的一系列动作。VIM 允许你记录一个宏来完成你的特殊需要。

  • qRegister:记录宏到寄存器 Register,Register 是任意的寄存器名字。比如 qa。
  • q:结束宏的记录。
  • @Register:使用存在寄存器 Register 的宏。比如 @a

必须要记住的是,宏只记录了你的系列按键并且重复执行它们。因为在 VIM 里面完成目的的方法有很多,所以有时候你要小心选择命令来记录你的宏。因为它们会在所有你要执行它的地方执行。

 

用 VIM 写代码

VIM 也是一个绝好的代码编辑器,它的一些特性是专为程序员设计的。一些常用的:

  • ]p:粘贴并自动缩进被粘贴的文本以适应当前代码的位置。
  • %:定位到配对的花括号、方括号、括号等。
  • >>:缩进所选择的代码;
  • <<:和 << 方向相反。 
  • gd:转到光标所在函数或者变量的定义处。
  • K:在 Man 里面查找光标当前所在处的词。

[|翻译Jay | 删简 pz]

阅读(1022) | 评论(0) | 转发(0) |
0

上一篇:十名感人的英语句子

下一篇:软件清单

给主人留下些什么吧!~~