【NLP工具】Vim常用命令小结

Vim是解决文本快速处理(尤其是服务器端)的神器,本文简单总结下常用的命令。

1. 基本概念和功能
1.1 模式及其切换

Vim中包括如下常见模式“
普通模式:Vim启动后的默认模式,可用于光标的移动、文本的删除等。
插入模式:向文本中插入字符。
可视化模式:用于区块选择,可通过v一类的命令进入
命令行模式: 在命令行内输入命令。在其它模式下,通过ESC 进入命令行模式。

1.2 界面设置

:set number 显示各行行号, set nonumber取消该功能
:set list 显示制表符和行末, set nolist取消该功能
:set fileencoding 查看当前文件编码
:e ++enc=gb18003 强制采用某种编码重新打开本文档(临时的)

1.3 文件保存和退出

:w 保存文件但不退出vim
:w file 将修改保存到file,但不退出vi
:waZZ:x 保存文件并退出vi
"q! 不保存文件,退出vi
:e! 放弃所有修改,并从上次保存文件开始再编辑

2. 选择区块

通过光标移动选择指定的字符区间/行/区块,是实现其它复杂操作的基础。

2.1 光标行内移动

->l向右逐字符移动
<-h 左箭头,向左逐字符移动
w 下一个单词的开头, 可实现跨行
e 下一个单词的结尾,可实现跨行
b 上一个单词的开头, 可实现跨行
^ 行首(第一个非空字符)
$ 行末(最后一个非空字符)
0|:当前行的第一列

2.2 光标跨行移动

向上箭头k 向上一行
向下箭头j 向下一行
数字+向上/下箭头 向上/下移动数字行
+Enter键 下一行的第一个非空字符
- 上一行的的第一个非空字符
H: 屏幕第一行
M: 屏幕中建行
L: 屏幕最后一行
( : 句子的开头
): 句子的结尾
{: 段落的开头
}: 段落的结尾
ctrl+f 向前翻页
ctrl+b 向下翻页
gg 第一行
G 最后一行
数字+% 文档的 数字%处

2.3 指定文本定向查找

:set ic 查找时忽略大小写
:set noic 查找时对大小写敏感

/text 命令行模式下输入,从文本从头开始,向下寻找目标字符串,最终定位到字符串所在行第一个非空字符
?text 命令行模式下输入,从文本从尾开始,向上寻找目标字符串,最终定位到字符串所在行第一个非空字符
n: 配合前面的/text?text使用,向同一方向寻找下一个。
N: 配合前面的/text?text使用,向相反方向寻找下一个。

查找功能还支持正则表达式,如^$选择空行。

2.4 可视化模式

v 字符可视化模式,文本选择以字符为单位,跨行选择时前序行会被全部选中。
V 行可视化模式,文本选择以行为单位,直接选择所在所在行,
ctrl+v 块可视化模式,文本选择以矩形区块为单位,通过指定矩形左上角和右下角点,定义所选区块,特别适用于选择表格列等场景。

3. 插入模式
3.1 进入插入模式

i 在光标所在位置处进入插入模式(效果类似于左侧插入)
I 在光标所在行行首进入插入模式
a 在光标所在位置右边进入插入模式(效果类似于右侧插入)
A 在光标所在行行尾进入插入模式
o 在光标所在行下,插入新的一行进入插入模式
O 在光标所在行上,插入新的一行进入插入模式
s 删除光标所在字符,并进入插入模式
S 删除光标所在行,并进入插入模式

3.2 复制和剪切

yy 将当前行的内容复制到临时缓冲区
nyy 将第n行的内容复制到临时缓冲区
x 剪切

p 将临时缓冲区内的文本粘贴到光标后
P 将临时缓冲区内的文本粘贴到光标前

3.3 修改

c: 可视化模式选择高亮指定文本后,使用c即可删除指定文本,同时进入插入模式
rchar: 用 char 替换当前字符(注意是单个字符)
R text ESC : 用 text 替换当前字符直到按下 Esc 键

3.4 删除

d: 删除,注意删除后的文本是在剪切板里的,所以仍可将其进行p操作
db: 删除光标前面的word
dw: 删至下一个字的开头
d^: 删除光标至行首
dw: 删除光标至行末
dd: 删除一行
dG: 从当前行一直删至文件结束
数字+dd: 删除光标起的若干行
:m,nd: 删除第m-n行,其实这是进入命令行模式后的删除,此处的m和n可以采用数字表示绝对行号,也可以采用+m表示从本行开始往下的第m行(+0表示本行),-m同理

3.5 缩进

> 增加光标区域所在行的缩进
< 减少光标区域所在行的缩进

3.5 撤销与反撤销

u 撤销上一步操作
U 撤销当前行的所有修改
ctrl+r 恢复上一步被撤销的操作

3.6 插入新文本

:r file 读入文件 file 内容,并插在当前行后
:nr file 读入文件 file 内容,并插在第 n 行后

3.7 批量替换

:ranges/oldtext/newtext/g 全文范围内,用newtext 替换 oldtext
:m,ns/oldtext/newtext 第m-n行范围内,用newtext 替换 oldtext,这里的m和n除了用绝对行号,还可以使用相对行号
:g/text1/s/text2/text3 全文范围内,查找包含 text1 的行,用 text3 替换 text2,
:g/text/command 上一条命令的通用版本,在所有包含 text 的行运行 command 所表示的命令,这里的g可以改为指定行区间

:v/text/command 上一条命令的反向命令,即所有不包含 text 的行运行 command 所表示的命令,这里的g可以改为指定行区间

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值