快捷键 | 功能 |
---|---|
0 | 行首 |
$ | 行尾 |
ctrl + # | 查找光标上一个 |
ctrl + n | 查找光标下一个 |
>> | 缩进 |
== | 自动缩进 |
移动
[number]+f+[char] 光标移动到右边第number个字符char的位置 (t 左边)
gg | 文件首 |
G | 文件末 |
替换
c + i + [opt] : 删除由opt包裹的内容
c + a + [opt] : 删除由opt包裹的内容 ,包括当前的包裹行
w | word 词 |
---|---|
s | sentence 句 |
p | paragraph 段 |
t | tag(HTML/XML) 标签 |
[或] | 由[]包裹的部分 |
(或) | 由()包裹的部分 |
<或> | 由<>包裹的部分 |
{或} | 由{} 包裹的部分 |
" | 由""包裹的部分 |
' | 由''包裹的部分 |
` | 由``包裹的部分 |
命令行模式
:3,5d | 删除第3行到第五行的内容 |
:. ,5d | 删除当前行到第5行的内容 |
我们发现在选中一个选区后,按下:
,在左下角会出现 <,>
的字样,根据前面的列表知道 他们代表的是被选中的高亮选区。
移动
{range} +m +{address}
例如 :3,5m1 将3,5的内容移动到第1行下面。
除了使用.
来作为相对行号以外,命令模式中还有其他常用符号,这里列举一些供大家参考:
-
.
: 当前行 -
$
: 文件末尾 -
0
: 虚拟行,位于文件第一行的上方 -
1
: 文件第一行 -
'm
: 包含标记m的行 -
<
: 高亮选区的起始行 -
>
: 高亮选区的结尾行 -
%
: 整个文件,相当于:1,$
介绍了这些操作符之后,如果我们需要删除整个文件,那么有这么几种方法
-
方法1:普通模式下,使用
0
跳转到第一行, 然后使用dG
第一行到最后一行的内容 -
方法2: 命令模式下,使用
:1,$d
删除第一行到最后一行的内容 -
方法3: 命令模式下,使用
:%d
删除所有
命令行模式下使用普通模式的命令
它使用的方式为:range + normal + operator
,它支持范围操作,表示我们将要针对某个范围来执行普通模式的操作
针对这个例子,首先要构造一个可以使用.
命令的操作,即我们在首行使用A;
在行尾添加分号,接着配合命令模式的范围,加上2,$normal.
表示我们将要从第二行到尾行来执行.
命令
运行shell 命令
在vim的命令模式中,%
代表的是当前文件名,在运行某些可以传入文件名作为参数的命令时,可以使用它,例如我要执行当前的Python代码时可以使用 :!python %
使用 write 和read 命令重定向vim缓冲区内容
在vim配合shell命令使用的时候有时候shell会产生大量是输入或者需要一定的输出,那么就可以使用 write 和 read 来配合shell使用。
-
read:vim从shell产生的输出中读取内容写入缓冲区
-
write: vim将缓冲区的内容写入到shell中,作为shell的输入
例如某个文件中有大量的Python代码,但是我只想执行部分,那么可以配合write使用,例如3,5write !python
执行文件中3-5行的Python代码,或者配合可视模式,执行选中的代码
再比如,我现在需要获取当前目录下有多少个文件和目录,并且按照文件名顺序排列,就可以使用 :read !ls|sort
。
利用标签,快速跳转
vim中提供了标签的方式进行跳转,事先可以在对应位置设置标签,后面通过标签访问该标签所在位置
可以使用m{a-z}
来在任意位置设置标记,而后使用`{a-z}来回到对应标记位置。该命令可以回到之前设置标签时光标所在行和列。
快速选中光标所在单词进行搜索
这里主要为了介绍 *这个命令,当光标处于目标单词的时候,按下 *
将直接进行搜索。