模式
normal 正常模式
inset 插入模式 ---i,o,a
command 命令模式----(shift+冒号)
visual 可视模式----v,大V(ctrl+v)
锁屏与反锁屏----此功能是linux系统的,非vim的
ctrl+s 锁屏
ctrl+q 取消锁屏
行号
:set nonu /set nonumber 隐藏行号
:set nu / set number 显示行号
:nu 查看当前行行号
注释/反注释
单行--行首#或//
多行注释--块模式ctrl+v选择,大写的I(或shift+i),两次Esc,
多行反注释--块模式ctrl+v选择,先择注释号, d 删除,
撤销和反撤销
u 撤销
ctrl+r 反撤销
选择内容复制
v(模式,或ctrl+v(块模式))--y(复制,x剪切)--i(移动光标)-esc(模式切换)--p(粘贴
查找
gd 查找光标下的word 用n/N 上下选择 3n 下面的第三个。
正常模式
/a enter,找a 顺查.
?a enter 倒查
:/the enter 查找the ci
:?the enter 搜索上面的the c i
:#the enter 搜索下面的the c
:nohl 去掉高亮 c
#是 *的反向 \是转义。如点需要转义 \.
/the 找所有的the,theme也会有
/the\> 只查找the
正则查找 ^开头,$结束 /the$ 所有行结尾的the /^the 开头的the /^the$,包含the的,中间有空白也不行,.点匹配任何字符
上一个,下一个
* 下面的同一单词 n
# 上面的同一单词 n
行内搜索(注意:以上四个命令中,其中x是键入的字符)。
f 往右移动到 x 字符上 n
F 往左移动到 x 字符上 n
t 往右移动到 x 字符前 n
T 往左移动到 x 字符后 n
3fa 找到当前行的第3个a
;分号,配合 f 和 t 使用,重复一次
,逗号,配合 f 和 t 使用,反方向重复一次
%可以搜索与之匹配的对应的()[]{}。这个功能对于书写程序特别有用。
替换
:s/a/b/ 光标当前行的第一个a替换成b,
:s/a/b/g 光标当前行所有a替换成b,
:n,$s/a/b/ 替换第 n 行开始到最后一行中每一行的第一个a 为 b
:n,$s/a/b/g 替换第 n 行开始到最后一行中每一行所有 a为 b
(n 为数字,若 n 为 .,表示从当前行开始到最后一行)
:%s/a/b/ 所有行 第一个
:%s/a/b/g 所有行 所有
:%s/a/b/c 替换时提醒确定。
y 好吧,替换 yes
n 不替换 no
a 全替换 all
q 退出,不替换了。
:n1,n2s/^/#/gc n1到n2行行首加入“#” “^”符号代表的是行首 ,'g'表示全部,“c”表示不确认
:n1,n2s/^#//g n1到n2行行首开始的“#”去掉
:n1,n2s/^//g n1到n2行在行首添加“//”
:n1,n2 s/old/new/g用new替换从第#行到第#行中出现的old
:s/old/new/c
:s/old/new/gc
在可视化模式下,按小写的V,首先选择替换范围, 然后输入:进入命令模式( 相当于选择了范围),就可以利用s命令在选中的范围内进行文本替换。区块编辑
区块编辑
1.区块选择 按 CTRL-V 进入,gVim 则按 CTRL-Q(大写) 进入
2.先择列内容 并 复制p
3.使用普通模式, 移动光标, 并p粘贴
文本复制粘贴
在正常模式下(按ESC进入)按键v进入可视化模式,然后按键盘左右键或h,l键即可实现文本的选择。
其它相关命令:
v:按字符选择。经常使用的模式,所以亲自尝试一下它。
V:按行选择。这在你想拷贝或者移动很多行的文本的时候特别有用。
CTRL+v:按块选择。非常强大,只在很少的编辑器中才有这样的功能。你可以选择一个矩形块,并且在这个矩形里面的文本会被高亮。
剪切(删除)
dd:剪切当前行
ndd:n表示大于1的数字,剪切n行 包括当前行
dw:从光标处剪切至一个单子/单词的末尾,包括空格
de:从光标处剪切至一个单子/单词的末尾,不包括空格
d$或大D :从当前光标剪切到行末(包括光标位置)删除到行末
d0:从当前光标位置(不包括光标位置)剪切之行首
dnl 剪个字符
x是删除当前光标位置的字符
X是删除当前光标位置的前面一个字符。
D 代表d$ ,从光标处删除到行尾
C 代表D+a 从光标处删除到行尾并插入 D+a
s 代表cl 修改一个字符 x+a
cc 修改一整行 dd+a
复制(类似剪切)
yy:复制当前行
nyy:n表示大于1的数字,复制n行
yw:从光标处复制至一个单子/单词的末尾,包括空格
ye:从光标处复制至一个单子/单词的末尾,不包括空格
y$:从当前光标复制到行末
y0:从当前光标位置(不包括光标位置)复制之行首
粘贴
p,光标之后粘贴
大P粘贴在光标前
撤销和恢复
u :小u撤消一次操作
ctrl+r 撤销撤销操作,与小u相反 ctrl+r
大u.撤消对一行的全部操作.第二次会撤消第一次大u的操作. 少用
v模式下选择矩形文本
删除大段文本,用v 模式 小写的v
vjj 选中3行。
o 在左上角,右下角移动,
O 大O ,同一行左右两角移动。
d x 删除文本。
p 小p删除后被保存,光标移动,按p插入。p=put
注:删除是块,下行插入,删除是word,在后面插入
调换字母位置
teh 成the
teh 光标在e xp 变成 the
x 删除e,放到寄存器中,
p 删除的e,放回光标之后
插入
i:在光标所在字符前开始插入
a:在光标所在字符后开始插入
o:在光标所在行的下面另起一新行插入
s:删除光标所在的字符并开始插入
I:在光标所在行的行首开始插入 如果行首有空格则在空格之后插入
A:在光标所在你行的行尾开始插入
O:在光标所在行的上面另起一行开始插入
S:删除光标所在行并开始插入
另外 u 撤销上一步的操作 Ctrl+r 恢复上一步被撤销的操作
光标移动
1.屏幕移动
Ctrl + f //向前(往行号大的方向移动)移动一屏,想来F代表Forward
Ctrl + b //向后移动一屏,B的话应该是Before吧
Ctrl + d // 向前移动半屏,D指Down
Ctrl + u //向后移动半屏,U指Up
2.在屏幕中移动
H 移动到屏幕顶端的行
M 移动到屏幕中央的行
L 移动到屏幕底端的行
nH 移动到屏幕顶端往下的第n行
nL 移动到屏幕顶端往上的第n行
3.用z调整光标
z 将光标所在行移动到屏幕顶端
z. 将光标所在行移动到屏幕中间
z- 将光标所在行移动到屏幕低端
4.根据文本块移动
所谓的文本块也就是句子、段落、小节等
( 移动到当前句子开头
) 移动到下一个句子开头
{ 移动到当前这一段开头
} 移动到下一段开头
[[ 移动到当前这一节的开头 这个对代码很有用
]] 移动到下一节的开头 这个对代码很有用
5.根据行号来移动
Ctrl+g 显示当前行信息
nG 转至第n行
G 转至文本末尾
gg 移至文本开头
``两个 反引号可以返回到使用G之前的位置
6.整行移动
^ 移动光标到行首第一个非空字符上去
0 移动到行首
$ 移动到行末
+ 移动到下一行开头
- 移动到上一行开头
7.单词移动
W w 移动到下一个单词开头
E e 移动到下一个单词结尾
B b 倒退到上一个单词开头
8.字符移动
k 上移 k
h 左移 h l
l 右移 j
j 下移
跳跃:
返回光标历史位置
CTRL+O 偶,跳到更早时停置的光标。
CTRL+I 跳回到较新的位置,和tab一样。
:jumps 查看所有曾经跳转过的位置。
``两个 反引号可以返回到使用G之前的位置
格式化,排版
大J 下面一行合并到上面的一行 n
gg=G自动缩进 n
<< 或者>> 或者<>+enter 当前行缩进 n
n<< 或n<+enter 光标算起下面N行缩进 n
v模式下选中代码块 == (连按=两次) v
窗口切换
ctrl+ww 轮流切换
ctrl+w+ hjkl 窗口切换
编码
:set fileencoding 在Vim中查看文件编码
:set fileencoding=utf-8 设置编码