vim教程网
在 shell 终端下输入命令 vimtutor 便可进入 Vim 官方提供的 30 分钟 Vim 入门教程
vim的配置
1.移动光标
左下上右: hjkl
nw:向后移动光标, 移动n个单词,移到单词开头
ne:向后移动n个单词,移动到单词的开头
$ : 移动光标到行的末尾
e:移动到单词末尾
2.进入和退出
退出:q!(无保存退出), wq(保存并退出).
3.删除
x:删除光标所在位置的字符;
dw:从当前光标当前的位置直到下一个单词起始位置处,不包括他的第一个字符。(hello world, 当光标在e处时,得到hworld不保留空格);
de : 从当前光标当前位置直到单词末尾,包括最后一个字符。(hello world 的
h world,保留空格);
d$: 从光标处删除到行末;
dnw :向后删除n个单词;
dd:删除一行;
ndd:删除n行
4.插入
i:光标前插入文本,I:插入到行首
a:插入到光标后, A:插入到光标所在行的末尾。
输入小写的 o 可以在光标下方打开新的一行并进入插入模式。
输入大写的 O 可以在光标上方打开新的一行。
5.撤销
u
6.更改
替换输入r在输入要替换的字符,R:替换多个字符
更改:输入cw在输入单词
更改更多:c [number] motion, w代表单词,$代表行的末尾。
7.定位及文件状态
control + g,显示文件状态信息和光标所在行
gg,跳转到文本第一行
: $ 或shift + g , 跳转到最后一行
:1,跳转到第一行。
8.搜索类
输入/字符,在输入要查的字符串,再按回车
n:向下查找, N是向上查找
逆向查找则将/替换成?
9.匹配括号的查找
如果光标当前位置是括号(、)、[、]、{、},按 % 会将光标移动到配对的括号上。
10.将文本里的某个字符串全部替换
在一行(光标所在行)内替换头一个字符串 old 为新的字符串 new,请输入 : s/old/new
在一行(光标所在行)内替换所有的字符串 old 为新的字符串 new,请输入 : s/old/new/g
在两行内替换所有的字符串 old 为新的字符串 new,请输入 :#,#s/old/new/g
在文件内替换所有的字符串 old 为新的字符串 new,请输入 :%s/old/new/g
进行全文替换时询问用户确认每个替换需添加 c 标志 :%s/old/new/gc
为每行的开头添加字符串new, 请输入:%s/^/new/g
为每行的结尾添加字符串new,请输入:%s/$/new/g
11.在 VIM 内执行外部命令的方法
! + < command >
12.关于保存文件的更多信息
:w FILENAME 可将当前 VIM 中正在编辑的文件保存到名为 FILENAME 的文
件中。
13.一个具有选择性的保存命令
v motion :w FILENAME 可将当前编辑文件中可视模式下选中的内容保存到文件
FILENAME 中。
14.一个具有选择性的保存命令
:r FILENAME 可提取磁盘文件 FILENAME 并将其插入到当前文件的光标位置
后面。
:r !dir 可以读取 dir 命令的输出并将其放置到当前文件的光标位置后面。
15.复制粘贴文本
操作符 y 复制文本,p 粘贴先前复制的文本。
16.设置类命令的选项
输入 :set xxx 可以设置 xxx 选项。一些有用的选项如下:
‘ic’. ‘ignorecase’ 查找时忽略字母大小写
‘is’ ‘incsearch’ 查找短语时显示部分匹配
‘hls’ ‘hlsearch’ 高亮显示所有的匹配短语
选项名可以用完整版本,也可以用缩略版本。
在选项前加上 no 可以关闭选项: :set noic
17.获取帮助信息,创建启动脚本,补全功能
-
输入 :help 或者按 键或 键可以打开帮助窗口。
-
输入 :help cmd 可以找到关于 cmd 命令的帮助。
-
输入 CTRL-W CTRL-W 可以使您在窗口之间跳转。
-
输入 :q 以关闭帮助窗口
-
您可以创建一个 vimrc 启动脚本文件用来保存您偏好的设置。
-
当输入 : 命令时,按 CTRL-D 可以查看可能的补全结果。
按 可以使用一个补全。
18.正则表达式
1.1 表示【目标字符集】的元字符
正则表达式中,列举目标字符集需要用到 [] 元字符。为了方便描述,以 abcd 作为目标字符集作为举例说明。
[abcd] 表示匹配方括号中列举的 任意一个 字符,即匹配 abcd 中的任意一个字符。
可用 - 表示字符范围来减少列举的,例如,[a-d] 等价于 [abcd]。
[^abcd] 表示匹配除 方括号中字符以外 的任意字符。
为了使用上的便利,正则表达式中保留定义了一些常用的字符集合,主要包括:
. 等价于 [^\n],表示匹配 任意一个除换行符 ( \n ) 外的其他字符。
\l 等价于 [a-z],表示匹配 任意一个小写字母。
\L 等价于 [^a-z],表示匹配 任意一个除小写字母外的其他字符。
\u 等价于 [A-Z],表示匹配 任意一个大写字母。
\U 等价于 [^A-Z],表示匹配 任意一个除大写字母外的其他字符。
\w 等价于 [0-9A-Za-z_],表示匹配 任意一个单词字母。
\W 等价于 [^0-9A-Za-z_],表示匹配 任意一个除单词字母外的其他字符。
\d 等价于 [0-9],表示匹配 任意一个阿拉伯数字。
\D 等价于 [^0-9],表示匹配 任意一个除阿拉伯数字外的其他字符。
\x 等价于 [0-9A-Fa-f],表示匹配 任意一个十六进制数字。
\X 等价于 [^0-9A-Fa-f],表示匹配 任意一个除十六进制数字外的其他字符。
注:上面这些保留定义都用到了转义元字符 \。因为 l、u、d、x 这些都是普通字母,只有加上转义字符才有上述特殊含义。
1.2 表示【次数】的元字符
如果希望指定一个目标字符在匹配结果中同时出现多次,那么需要用到正则表达式中表示 次数 的元字符,主要包括:
+ 表示匹配 1个或者任意个目标字符。
? 表示匹配 0个或者1个目标字符。
{n,m} 表示匹配 n-m 个目标字符,即最少匹配 n 个目标字符,最多匹配 (m-1) 个目标字符。
{n} 表示匹配 n 个目标字符 (即目标字符需连续出现 n 次)。
{n,} 表示匹配 n-任意个目标字符,即最少匹配 n 个目标字符。
{,m} 表示匹配 0-m个目标字符,即最多匹配 (m-1) 个目标字符,也可以不匹配 (0)。
1.3 表示【位置】的元字符
如果希望指定目标字符出现的位置,可以使用正则表达式中表示 位置 的元字符,主要包括:
^ 表示匹配 输入字符串的开始位置 (行首)。
$ 表示匹配 输入字符串的结束位置 (行尾)。
< 表示匹配 单词词首。
> 表示匹配 单词词尾。
1.4 表示【子模式】的元字符
元字符 () 用来标识一个子模式,任何 () 内部的匹配文本被称作为一个 子匹配,都会被自动保存到一个临时的仓库中以便后续进行引用。
可以用 \1、\2 …… \9 来依次引用被每对 () 捕获的子匹配;不论模式中是否使用了 (),元字符 \0 永远会自动引用于整个匹配。
1.5 表示【非打印字符】的元字符
正则表达式中比较常用的非打印元字符主要包括:
\n 表示匹配 一个换行符。
\r 表示匹配 一个回车符。
\t 表示匹配 一个制表符 ( Tab 键)。
\s 表示匹配 任意一个空白字符,包括空格、制表符、换页符等。
\S 表示匹配 任意一个非空白字符。
2.、正则表达式在Vim查找命令中的应用
如果希望搜索所有以 // 开头的行,可以执行 / ^ \ / \ / . * $ 命令。这里便用到了表示行首和行尾的元字符 ^ 和 $,以及表示任意一个非换行符外的元字符 . 和表示字符出现次数的元字符 * 。
如果希望搜索所有的空行,可以使用 / ^ $ 命令
3.三、正则表达式在Vim替换命令substitute中的应用
Vim替换命令 substitute (缩写形式 s) 的基本语法是 :[range]substitute/源字符串/目标字符串/[option],其中range和option字段都可以缺省不填。
可通过 :%s/\s*$//g 命令删除 Vim 当前打开文件中的所有行尾空格
同样地,可通过 :%s/^\s*//g 命令删除 Vim 当前打开文件中的所有行首空格
可通过命令 :%s/^ 在全文范围内,在所有的行首加入 // ,达到注释当前文件所有代码的效果
正则表达式在Vim global命令中的应用
可以在 Vim 中执行命令 :g/^\s*KaTeX parse error: Undefined control sequence: \/ at position 55: …所有行,可以执行命令 :g/^\̲/̲\/.*/d,