这里写目录标题
编辑命令
插入模式:
命令 | 说明 |
---|---|
i | 在当前字符前面进入输入模式 |
I | 在当前行前面进入输入模式 |
o | 插入一个新行,并且进行输入模式 |
O | 上一行插入一个新行,并且进行输入模 式 |
a | 在当前字符后面进入输入模式 |
A | 在当前行后面进入输入模式 |
命令模式
光标移动
命令 | 说明 |
---|---|
h | 左 |
j | 下 |
k | 上 |
l | 右 |
gg | 到文章首 |
G | 最后一行 |
1g | 第一行 ng到达n行 |
Ctrl + f | 向前翻整页 |
Ctrl + b | 向后翻整页 |
Ctrl + u | 向前翻半页 |
Ctrl + d | 向后翻半页 |
^ | 将光标快速跳转到本行的行首字符 |
$ | 将光标快速跳转到本行的行尾字符 |
w | 将光标快速跳转到当前光标所在位置的后一个单词的首字母 |
b | 将光标快速跳转到当前光标所在位置的前一个单词的首字母 |
e | 将光标快速跳转到当前光标所在位置的后一个单词的尾字母 |
复制粘贴
命令 | 说明 |
---|---|
u | 撤销 |
ctrl+y | 恢复 |
r | 单字符替换 |
v | 按v键再按上下左右进行视图选中,进行快速缩进 |
x | 删除当前字符,3x删除三个字符 |
dd | 删除一行,剪切一行(ndd光标往下删n行) |
dG | 从当前行删除到最后一行 |
d1G | 从当前行删除到第一行 |
dw | 删除一个单词 |
d^ | 从当前字符删除到行首 |
d$ | 从当前字符删除到行末 |
yy | 复制当前行整行的内容到vi缓冲区 |
3yy | 复制三行 |
yw | 复制当前光标到单词尾字符的内容到vi缓冲区 |
y$ | 复制当前光标到行尾的内容到vi缓冲区 |
y^ | 复制当前光标到行首的内容到vi缓冲区 |
P | 粘贴上一行 p粘贴下一行 |
2p | 重复粘贴两次 |
末行模式:
命令 | 说明 |
---|---|
:help | 帮助 |
q | 不保存退出 |
q! | 强制不保存退出 |
wq | 保存退出 |
x | 保存退出 |
w | 保存并不退出 |
/hello | 查找hello单词,查找多个n键 |
%s/hello/world/g | 把一篇文章中的所有hello全部替换成world,%第一行到最后的意思 |
1,10s/hello/world/g | 把第1行到第10行的hello替换成world |
😒/old/new | 将当前行中查找到的第一个字符“old” 串替换为“new” |
😒/old/new/g | 将当前行中查找到的所有字符串“old” 替换为“new” |
:#,#s/old/new/g | 在行号“#,#”范围内替换所有的字符串“old”为“new” |
:%s/old/new/g | 在整个文件范围内替换所有的字符串“old”为“new” |
: s/old/new/c | 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认 |
配置设置
设置行号
配置文件位置:
/etc/virc 和 /etc/vimrc
末尾增加
set nu
设置tab移动格数
配置文件位置:
/etc/virc 和 /etc/vimrc
" 设置tab移动的格数
set ts=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent
ts 是tabstop的缩写,设TAB宽度为4个空格。
softtabstop 表示在编辑模式的时候按退格键的时候退回缩进的长度,当使用 expandtab 时特别有用。
shiftwidth 表示每一级缩进的长度,一般设置成跟 softtabstop 一样。
expandtab表示缩进用空格来表示,noexpandtab 则是用制表符表示一个缩进。
autoindent自动缩进
已存在的文件 空格和tab 长度替换
TAB替换为空格
:set ts=4
:set expandtab
:%retab!
空格替换为TAB
:set ts=4
:set noexpandtab
:%retab!
其他命令
批量移动多行
点击“esc”键进入命令模式,使用“:m,n>”或":m,n<"左移或右移,m是起始行,n是结束行
或者
n>5 从第n行开始连续5行,向右移一个tab
n<5 从第n行开始连续5行,向左移一个tab
移动的距离是一个tab,在上面的上文的设置中配置
删除空白和特定行
删除注释行 :g/^#/d
删除空白行 :g/^\s*$/d
:g 代表在全文档范围内
^代表行的开始
\s*代表空白字符
$代表行的结束
d代表删除