Linux.中国 - 开源社区

 找回密码
 骑士注册

QQ登录

微博登录


一些不起眼但非常有用的 Vim 命令

2015-1-15 10:08    评论: 22 收藏: 16 分享: 32    

如果我的关于这个话题的最新帖子没有提醒到你的话,那我明确地说,我是一个 Vim 的粉丝。所以在你们中的某些人向我扔石头之前,我先向你们展示一系列“鲜为人知的 Vim 命令”。我的意思是,一些你可能以前没有碰到过的命令,但可能对你来说很有用。作为第二免责声明,我不知道哪些命令是你可能知道的,以及哪些是对你来说有用的。因此这些命令实际上是一些相对少见,但很可能很有用的 Vim 命令。

保存文件并退出

说起来有些惭愧,我也是最近才学到这个命令

:x

和下面的命令是等价的:

:wq

都是保存当前文件并退出。

(译者注:这两个命令实际上并不完全等价,当文件被修改时两个命令时相同的。但如果未被修改,使用 :x 不会更改文件的修改时间,而使用 :wq 会改变文件的修改时间。)

基本计算器

在插入模式下,你可以使用 Ctrl+r 键然后输入 =,再输入一个简单的算式。按 Enter 键,计算结果就会插入到文件中。例如,尝试输入:

Ctrl+r '=2+2' ENTER

然后计算结果“4 ”会被插入到文件中。

查找重复的连续的单词

当你很快地打字时,很有可能会连续输入同一个单词两次,就像 this this。这种错误可能骗过任何一个人,即使是你自己重新阅读一遍也不可避免。幸运的是,有一个简单的正则表达式可以用来预防这个错误。使用搜索命令(默认时 /)然后输入:

\(\<\w\+\>\)\_s*\1

这会显示所有重复的单词。要达到最好的效果,不要忘记把下面的命令:

set hlsearch

放到你的 .vimrc 文件中高亮所有的匹配。

缩写

一个很可能是最令人印象深刻的窍门是你可以在 Vim 中定义缩写,它可以实时地把你输入的东西替换为另外的东西。语法格式如下:

:ab [缩写] [要替换的文字]

一个通用的例子是:

:ab asap as soon as possible

会把你输入的 “asap” 替换为 “as soon as possible”。

在你忘记用 root 方式打开文件时的文件保存

这可能是一个在论坛中一直受欢迎的命令。每当你打开一个你没有写入权限的文件(比如系统配置文件)并做了一些修改,Vim 无法通过普通的 “:w” 命令来保存。

你不需要重新以 root 方式打开文件再进行修改,只需要运行:

:w !sudo tee %

这会直接以 root 方式保存。

实时加密文本

如果你不想让别人看懂你的屏幕上的内容,你可以使用一个内置的选项,通过下面的命令使用 ROT13 来对文本进行编码:

ggVGg?

gg 把光标移动到 Vim 缓冲区的第一行,V 进入可视模式,G 把光标移动到缓冲区的最后一行。因此,ggVG 使可视模式覆盖这个当前缓冲区。最后 g? 使用 ROT13 对整个区域进行编码。

注意它可以被映射到一个最常使用的键。它对字母符号也可以很好地工作。要对它进行撤销,最好的方法就是使用撤销命令:u。

自动补全

这是另外一个令我感到惭愧的功能,但我发现周围很多人并不知道。Vim 默认有自动补全的功能。的确这个功能是很基本的,并且可以通过插件来增强,但它也很有帮助。方法很简单。Vim 尝试通过已经输入的单词来预测单词的结尾。比如当你在同一个文件中第二次输入 “compiler” 时,仅仅输入 “com” 然后保持在插入模式,按 Ctrl+n 键就可以看到 Vim 为你补全了单词。很简单,但也很有用。

比较两个文件的不同

你们中的大多数很可能都知道 vimdiff 命令,它可以使用分离模式打开 Vim 并比较两个文件的不同。语法如下:

$ vimdiff [文件1] [文件2]

但同样的结果也可以通过下面的 Vim 命令来获得:

:diffthis

首先在 Vim 中打开原始文件。然后使用分离模式带来第二个文件:

:vsp [文件2]

最后在第一个缓冲区里输入:

:diffthis

通过 Ctrl+w 来切换缓冲区并再次输入:

:diffthis

这样两个文件中不同的部分就会被高亮。

(译者注:可以直接在一个缓冲区里使用命令 :windo diffthis,而不用输入 :diffthis 两次)

要停止比较,使用:

:diffoff

按时间回退文件

Vim 会记录文件的更改,你很容易可以回退到之前某个时间。该命令是相当直观的。比如:

:earlier 1m

会把文件回退到 1 分钟以前的状态。

注意,你可以使用下面的命令进行相反的转换:

:later
12下一页
查看其它分页:

发表评论


最新评论

我也要发表评论

