高效率编辑器 VIM-操作篇,非常适合 VIM 新手
有效的移动大段的文本
使用可视选择(visual selections)和合适的选择模式
不像最初的 VI,VIM 允许你高亮(选择)一些文本,并且进行操作。这里有三种可视选择模式:
- v:按字符选择。经常使用的模式,所以亲自尝试一下它。
- V:按行选择。这在你想拷贝或者移动很多行的文本的时候特别有用。
- <C-V>:按块选择。非常强大,只在很少的编辑器中才有这样的功能。你可以选择一个矩形块,并且在这个矩形里面的文本会被高亮。
在选择模式的时候使用上面所述的方向键和命令(motion)。比如,vwww,会高亮光标前面的三个词。Vjj 将会高亮当前行以及下面两行。
在可视选择模式下剪切和拷贝
一旦你高亮了选区,你或许想进行一些操作:
- d:剪贴选择的内容到剪贴板。
- y:拷贝选择的内容到剪贴板。
- c:剪贴选择的内容到剪贴板并且进入插入模式。
在非可视选择模式下剪切和拷贝
如果你很清楚的知道你想拷贝或者剪切什么,那你根本就不需要进入可视选择模式。这样也会节省时间:
- d{motion}:剪切 motion 命令跨过的字符到剪贴板。比如,dw 会剪切一个词而 dfS 会将从当前光标到下一个 S 之间的字符剪切至剪贴板。
- y{motion}:和上面类似,不过是拷贝。
- c{motion}:和 d{motion} 类似,不过最后进入插入模式。
- dd:剪切当前行。
- yy:拷贝当前行。
- cc:剪切当前行并且进入插入模式。
- D:剪切从光标位置到行尾到剪贴板。
- Y:拷贝当前行。
- C:和 D 类似,最后进入插入模式。
- x:剪切当前字符到剪贴板。
- s:和x类似,不过最后进入插入模式。
粘贴
粘贴很简单,按 p。
使用多重剪贴板
很多编辑器都只提供了一个剪贴板。VIM 有很多。剪贴板在 VIM 里面被称为寄存器(Registers)。你可以列出当前定义的所有寄存器名和它们的内容,命令为“:reg”。最好使用小写字母来作为寄存器的名称,因为大写的有些被 VIM 占用了。
使用寄存器的命令为双引号 “。
比如:我们要拷贝当前行到寄存器 k。你应该按 “kyy。(你也可以使用 V”ky。为什么这样也可以呢?)现在当前行应该已经存在了寄存器 k 里面直到你又拷贝了一些东西进入寄存器 k。现在你可以使用命令 “kp 来粘贴寄存器 k 里面的内容到你想要的位置。
避免重复
令人惊奇的 . 命令
在 VI 里面,输入 . (小数点符号),将会重复你输入的上一个命令。比如,你上个命令为“dw”(删除一个词),VI 将会接着再删除一个词。
使用数字
使用数字也是 VIM 强大的而且很节省时间的重要特性之一。在很多 VIM 的命令之前都可以使用一个数字,这个数字将会告诉 VIM 这个命令需要执行几次。比如:
- 3j 将会把光标向下移动三行。
- 10dd 将会删除十行。
- y3″ 将会拷贝从当前光标到第三个出现的引号之间的内容到剪贴板。
数字是扩展 motion 命令作用域非常有效的方法。
记录宏
有时候,你会发现你自己在文章的每段或者每行都重复相同的一系列动作。VIM 允许你记录一个宏来完成你的特殊需要。
- qregister:记录宏到寄存器 register,这里 register 是任意的你的寄存器的名字。比如 qa,将会记录并且把宏存在寄存器 a 里面。
- q:结束宏的记录。
- @register:使用存在寄存器 register 的宏。比如 @a,将会使用存在寄存器 a 里面的宏。
必须要记住的是,宏只记录了你的系列按键并且重复执行它们。它们不是魔法。因为在 VIM 里面完成目的的方法有很多,所以有时候你要小心选择命令来记录你的宏。因为它们会在所有你要执行它的地方执行。
用 VIM 写代码
VIM 是一个用来写代码的绝好编辑器,因为它有一些特性是专门为程序员而设计的。这里是一些常用的:
- ]p:和 p 的功能差不多,但是它会自动调整被粘贴的文本的缩进去适应当前代码的位置。试一下!
- %:匹配花括号、方括号、括号等。在一个括号的上面,然后按 %,鼠标就会出现在匹配的另外一半括号处。
- >>:缩进所有选择的代码
- <<:和上面类似,但是反缩进
- gd:到达光标所在处函数或者变量的定义处。
- K:在 Man 里面查找光标当前所在处的词。
Pages: 1 2
建议使用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 新手) [...]
虽然一直有用VIM,但好久没有好好的深入学习了,发现效率要提高很多,谢了。