1、vim可以分为三种状态:
命令模式(command mode)
插入模式(Insert mode)
底行模式(last line mode)
- 命令行模式command mode) 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
- 插入模式(Insert mode) 只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
a , i 进入编辑模式 - 底行模式(last line mode) 将文件保存或退出vim,也可以设置编辑环境,如寻找字符串、列出行号……等。
如果想让文本显示行号.就在命令行 模式下,在文本最后输入":set nu"命令.
快捷键
h,j,k,l: 上下左右键(小写模式下)
ctrl+b:屏幕往后移动一页(上一页)
ctrl+f:屏幕往前移动一页(下一页)
ctrl+u:屏幕往后移动半页(往上移动半页)
ctrl+d:屏幕往前移动半页(往下移动半页)
G: 移动到文章的最后
gg: 移动到文章的开始
“# gg”: 移动到#行
$: 将光标移动到行尾
^: 将光标移到行头
w: 下一个单词
b: 上一个单词
e: 单词的词尾
yw:将光标所在之处到字尾的字符复制到缓冲区中。
yy:复制光标所在行到缓冲区。
「#yy」:例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字。
「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能。
? 加上要查找的内容 (向前搜索) 例如"/hello"或者是"?hello"
/ 加上要查找的内容 (向后搜索)
N (shift+n) 查找上一处
n 查找下一处
替换
「r」:替换光标所在处的字符。 ,按一下"r"然后输入要即可.
「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
恢复上一次操作
「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次恢复.就相当于"CTRL +Z"的操作.
1、复制
1)单行复制
在命令模式下,将光标移动到将要复制的行处,按“yy”进行复制;
2)多行复制 在命令模式下,将光标移动到将要复制的首行处,按“nyy”复制n行;其中n为1、2、3……
2、粘贴
在命令模式下,将光标移动到将要粘贴的行处,按“p”进行粘贴
清除操作:
control + u 清除整行
control + l 清屏
选中多行后批量缩进
1、 ”shift+v“选中行
2、使用"=="进行缩进
方法1:
在一行上,">>",或"<<"(连按两下),可以缩进或缩出,用"n>>",“n<<”(n自然数),多行缩进缩出
按v进入visual状态,选定多行,用“>或<”,----缩进或缩出
方法2:
通常根据语言特征使用自动缩进排版:
在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的下面n行。
注释多行/取消多行注释
以注释为#为例
注释多行:
1)将光标置于第一行要注释的地方, 按下Ctrl-V(or CtrlQ for gVim)进入VISUAL BLOCK模式,移动光标选中所有所需注释的行;
2)依次按下大写I(shift+i),#,Esc, vim会在所选行的每行行首添加#。
对于debian/ubuntu默认使用的vim版本,上述方法不起作用。需将第2步改为,输入 : ,出现:’<,’>提示符后输入s/^/#
取消多行注释:
将光标置于第一个 # 处, 按下Ctrl-V ,移动光标选中所有需要取消注释的行,按x,所有行首的#会被删除。
移动到行首和行尾
1、 需要按行快速移动光标时,可以使用键盘上的编辑键Home,快速将光标移动至当前行的行首。除此之外,也可以在命令模式中使用快捷键"^"(即Shift+6)或0(数字0)。
2、 如果要快速移动光标至当前行的行尾,可以使用编辑键End。也可以在命令模式中使用快捷键"
"
(
S
h
i
f
t
+
4
)
。
与
快
捷
键
"
"
和
0
不
同
,
快
捷
键
"
"(Shift+4)。与快捷键"^"和0不同,快捷键"
"(Shift+4)。与快捷键""和0不同,快捷键""前可以加上数字表示移动的行数。例如使用"1
"
表
示
当
前
行
的
行
尾
,
"
2
"表示当前行的行尾,"2
"表示当前行的行尾,"2"表示当前行的下一行的行尾。
3、I是定位到行首,A是定位到行末。
1、移动到行尾"$",移动到行首"0"(数字),移动到行首第一个字符处"^"
2、移动到段首"{",移动到段尾"}"
3、移动到下一个词"w",移动到上一个词"b"
4、移动到文档开始"gg",移动到文档结束"G"
5、跳到第n行"ngg" 或 “nG” 或 “:n”
6、移动光标到屏幕顶端"H",移动到屏幕中间"M",移动到底部"L"
7、移动到上次编辑文件的位置 “`”
在每行行首或行尾添加/删除内容
一、添加
在每行行首添加相同的内容:
:%s/^/要添加的内容
在每行行尾添加相同的内容:
:%s/$/要添加的内容
二、利用正则表达式删除代码段每行的行号
:%s/^\s*[0-9]\s//gc
其中,表示行首,$表示行尾,\s表示空格,[0-9]表示0~9的数字,*表示0或多个,%s/\s*[0-9]\s//gc的意思是将每行以0或多个空格开始中间包含0或多个数字并以0或多个空格结束的字符串替换为空。