Vim工作模式
Vim的三种最基础工作模式:
命令模式:以快捷键在命令模式做操作。vim默认为命令模式。
插入模式:即可以使用键盘做操作。
编辑模式:以命令与回车进行操作。
注:进入编辑模式的标志是冒号
模式之间的切换
在编辑模式下,输入命令可以打开或关闭行号的显示。
set nu :显示行号。
set nonu :隐藏行号。
插入命令
如下按键,使vim从命令模式切换到插入模式。
a:在光标后附加文本
A:在本行行末附加文本。
i:在光标前插入文本
I:在本行开始前插入文本。
o:在光标所在行之后下插入新行。
O:在光标所在行之前插入新行。
光标(定位)命令
字符间跳转:
数字+光标移动键
例:数字+h: 向左侧跳指定个字符;一以此类推。
行内跳转:
^: 跳至行首的第一个非空白字符。
$: 跳至绝对行尾。
0: 跳至绝对行首。
单词间跳转:
w: 后一个单词的词首
e: 跳至当前或下一个单词启尾;
b: 跳至当前或前一个单词启首;
句子间跳转:
) : 下一句;
( : 前一句;
段落间跳转:
} : 下一段;
{ : 前一段;
屏幕中跳转:
H:移至屏幕上端。
M:移至屏幕中央。
L:移至屏幕下端。
光标跳转至指定行:
gg :到第一行。
G :到最后一行。
nG :到第n行。
:n :到第n行。
<b>行号命令</b>
删除命令
x:删除光标所在处字符。
nx:删除光标所在处后n个字符。
dd:删除光标所在行。
ndd:删除n行。
D:删除从光标所在处到行尾。
dG:删除光标所在行到文件末尾的内容。
在编辑模式下
:n1,n2d:n1,n2表示行号。删除指定范围的行。
复制和剪切命令
yy、Y:复制当前行。
nyy、nY:复制当前行以下n行。
dd:剪切当前行。
ndd:剪切当前行以下n行。
p、P:粘帖在当前光标所在行下或行上。
剪切粘贴:
dd+p
复制粘贴:
yy+p
替换命令
字符 | 使用方法 | 说明 | 例子 |
---|---|---|---|
r | 更改光标所在处的字符 | ||
R | 从光标所在处开始替换字符,按下Esc结束 | ||
:%s/old/new/g | 全文替换字符串。old表示原字符串,new表示新字符串 | ||
:n1,n2s/old/new/g | n1、n2表示行号。old表示原字符串,new表示新字符串。 | 4,10s/superman/aoteman/g | |
:n1,n2s/old/new/g c | 在命令后使用c,表示替换时,会提示。 |
技巧
连续行注释
:n1,n2s/^/#/g :为n1行到n2行的行首插入“#”。n1,n2为数字,表示行号;^是一个特殊符号,表示行首。
:n1,n2s/#//g :为n1行到n2行中的“#”去除。n1,n2为数字,表示行号。
:n1,n2s/^#//g :为n1行到n2行中行首的“#”去除。n1,n2为数字,表示行号。^是一个特殊符号,表示行首。
:n1,n2s/^/\/\//g :为n1行到n2行的行首插入“//”。n1,n2为数字,表示行号;^是一个特殊符号,表示行首。\是转义符。
输入替换
在编辑模式下输入
:ab mymail ultraman@m78.net
回车后,在插入模式下每当输入了“mymail ”,vim将自动将其替换为“ultraman@m78.net”
取消ab设置。
:unab mymail ultraman@m78.net
搜索命令
/string :命令模式下输入“/”再输入需要查找的字符串,回车。vi即会开始查找字符串。该搜索区分大小写。
n:定位到下一个匹配的字符串。
N:定位到上一个匹配的字符串。
在编辑模式写,打开 忽略大小写功能
:set ic
关闭 忽略大小写功能
:set noic
撤销命令
u:取消上一步操作。保存后无法再进行撤销。
保存与退出
在命令模式
保存 :w
另存为 :w /filepath/filename
保存退出 :wq、ZZ(shift+z+z)
强制保存退出 :wq!
强行退出 :q!
注:文件的所有者或者root用户,即便没有文件的写权限,也可以强行保存退出。
vi中执行命令
在编辑模式下,使用:!后跟Linux命令,这样就可以在vi中执行Linux命令了。
例:查看/root目录下的内容
:! ls /root
导入文件内容
:r /fileparh/filename
将指定文件的内容导入到当前正在编辑的文件中
导入执行结果
:r !linux
例:这是一个小技巧,在文件中导入时间。
:r !date
map定义快捷键
:map 快捷键 替代内容
使用map可以在vi中定义快捷键。使用unmap取消快捷键。
例:定义【Ctrl+E】在文档中快速插入自己的邮箱。
“:map ^E imy@mail.net”
例:定义【Ctrl+B】在光标所在行的第一个字母取出。该快捷键可用于shell脚本中删除第一个字母 # 。
“:map ^B 0x”
注:^打法:ctrl+v