关闭

高效率编辑器 VIM-操作篇

标签: vim
148人阅读 评论(0) 收藏 举报

插入操作

“i” — 从光标所在位置前开始

“I” –光标移到当前行的行首,然后在其前插入文本

“a”– 光标当前所在位置之后追加新文本

“A” –命令将把光标挪到所在行的行尾

“o” — 在当前行的下面插入新行

“O” — 在当前行的上面插入新行

移动操作

按字移动光标

在vim中,”字”有两种含义:

a. 广义的字,它可以是两个空格之间的任何内容。如:{int k;它只有2个字,一个是{int ,另一个是k;

b. 狭义的字,英文单词、标点符号和非字母字符(如$、%、^、&、*、(、)、-、+、{、}、[、]、~、|、\、<、>、/等)均被当成是一个字。上面那一行中就包括{、int、k、;这4个字。


vim中使用大写命令一般就是指将字作为广义来对待,使用小写命令就是作为狭义对待。

1. w和W命令:将光标右移至下一个字的字首,它们的区别是:w命令,把光标移到下一个字(狭义)的字首,W命令,将把光标移到下一个字(广义)的字首。

2. e和E命令(end of word):如果光标起始位置处于字内(即非字尾处),则该命令将把光标移到本字字尾;如果光标起始位置处于字尾,则该命令将把光标移动到下一个字的字尾。

3. b和B命令(backward):如果光标处于所在字内(即非字首),则该命令将把光标移至本字字首;如果光标处于所在字字首,则该命令将把光标移到上一个字的字首.


在当前行里面有效的移动光标

很多编辑器只提供了简单的命令来控制光标的移动(比如左、上、右、下、到行首/尾等)。VIM 则提供了很多强大的命令来满足你控制光标的欲望。当光标从一点移动到另外一点,在这两点之间的文本(包括这两个点)称作被“跨过”,这里的命令也被称作是 motion。(简单说明一下,后面会用到这个重要的概念)

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

fx:移动光标到当前行的下一个 x 处。很明显,x 可以是任意一个字母,而且你可以使用 ; 来重复你的上一个 f 命令。

tx:和上面的命令类似,但是是移动到 x 的左边一个位置。(这真的很有用)

Fx:和 fx 类似,不过是往回找。

w:光标往后移动一个词。

b:光标往前移动一个词。

^:移动光标到当前行的第一个字母位置。

$:移动光标到行尾。

):移动光标到下一个句子。

( :移动光标到上一个句子。


在整个文件里面有效移动光标

*:读取光标处的字符串,并且移动光标到它再次出现的地方。

#:和上面的类似,但是是往反方向寻找。


高效的输入

使用多重剪贴板

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

使用寄存器的命令为双引号 “。

比如:我们要拷贝当前行到寄存器 k。你应该按 “kyy。(你也可以使用 V”ky。为什么这样也可以呢?)现在当前行应该已经存在了寄存器 k 里面直到你又拷贝了一些东西进入寄存器 k。现在你可以使用命令 “kp 来粘贴寄存器 k 里面的内容到你想要的位置。

避免重复

令人惊奇的 . 命令

在 VI 里面,输入 . (小数点符号),将会重复你输入的上一个命令。比如,你上个命令为“dw”(删除一个词),VI 将会接着再删除一个词。

使用数字

y3″ 将会拷贝从当前光标到第三个出现的引号之间的内容到剪贴板。

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

记录宏

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

qregister:记录宏到寄存器 register,这里 register 是任意的你的寄存器的名字。比如 qa,将会记录并且把宏存在寄存器 a 里面。

q:结束宏的记录。

@register:使用存在寄存器 register 的宏。比如 @a,将会使用存在寄存器 a 里面的宏。

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

用 VIM 写代码

VIM 是一个用来写代码的绝好编辑器,因为它有一些特性是专门为程序员而设计的。这里是一些常用的:

]p:和 p 的功能差不多,但是它会自动调整被粘贴的文本的缩进去适应当前代码的位置。试一下!

%:匹配花括号、方括号、括号等。在一个括号的上面,然后按 %,鼠标就会出现在匹配的另外一半括号处。

K:在 Man 里面查找光标当前所在处的词。

[+ctrl+d:  跳转到#define处

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:10076次
    • 积分:431
    • 等级:
    • 排名:千里之外
    • 原创:31篇
    • 转载:22篇
    • 译文:0篇
    • 评论:0条