(Vi IMproved) 是 Unix 上的流行编辑器 vi 的克隆版本。这个文本编辑器
是为性能和提升效率而设计的,并且在大多数基于 unix 的系统上普遍存在。
它有大量的快捷键可用来快速导航到文件的特定位置,以便进行快速编辑。U ) a |
Vim 导航基础
vim # 在 Vim 中打开 :q # 退出 Vim :w # 保存当前文件 :wq # 保存文件并退出 Vim :q! # 退出 Vim 并且不保存文件 # ! *强制* 执行 :q, 因此没有保存就退出 Vim :x # 保存文件并且退出 Vim,g ! 是 :wq 的简写版本 u # 撤销& a = CTRL+R # 重做 h # 左移一个字符 j # 下移一行 k # 上移一行 l # 右移一个字符 # 在行内移动 0 # 移到行首 $ # 移到行尾 ^ # 移到= i a行内的第一个非空白字符处 # 在文本中查找 /word # 光标之后的所有该词都高亮显O V 7 W示 ?word # 光标之前的所有该词都高亮显示 n # 查找后将光标移到该词的下一个出现位置 N # 光标移到该词的上一个出现位置 :B ] , 3%s/foo/bar/g # 将文件每一行上的所有 'foo' 都改成 'bar/ . n -' :s/foo/bar/g # 将当前行上的所有 'foo' 都改成 'bar' # 跳到字符处 f<字符> # 向前跳移到 <字符> 上 t<字符> # 向前跳移到 <字符> 的左侧 # 例如, f< # 向前跳移到 < 上 t< # 向前跳移到 < 的左侧 # 按词移动 # 默认一个单词由字母,数字和下f r Y Y $ Y L划线组成 w # 移动到下一个词首 b # 移动到前一个词首 eR ; ^ # 移动到下一个词尾 # 移动的其它命令 gg # 移到文件顶部 G # 移到文件末尾 :NUM # 移到第 NUM 行 (NUM 是任意数字) H # 移到屏幕顶部 M # 移到屏幕中间位置 L # 移到屏幕末尾
模式
Vim 基于 模式 这个概念。
命令模式 – Vim 启/ M 4 R动后就处于这个模式,用于导航和操作命令
插入模式 – 用于在你的文件中进行修改
可视模式 – 用于高亮文本并对它们进行操作
Ex 模式 – 用于跳到底部的 ‘:’ 提示行上输入3 9 K 7 W @ E 4 h命令
i # 在X o u G 3 e光标位置前,将 ViA C t [ t Q y 8m 切换到插入模式 a # 在光标位置后,将 Vim 切换到插入模式 v # 将 Vim 切换到可视模式 : # 将 Vim 切换到Z . Q Y ex 模式 # 无论你当前处于什么模式,都返回到命令模式 # 复制和粘贴文本 y # 复制所选的内容 yy # 复制当前行 d # 删除所选的内容 dd # 删除当前行 p # 在当前光标位置后粘贴复制的文本 P # 在当前光标位置前粘贴复制的文本 x # 删除当前光标位置处的字符
Vim 的 ‘语法q 4 9 C ^ b‘
ViY b 2m 可以被认为是按 ‘$ , : j V M动词-修饰词-名词’ 格式编排` F Q Z H o p的一组命令:
动词 – 你的动作
修饰词 – 你如何执行你的动作
名词 – 你的动作所作用于的对象
关于 ‘动词’,’修饰词’,和 ‘名词’ 的几个重H q { C要例子:
# '动词' d # 删除 c # 修改 y # 复制 v # 可视化选择 # '修饰词' i # 内部的 a # 周围的 NUM # 数字 (NUM 是任意数字) f # 查找文本并位于其上 t # 查找文本并停于其前面 / # 从光标处开始查找字符串 ? # 在光标前查找字r G D P [ d g符串 # '名词' w # 词 s # 句子 p # 段落 b # 块 # 示例 '语句y % i A , 9 q' 或命令 d2w # 删除 2 个词 cis # 修改段落内的内容 yip # 复制段落内的内容 (复制你所在的段落) ct< # 修改直到括号开启处 # 对你的当前位置直T } S d [ m } B /到下个括号开启处的内容进行修改 d$ # 删除直^ I : j o 2 v {到行尾
一些快捷键和技巧
>Z = Q 7 Z T f ] /; # 将所选内容缩进一级 < # 将所l e . N z选内容取消缩进一级 :earlierc r Z ? 15m # 将文档还原到 15 分钟前的状态 :later 15m # 逆转上述命令 ddp # 相邻行交换位置,先Z p : * ~ V 3 ) dd 再 p . # 重复之前动作
宏
宏基本上来说就是可录制的动作。
当你开始录制宏时,它会记录你使用的 每个 动作和命令,
直到你停止录制。当调用宏时,它会将这个完全相同的动作和命令序列
再次应用_ k +于所选文本之上。
qa # 开始录制一个叫 'a' 的宏 q # 停止录制 @a # 重播宏
配置 ~/.vimrc
.vimrc 可用于在启动时对 Vims ^ # ) j 进行配置。
这里是一个示例 ~/.vimrc 文件:
" 示例 ~/.vimrc " 2015.10 " 需要 Vim iMproved: = j v - D 版本 set nocompatible " 根据[ e ; M = - @文件名检测7 0 _ @文件类型,以便能进行智能自动缩进等操作。 filetype indent plugin on " 开启语法高亮 syntax on " 更好的命令行补全 set wildmenu " 除了当使用大写m ! P 4 Q字母时使用大小写无关查找 set ig$ & 7noreca[ 0 a _ / 4 P P se set smY 5 % ! 7 ]artcase " 当新开一行时,如果没有开启文件特定的缩进规则, " 则缩进保持与你当前行一致 set autoindent " 在W U ( % g 3 q T左侧显示行号 set number " 缩进选项,根据个人偏好进行修改 " 每个 TAB 的可视空格数 set tabstop=4 " 编辑时 TAB 对应的空格数 set softtabstop=4 " 当使用缩进操作 (>> 和 <<) 时缩进的空格数! t q _ M 6 set shi c Kftwidth=I ` D L a4 " 将 TAB 转换成空格 set expm uandtab " 为缩进和对齐开启智能化的 TAB 和空格切换功能 set smarttab