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

保存文件并退出

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

??

和下面的命令是等价的:

:wq

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

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

基本计算器

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

Ctrl+r ‘=2+2‘ ENTER

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

查找重复的连续的单词

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

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

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

删除标记内部的文字

当我开始使用 Vim 时,一件我总是想很方便做的事情是如何轻松的删除方括号或圆括号里的内容。转到开始的标记,然后使用下面的语法:

di[标记]

比如,把光标放在开始的圆括号上,使用下面的命令来删除圆括号内的文字:

di(

如果是方括号或者是引号,则使用:

di{

和:

di"

删除指定标记前的内容

和删除标记内部有些相似,但目的不同。命令如下:

dt[标记]

会删除所有光标和标记之间的内容(保持标记不动),如果在同一行有这个标记的话。例如

dt.

会删除至句子的末尾,但保持 ‘.’ 不动。

把 Vim 变为十六进制编辑器

这不是我最喜欢的窍门,但有时会很有趣。你可以把 Vim 和 xxd 功能连起来来把文件转换为十六进制模式。命令如下:

:%!xxd

类似的,你可以通过下面的命令恢复原来的状态:

:%!xxd -r

把光标下的文字置于屏幕中央

我们所要做的事情如标题所示。如果你想强制滚动屏幕来把光标下的文字置于屏幕的中央,在可视模式中使用命令(译者注:在普通模式中也可以):

zz

跳到上一个/下一个位置

当你编辑一个很大的文件时,经常要做的事是在某处进行修改,然后跳到另外一处。如果你想跳回之前修改的地方,使用命令:

Ctrl+o

来回到之前修改的地方

类似的:

Ctrl+i

会回退上面的跳动。

把当前文件转化为网页

这会生成一个 HTML 文件来显示文本,并在分开的窗口显示源代码:

:%TOhtml

(译者注:原文是 :%Tohtml,但在我的电脑上是 :%TOhtml)

很基本但很不错。

总的来说,这一系列命令是在我读了许多论坛主题和 Vim Tips wiki(如果你想学习更多关于编辑器的知识,我非常推荐这篇文章) 之后收集起来的。

如果你还知道哪些非常有用但你认为大多数人并不知道的命令,可以随意在评论中分享出来。就像引言中所说的,一个“鲜为人知但很有用的”命令也许只是你自己的看法,但分享出来总是好的。

时间: 2024-12-15 01:47:48

一些不起眼但非常有用的 Vim 命令的相关文章

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

如果我的关于这个话题的最新帖子没有提醒到你的话,那我明确地说,我是一个 Vim 的粉丝.所以在你们中的某些人向我扔石头之前,我先向你们展示一系列“鲜为人知的 Vim 命令”.我的意思是,一些你可能以前没有碰到过的命令,但可能对你来说很有用.作为第二免责声明,我不知道哪些命令是你可能知道的,以及哪些是对你来说有用的.因此这些命令实际上是一些相对少见,但很可能很有用的 Vim 命令. 保存文件并退出 说起来有些惭愧,我也是最近才学到这个命令 :x 和下面的命令是等价的: :wq 都是保存当前文件并退

15个不起眼但非常强大的 Vim 命令

如果我的关于这个话题的最新帖子没有提醒到你的话,那我明确地说,我是一个 vim 的粉丝.所以在你们中的某些人向我扔石头之前,我先向你们展示一系列“鲜为人知的 Vim 命令”.我的意思是,一些你可能以前没有碰到过的命令,但可能对你来说很有用.作为第二免责声明,我不知道哪些命令是你可能知道的,以及哪些是对你来说有用的.因此这些命令实际上是一些相对少见,但很可能很有用的 Vim 命令. 保存文件并退出 说起来有些惭愧,我也是最近才学到这个命令 : x 和下面的命令是等价的: : wq 都是保存当前文件

超级有用的Vim命令

你是否曾经烦恼,每次编辑vim文件,想要跳到一行结尾,需要按多次右键,每次想找到某个字符的位置,都得用肉眼去观察,每次想跳到文件结尾,都要按多次向下键.现在,你不必担心这些繁杂的过程,因为我们完全可以利用vim的快捷键使得我们操作vim如行云流水般顺利.现在,我来介绍几个非常有用的(我们知道vim快捷键有很多,并不是所有的我们都必须记住,几个关键的足够用了.) 一.定位行 'gg':跳到文件第一行开始 'G':跳到文件最后一行开始 ':2':跳到文件第2行开始 二.定位一行的开始和结束 '$':

linux下vim命令汇总

一. 进入vi的命令 vi filename : 打开或新建文件,并将光标置于第一行首 vi +n filename : 打开文件,并将光标置于第n行首 vi + filename : 打开文件,并将光标置于最后一行首 vi +/xxx filename:打开文件,并将光标置于第一个与xxx匹配的串处 vi -r filename : 在上次正用vi编辑时发生系统崩溃,恢复filename vi filename....filename :打开多个文件,依次进行编辑 二. 移动光标类命令 h :

最有用的Linux命令行使用技巧集锦

最近在Quora上看到一个问答题目,关于在高效率Linux用户节省时间Tips.将该题目的回答进行学习总结,加上自己的一些经验,记录如下,方便自己和大家参考. 下面介绍的都是一些命令行工具,这些工具在几位回答者的日常工作中都很有用.对于任何不了解的命令,请使用"man <COMMANDNAME>"查看,或者使用Google.有些命令需要先用 yum, apt-get install 命令安装. 1.基本命令 了解基本的bash 通读整个bash man page. 学习VI

linux 的vim命令详解

高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的: :qx     开始记录宏,并将结果存入寄存器x q     退出记录模式 @x     播放记录在x寄存器中的宏命令 稍微解释一下,当在normal模式下输入:qx后,你对文本的所有编辑动作将会被记录下来,再次输入q即退出了记录模 式,然后输入@x对刚才记录下来的命令进行重复,此命令后可跟数字,表示要重复多少次,比如@x20,可以重复20次.这个在文本的批处理中是非常有用的. 同时编辑多个文件 在vim众多

vim命令简表

前言 Vim是一个超级牛的编辑器,可以说是专为程序员设计的编辑器,强大的有些不可思议. 不过其学习曲线稍显陡峭,前两天在网上找到一个小图表,比较全,如果对表中所列的命令学习熟悉以后, 处理日常的文本就已经足够,所以贴出来,大家参考参考. Vim的牛B之处不在于其功能之繁多,更不在于其学习曲线之陡峭, 而在于这些命令大都可以进行组合,比如,9yy命令表示复制9行内容,9表示要复制的行数, 同样100dd表示删除100行,当数字和命令合作的时候,就比单纯的命令更强大, 同样,c命令表示擦除,w表示w

vim命令、快捷键

http://blog.csdn.net/pipisorry/article/details/23515091 vi /vim介绍 可以将 vim 视作 vi 的进阶版本,vim 可以用颜色或底线等方式来显示一些特殊的信息. 可以说vim 是个"程序编辑器"!甚至一些 Linux 基础配置文件内的语法,都能够用 vim 来检查! 简单的来说, vi 是老式的文书处理器,不过功能已经很齐全了,但是还是有可以进步的地方. vim 则可以说是程序开发者的一项很好用的工具,就连 vim 的官方

【[email&#160;protected]基础篇 ~】# vi/vim 命令

今天开始学习Linux,学习过程中我会在这里记下一些学习笔记,先从基础的学起,万事开头难,因此我会坚持!当下Linux系统已经有很多版本了,Linux其实就是Unix的衍生版本,以L开头是因为它的创始人Linus,Unix是Unique + X版本号的缩写...关于Unix和Linux的起源有很长的计算机史要讲,本教程不讲历史,只谈技术哦.本教程本着先易后难的原则进行的,所以基础命令篇以Red Hat 6.0 企业版为实验机器.先从基础命令和系统管理学起,循序渐进,后面会有shell脚本编程.服