来自 - 上海 的 MSIE/Windows 用户 2015-4-14 18:31
1
空中辉舞 发表于 2015-1-17 09:23 的评论:
你们的评论太没“干货了”,不知道是不是我菜鸟的关系,首先Ctrl+n补全不了单词会显示pattern not found,还有diffthis 用Ctrl+W切再输入根本不好使,但是windo diffthis是可以用的。其他的我就没验证了,有谁能站出解释么,别随声附和,对这个网站的编辑们都有所怀疑了,全是不验证的瞎翻译。
ctrl+p,你试下吧,7.3版本gvim无问题
5 回复
来自 - 加拿大 的 Firefox/Linux 用户 2015-1-18 04:30
1
空中辉舞 发表于 2015-1-17 09:23 的评论:
你们的评论太没“干货了”,不知道是不是我菜鸟的关系,首先Ctrl+n补全不了单词会显示pattern not found,还有diffthis 用Ctrl+W切再输入根本不好使,但是windo diffthis是可以用的。其他的我就没验证了,有谁能站出解释么,别随声附和,对这个网站的编辑们都有所怀疑了,全是不验证的瞎翻译。
2
linux 发表于 2015-1-17 20:48 的评论:
我是校对和发布,我确实没验证过,不过这篇,从我们译者写的译者注来看,应该是验证过的,也许不够充分?
ctrl+n需要有以前写过的单词才能补全,另外它目前只对c语言的#include内的东西自动抓取。
回复
linux 2015-1-17 20:48
1
空中辉舞 发表于 2015-1-17 09:23 的评论:
你们的评论太没“干货了”,不知道是不是我菜鸟的关系,首先Ctrl+n补全不了单词会显示pattern not found,还有diffthis 用Ctrl+W切再输入根本不好使,但是windo diffthis是可以用的。其他的我就没验证了,有谁能站出解释么,别随声附和,对这个网站的编辑们都有所怀疑了,全是不验证的瞎翻译。
我是校对和发布,我确实没验证过,不过这篇,从我们译者写的译者注来看,应该是验证过的,也许不够充分?
回复
linlover 2015-1-17 13:07
w !sudo tee %
di
两个命令对我的vim(7.4)不起作用。
4 回复
空中辉舞 2015-1-17 09:23
你们的评论太没“干货了”,不知道是不是我菜鸟的关系,首先Ctrl+n补全不了单词会显示pattern not found,还有diffthis 用Ctrl+W切再输入根本不好使,但是windo diffthis是可以用的。其他的我就没验证了,有谁能站出解释么,别随声附和,对这个网站的编辑们都有所怀疑了,全是不验证的瞎翻译。
6 回复
好久不上微博的勛爺 2015-1-16 01:03  新浪微博网友评论
Mark!
回复
Idleeeeee 2015-1-15 22:33  新浪微博网友评论
Repost
回复
游冥客 2015-1-15 21:03  新浪微博网友评论
黑科技啊!
回复
爱吃大肥鱼的小猫咪 2015-1-15 18:33  新浪微博网友评论
干货
回复
白鱼吻 2015-1-15 13:33  新浪微博网友评论
di好赞!vim真是个无底洞呀。。。
回复
Jn_xxx 2015-1-15 12:33  新浪微博网友评论
正在爬vim的学习曲线
回复
茅山道士后裔 2015-1-15 12:33  新浪微博网友评论
m
回复
曦曦儿Sarah 2015-1-15 12:33  新浪微博网友评论
Repost
回复
这个小利不简单 2015-1-15 12:03  新浪微博网友评论
很不错
回复
dyonroot 2015-1-15 12:03  新浪微博网友评论
棒棒哒
回复
表叔叫lean 2015-1-15 11:03  新浪微博网友评论
get
回复
ShenLanSDU 2015-1-15 11:03  新浪微博网友评论
Repost
回复
soli 2015-1-15 10:52
有意思
回复
牵着小猪溜达达 2015-1-15 10:33  新浪微博网友评论
@我的印象笔记
回复
木_小贱 2015-1-15 10:33  新浪微博网友评论
@我的印象笔记
回复
12下一页

热点评论

空中辉舞 2015-1-17 09:23
你们的评论太没“干货了”,不知道是不是我菜鸟的关系,首先Ctrl+n补全不了单词会显示pattern not found,还有diffthis 用Ctrl+W切再输入根本不好使,但是windo diffthis是可以用的。其他的我就没验证了,有谁能站出解释么,别随声附和,对这个网站的编辑们都有所怀疑了,全是不验证的瞎翻译。
6
来自 - 上海 的 MSIE/Windows 用户 2015-4-14 18:31
ctrl+p,你试下吧,7.3版本gvim无问题
5
linlover 2015-1-17 13:07
w !sudo tee %
di
两个命令对我的vim(7.4)不起作用。
4
返回顶部

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”将网页分享至朋友圈。