vim入门(下)

vim入门(下)

vim不仅仅是一个文本编辑工具,更是一门语言。今天要记录一下vim作为一门语言来进行编辑以及编写宏来执行重复任务。

把vim当作一门语言来进行文本编辑

vim作为一门语言,包含了表示要执行动作的动词、限制执行范围的形容词、限制执行次数的数字以及描述被执行对象的名词。

表示要执行动作的动词包括:

按键 释义 动词属性
v 选择可视模式的范围 及物动词
c 修改字符,进入插入模式 及物动词
d 删除 及物动词
y 复制 及物动词
x 删除字符 非及物动词
i 在光标前插入,进入插入模式 非及物动词
a 在光标后插入,进入插入模式 非及物动词
p 粘贴 非及物动词
n N 下一个或者上一个/或?搜索的结果 非及物动词

限制执行范围的形容词包括:

按键 释义
i 范围之内(不包括边界)
a 周围以内(包括边界)
t 直到某个字符为止(不包括此字符)
f 直到某个字符为止(包括此字符)
/ 向后搜索,直到找到特定字符串或者正则表达式
? 向前搜索,直到找到特定字符串或者正则表达式

描述被执行对象的名词:

按键 释义
w 单词
s 句子
b
p 段落
t tag(适用于html及xml)
G 直到最后一行
nG 直到第n行
gg 直到第一行,等于1G
0 当前行的第一个字符
$ 当前行的最后一个字符

示例说明:

非及物动词单独使用:

按键组合 释义
x 删除当前字符
p 将此前复制的内容粘贴到当前位置

数字和非及物动词一起使用:

按键组合 释义
8x 从当前为止开始删除8个字符
3k 向上移动3行

及物动词和名词一起使用:

按键组合 释义
dw 删除当前单词
cw 删除当前单词并进入插入模式

及物动词、形容词以及名词一起使用:

按键组合 释义
diw 删除当前单词
ciw 删除当前单词并进入插入模式
cis 删除当前句子并进入插入模式
ci" 删除双引号之间的内容并进入插入模式
c/foo 删除直到下一个foo之前的内容并进入插入模式
ct3 删除直到下一个字符3之前的内容(不包括3)并进入插入模式
cf3 同上,但是包括3
vap 选择整个段落并进入可视模式

使用宏执行重复任务

录制以及重复使用宏的总体步骤如下:

  1. 按下q,然后按下任意一个字幕作为宏名称。宏录制开始。
  2. 在vim中进行任何编辑及操作,所有这些将被录制。
  3. 再次按下q来停止录制。
  4. 按下@以及宏名称来执行宏。
  5. 多次执行宏的按键组合为:N@以及宏名称,其中N是数字,为宏重复执行的次数。

宏应用示例:

假如我们有一个文本文件,里面是要创建的函数名,我们要把根据这些函数名创建含一个没有返回值并且参数为空的函数。

从foo变成void foo(){}

打开文本文件以后,按照如下步骤操作:

  1. 按下qa开始录制宏(a为宏名称)
  2. 编写宏内容:
    • 按下ESC、I,从当前行前面开始插入。
    • 插入"void ",然后按下ESC、A,从行后开始插入。
    • 插入"(){}",然后按下ESC、j跳转到下一行。
  3. 再次按下q结束宏录制。
  4. 按下99(假设有100个函数名)@a,将宏执行99次。

vim入门(上)

今天我要记录一下学习vim的一些收获,我对vim的了解还不能算是精通,还是入门水平,所以这篇的题目就是vim入门。

在linux或者OS X中如何用vim创建或者打开一个文件

如果你的操作系统是linux桌面版或者OS X,你可以在系统中找到Terminal。打开Terminal以后,输入vim 文件路径/文件名,如果文件存在,vim将打开这个文件,如果文件不存在,vim将新建一个文件。
如果你的操作系统是linux服务器版本,你用ssh或者VNC等方式登陆到系统以后,你默认进入了一个Terminal,可以在Terminal中执行上面的操作。
如果你的操作系统是windows,你可以安装Terminal模拟器进行以上操作。或者直接下载vim的安装包进行安装。

在编辑过程中,可以使用:w来保存,u来撤销修改,^r来恢复撤销。
如果要退出vim,:q!是不保存退出,:wq是保存并退出。具体的内容在后面会讲到。

vim的不同操作模式

vim是一款非常强大的编辑器,其在工作时有多种操作模式:

-正常模式
-插入模式
-替换模式
-可视模式
-命令行模式

同一个按键在不同的模式下有不同的含义。比如x,在正常模式下是删除一个字母,在插入模式下会插入字母“x“到文本中。

正常模式

大部分时间里,我们是在正常模式和插入模式下工作。当你用vim打开或者新建一个文档的时候,vim模式是在正常模式下。
在正常模式里,可以快速的进行一些导航或者编辑的操作。

常用的导航操作:

操作按键 操作行为
h 向左移动光标
j 向下移动光标
k 向上移动光标
l 向右移动光标
^ 跳转到本行第一个可视字幕
0 跳转到本行第0列
$ 跳转到本行的行尾
| 跳转到第0列
#| 跳转到第#列
^b 向后翻页
^f 向前翻页
^u 向后翻1/2页
^d 向前翻1/2页
gg 文章开始
G 文章结尾
zz 移动光标所在到屏幕中间
zt 移动光标所在到屏幕上方
zb 移动光标所在到屏幕下方
H 移动光标到屏幕上方
M 移动光标到屏幕中间
L 移动光标到屏幕下方

常用的编辑操作:

操作按键 操作行为
x 删除一个字母
dd 删除一整行
D 删除到行尾
s 删除字母并插入
S 删除行并插入
>> 缩进
<< 反缩进
p 粘贴到后面
P 粘贴到前面
w 下一个单词
e 词尾
b 上一个单词

正常模式与其他模式到切换

按键操作 按键行为
i 插入模式,在当前字符前插入
a 插入模式,在当前字幕后插入
I 插入模式,在行首插入
A 插入模式,在行尾插入
s 插入模式,删除当前字母并在当前字母位置插入
S 插入模式,删除当前行并在行首插入
r 替换模式,替换当前字符
R 替换模式
v 可视模式
V 可视行模式
^v 可视块模式
: 命令行模式

编辑模式

编辑模式就跟一般文本编辑器是一样的,所有的字母等输入都直接反应在文件内容中,所有正常模式下的命令都不可用。导航的话只能使用上下左右四个光标键,按键“ESC”返回正常模式。

替换模式

替换模式分为两种: r为替换当前字符,输入一个字符后会恢复到正常模式;R为多字符替换,会用输入字符持续替换当前行到内容。

可视模式

可视模式分为三种: v可视模式下可选择连续到字符串,V可视行模式下可选择连续行,^v可视块模式下可选择一整块长方形区域。选择了以后可进行复制删除修改等操作。

命令行模式

命令行模式下可操作各种命令,比如查找(/ ?)、替换(s)、保存(w)、退出(q)等。

今天先总结了一下vim的几种模式,vim还是一门强大的编程语言,将在下一篇博客中进行总结。

附录:vim键盘图
vim键盘图(英)
vim键盘图(中)