Vim不常见但是很实用的命令技巧

简介: Vim不常见但是很实用的命令技巧

概述


Linux vi/vim

Vim不常见但是很实用的命令技巧


命令

保存文件并退出

:x


和下面的命令是等价的:

:wq


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

区别:这两个命令实际上并不完全等价,当文件被修改时两个命令时相同的。

但如果未被修改,使用 :x 不会更改文件的修改时间,而使用 :wq 会改变文件的修改时间。


基本计算器


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


Ctrl+r '=3+6' ENTER


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


20161031181641990.gif

查找重复的连续的单词


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

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

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

set hlsearch

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


缩写

语法格式如下:

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

一个通用的例子是:

:ab asap as soon as possible


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


20161031182946713.gif


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


每当你打开一个你没有写入权限的文件(比如系统配置文件)并做了一些修改,Vim 无法通过普通的 “:w” 命令来保存。


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

:w !sudo tee %


这会直接以 root 方式保存。

要确保用户在


20161031183446674.png


自动补全


这里不说插件提供的自动补全,仅仅说Vim 默认有自动补全的功能。的确这个功能是很基本的,并且可以通过插件来增强,但它也很有帮助。

Vim 尝试通过已经输入的单词来预测单词的结尾。比如当你在同一个文件中第二次输入 “xiaogongjiang” 时,仅仅输入 “x”或者多一些, 然后保持在插入模式,按 Ctrl+n 键就可以看到 Vim 为你补全了单词。很简单,但也很有用。


比较两个文件的不同


vimdiff 命令,它可以使用分离模式打开 Vim 并比较两个文件的不同。语法如下:

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

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

:diffthis

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

:vsp [文件2]

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

:diffthis

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

:diffthis

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

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


按时间回退文件


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

:earlier 1m


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

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

:later


删除标记内部的文字


当我开始使用 Vim 时,一件我总是想很方便做的事情是如何轻松的删除方括号或圆括号里的内容。

一般模式下转到开始的标记,

然后使用下面的语法:


di[标记]


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

di(


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

di{

和:

di"


20161031184613423.gif


删除指定标记前的内容

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

dt[标记]


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

dt.

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


把 Vim 变为十六进制编辑器

你可以把 Vim 和 xxd 功能连起来来把文件转换为十六进制模式。命令如下:

:%!xxd


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

:%!xxd -r


跳到上一个/下一个位置


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

Ctrl+o


来回到之前修改的地方

类似的:

Ctrl+i


会回退上面的跳动。

把当前文件转化为网页


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


:%TOhtml


相关文章
|
2月前
|
机器学习/深度学习 开发工具
Vim的常用命令 基本使用
Vim的常用命令 基本使用
25 0
|
2月前
|
Linux 编译器 开发工具
Linux:详解(yum的使用、vim编辑器命令集合以及gcc/g++编译器的使用)
Linux:详解(yum的使用、vim编辑器命令集合以及gcc/g++编译器的使用)
146 1
|
2月前
|
NoSQL Linux 编译器
Linux:vim调试工具gdb | 常见命令集
Linux:vim调试工具gdb | 常见命令集
124 0
|
2月前
|
开发工具
Vim 模式切换 | 命令集
Vim 模式切换 | 命令集
61 0
|
6天前
|
程序员 开发工具
Vim命令大全:掌握编辑利器
Vim命令大全:掌握编辑利器
|
2月前
|
运维 自然语言处理 开发工具
【专栏】NeoVim正逐渐取代Vim成为运维人员首选的文本编辑器。这 8 个原因或许是答案,命令对比一目了然!
【4月更文挑战第28天】NeoVim正逐渐取代Vim成为运维人员首选的文本编辑器。其优势包括更好的扩展性、现代化界面、多语言编程支持、异步处理能力、协作功能、持续更新及活跃社区。NeoVim的命令与Vim相似,但在启动配置、插件管理和窗口管理等方面有所优化。总的来说,NeoVim提供了更强大、灵活和现代的编辑体验。
|
7月前
|
Unix Linux Shell
Linux下vi与vim命令使用与区别
Linux下vi与vim命令使用与区别
114 0
|
2月前
|
Linux 开发工具
【Linux】vim正常模式命令集
【Linux】vim正常模式命令集
【Linux】vim正常模式命令集
|
2月前
|
人工智能 搜索推荐 Unix
vim的使用介绍以及命令大全(系统性学习day3)
vim的使用介绍以及命令大全(系统性学习day3)
|
2月前
|
Linux 开发工具 C语言
C语言编译过程、VIM常用命令
C语言编译过程、VIM常用命令