vim使用笔记
介绍
Vim 在大多数的 Linux 发型版本中都是默认安装好的,无需再手动进行安装。
查看是否已经安装的命令:rpm -qa | grep vim
CentOS下安装,直接运行 yun install vim
即可安装最新版本的 Vim
命令行输入 vimtutor即可进入长文本进行练习
Vim 一共有三种常用模式:
普通模式
移动光标
键名 | 作用 |
---|---|
h | 光标左移 |
j | 光标下移 |
k | 光标上移 |
l | 光标右移 |
除了单独的移动光标之外,我们还可以利用 Vim 的组合思想 —— 数字前缀组合来移动多行,具体细节会在相应章节细说。
组合键 | 作用 |
---|---|
2+j | 向下移动两行 |
5+h | 向左移动五个字符= |
- 还有针对更加丰富粒度的词组法:
快捷键 含义 速记 w/W 正向移动到下一个词首 word b/B 反向移动到上一个词首 back e/E 正向移动到下一个词尾 word end ge 反向移动到上一个词尾
转跳
有时我们使用 Vim 打开某一个文件时只需要阅读某一特定位置就行,这个时候可以使用 Vim 的跳转快捷键来帮我们快速的定位需要阅读的位置:
Vim 跳转快捷方式:
快捷方式 | 功能 |
---|---|
ctrl+f/F | 跳转到下一页 |
ctrl+b/B | 跳转到上一页 |
ctrl+d/u | 向上或向下跳转半页 |
gg | 跳转到文件第一行 |
G | 跳转到文件最后一行 |
<行数>gg/G | 跳转到指定行数,例如 12gg或者12G 代表跳转到 12 行 |
{g}+Ctrl-g/G | 查看文件信息。 |
缩进
每种语言开发中都会又缩进的硬性(Python)或者软性要求。一般来说通过 Vimrc 写到配置中,这样不必要每次手动缩进。但是有时候可能需要非常规的缩进。这时候就需要手动操作缩进了,可以针对单行或者多行甚至块。
快捷键 | 含义 |
---|---|
>> / :> | 向右缩进 |
m,n> / :m>(n-m+1) | m到n行缩进 |
m>n | m行开始共n行缩进 |
组合
以上的移动方式相对比较单一,但是 Vim 组合的思想和特性给予了 Vim 更加高效的方式。关于 Vim 的组合思想有一个公式:**[count]+operator+[count]+motion**
- count:次数的意思,用于重复;
- operator :操作方式就是增删改之类的。例如复制(y),删除(d)等;
- motion :Vim help 中会有相应的解释。简单来说就是operator的操作对象。比如一个单词、句子或者移动的方向等。
Vim 中可以通过 help 帮助来查看 Vim 的功能说明,相当于一个说明书和Linux 中man一样。
选择
可视化模式主要用于对文本进行选择,类似于平时使用鼠标选中操作文本。我们可以选中相应文本,然后针对选中的文本指定操作:复制,替换等。
可视化模式主要有三种方式:
快捷键 | 功能 |
---|---|
d | 剪切选定文本内容 |
y | 复制选定文本内容 |
p/P | 粘贴到光标前/后 |
u | 撤销上一步操作 |
Ctrl+r | 恢复之前撤销操作 |
组合快捷键 | 功能 |
---|---|
x | 删除光标下单个字符,据组合大家可以试试多个字符如何删除 |
y2w | 光标正向复制两个单词 |
D/d$ | 删除当前行光标后所有字符 |
dd | 删除当前行 |
dG | 删除光标之后所有行 |
d^ | 删除当前行光标到行首所有字符 |
daw | 删除当前光标单词 |
修改与替换
快捷键 | 含义 | 备注 |
---|---|---|
r | 替换光标下单个字符 | |
cw | 修改单个单词 | |
c$ | 修改光标之后行内内容 | |
R | 进入替换模式 |
substitute 替换命令
除了简单的快捷键替换之外。还有更加强大的命令式替换。这种方式为了处理更加复杂的场景,尤其是结合正则表达式。
substitute 是 Vim 中最常用的搜索和替换的命令。可以缩写为 s。
替换公式:**:[range]s[ubstitute]/{pattern}/{string}/[flags]**
默认情况下,s 只会作用域当前行的第一个匹配项。
flag选项
| 选项 | 含义 | 备注 |
|:—-|:—-|:—-|
| g | 全局替换 | global(也只是针对当前行全局而非全文) |
| c | 每次替换前需要确认 | confirm |
| e | 没有匹配项时不显示错误 | error |
| i | 表示忽略大小写 | ignore |
| I | 表示区分大小写 | |
range 选项
选项 | 含义 | 备注 |
---|---|---|
% | 执行范围:全局 | 这个才是真正意义上的全局 |
n,m | n到m 行替换 | :12,33s/time/ting/g |
$ | 最后一行 | :12,$s/time/ting/g |
n;/pattern/ | n行到下一个匹配patter行 | :12;/ting/time/ting/g |
插入模式
插入模式是最容易理解的模式,就是和我们平时使用的编辑器一样就是为了插入字符的。进入这个模式也很简单,主要有三种方式:
i
键进入
i
表示 insert,即插入的意思,言简意赅。打开 Vim 编辑器并点击 i 键,这个时候编辑器左下角会出现 – INSERT – 字样,就这样表示进入插入模式了。
a
键进入
a
表示 append 意思,打开编辑器后点击 a 键进入此模式。和 insert 不同的是,这个时候光标会移动到下一个字符,然后再进入插入模式。
o
键进入
o
这个方式会在当前行下面新插入一行,并进入插入模式。
大写字母方式进入插入模式
这些命令还可以以大写字母方式进入插入模式,我们来看一下会有什么不一样的效果。
顾名思义,命令行模式下的操作当然就是以命令为主,Vim 为我们提供了大量的丰富的命令,你可以把命令行模式当做是普通模式的加强版,它可以用来做到许多普通模式做不到的事情。
在普通模式下按下 :
,这时你会看到窗口的左下角出现了一个 :
,代表你已经进入命令行模式可以进行命令的输入,输入的命令会出现在 :
的后面。
指令 | 含义 | 备注 |
---|---|---|
set number | 显示行号 | |
set hlsearch | 高亮搜索 | |
set incsearch | 增量实时搜索 | |
set ignorecase | 大小写忽略 | |
set autoindent | 自动缩进 | 在这种缩进形式中,新增加的行和前一行使用相同的缩进形式 |
set smartindent | 自动缩进 | 在这种缩进模式中,每一行都和前一行有相同的缩进量 |
set softtabstop | tab键实际占有的列数 | |
set expandtab | tab 转化为空格 | |
set shiftwidth=4 | 换行缩进为4个空格 | |
set tabstop=4 | 设置tab 为4个空格 |