基本上 vi/vim 共分为三种模式,分别是普通模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
这三种模式的作用分别是:
1、普通模式:
用户刚刚启动 vi/vim,便进入了普通模式。此状态下敲击键盘动作会被Vim识别为普通命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
常用命令:
i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
普通模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
2、输入模式
在普通模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到普通模式
3、命令模式(底线的命令:下文叫底线命令模式)
在普通模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令多。
举例:
在底线命令模式中,基本的命令有(已经省略了冒号):
q 退出程序
w 保存文件
按ESC键可随时退出底线命令模式。
所以 :wq 表示保存文件并退出。
1.翻页:
普通移动 | |
---|---|
快捷键 | 作用 |
h | 光标向左移动 |
l | 光标向有移动 |
j | 光标移动到下一行 |
k | 光标移动到上一行 |
翻页移动 | |
快捷键 | 作用 |
G | 最底部 |
gg | 最顶部 |
ctrl+f | 向下翻一页 |
ctri+b | 向上翻一页 |
ctrl+e | 向下翻几行 |
ctrl+y | 向上翻几行 |
2.复制与粘贴
全部复制与全部粘贴 | |
---|---|
快捷键 | 作用 |
esc+ggyG | 全部复制 |
esc+ggdg | 全部删除 |
esc+ggvG | 全部高亮 |
windows中vim下屏幕内容的粘贴与复制 | |
快捷键 | 作用 |
ctrl+insirt | 复制(选中的内容) |
shitf+insert | 黏贴(选择中的内容) |
VIM的粘贴与复制 | |
y | 复制 |
p | 粘贴 |
搜索复制 | 在命令模式下:“ :‘’ |
命令 | 含义 |
set 13,15 co 18 | 复制13-15行的内容把它放到18 行后 |
VIM下其他复制与粘贴 | |
命令 | 含义 |
v+h/j/k/l+y+p (o:光标前后补选) | 在v模式下,上下左右移动选择要复制的内容,y进行复制,p进行粘贴 |
shift+v+j/k | 按行选择进行复制 |
ctrl+v | 矩阵复制 |
yy | 复制光标所在的行 |
3.删除
快捷键 | 含义 |
---|---|
x | 删除光标选中字母 |
dd | 删除光标所在行 |
ggdG | 删除全部内容 |
dw | 输出光标所在的单词 |
4.跳跃
快捷键 | 含义 |
---|---|
$ | 跳跃到行末 |
^ | 跳跃到行首 |
b | 跳跃到单词首字母 |
e(w) | 跳跃到单词尾字母 |
{} |
5.后悔药
敲击按键 | 含义 |
---|---|
u (uu) | 表示撤销最后一次修改 |
U | 表示撤销对整行的修改 |
Ctrl+r | 删除上一个命令 |
6.替换
快捷键(命令) | 含义 |
---|---|
R | 进入替换模式(左下角出现REPLACE)此时输入字符替换当前字符 |
r | 替换当前光标所在字符(无需进入insert模式) |
3r | 替换所在字符(包含)以及后面两个的字符(不足的话不会改变) |
/old/new | 将光标所在行的第一个old替换成new |
/old/new/g | 将光标所在行的所有old替换成new |
全部的替换 | |
:%s/old/new/g | 将全文的old替换成new |
:%s/old/new/gc | 全文替换 但是每次替换前会询问 |
:5,13s/old/new/g | 替换第五行到第十三行的所有的old |
在 vim 中,可以使用 "daw" 命令来跳转到单词末尾并删除。
"daw" 是一个缩写,其中 "d" 表示删除,"a" 表示 "around",意思是在当前光标处周围的内容,"w" 表示单词。
因此,"daw" 命令会删除从当前光标开始的单词,包括光标所在的字符。
要使用 "daw" 命令,请在 vim 编辑器中按下 "d",然后按下 "a" 和 "w",就像这样:
daw
您也可以使用 "caw" 命令来跳转到单词末尾并删除,然后进入插入模式。 "caw" 的意思是 "change around word",意思是在当前光标处周围的内容改变。
例如,假设当前光标位于单词 "quick" 的末尾,则可以使用以下命令将单词 "quick" 替换为 "slow":
caw slow
这将删除 "quick" 并进入插入模式,您可以输入 "slow" 替换它
总结:caw 删除光标所在单词并进入插入模式
在 vim 中,可以使用 "dd" 命令删除光标所在的行。
例如,假设光标位于第 3 行,则可以使用以下命令删除第 3 行:
dd
要删除光标下的多行,可以在 "dd" 命令前面加上行数。
例如,要删除光标下的 5 行,可以使用以下命令:
5dd
此命令会删除光标所在的行以及光标下面的 4 行。
如果要删除光标上方的几行,可以使用 "d" 命令并指定光标上方的行数。
例如,要删除光标上方的 3 行,可以使用以下命令:
3d
此命令会删除光标上方的 3 行,但不会删除光标所在的行。
总结 ndd 删除光标及下面的(n-1)行 , nd 删除光标所在行上的n行;
学一种用:使用数字+命令实现快捷操作
比如: 跳转到光标下的第5行 可使用如下命令:
5j
此命令会下移动光标到第 5 行,但不包括光标所在的行。
在 vim 中,可以使用 "0" 和 "$" 命令分别跳转到行首和行末。
"0" 命令会将光标移动到当前行的开头,"$" 命令会将光标移动到当前行的末尾。
例如,要跳转到当前行的开头,可以使用以下命令:
0
要跳转到当前行的末尾,可以使用以下命令:
$
如果要跳转到文件的第一行的开头或最后一行的末尾,可以使用 "gg" 和 "G" 命令。
"gg" 命令会将光标移动到文件的第一行的开头。
"G" 命令会将光标移动到文件的最后一行的末尾。