linux vi commnon commands
category | command | meaning |
associated files | ~/.vimrc | example: <ConfigScript> cat << EOF > /root/.vimrc set noexpandtab noautoindent tabstop=4 EOF |
FILENAME.swp | 如果打开FILENAME文件意外终止(<Ctrl>z), 可删除同名FILENAME.swp即可 | |
open | vim FILENAME | 打开或新建FILENAME文件,并将光标置于第一行首 |
vim +N FILENAME | 打开FILENAME文件,并将光标置于第N行首 | |
vim + FILENAME | 打开FILENAME文件,并将光标置于最后一行首 | |
vim +/KeyWord FILENAME | 打开FILENAME文件,并将光标置于第一个与KeyWord匹配的位置 | |
vim -c COMMAND FILENAME | 在打开FILENAME文件前,先执行指定的命令COMMAND | |
vim -r FILENAME | 恢复在上次发生崩溃的FILENAME文件 | |
vim -R FILENAME | 以只读的方式打开文件,但可以强制保存 | |
vim -M FILENAME | 以只读的方式打开文件,不可以强制保存 | |
vim -y <Number> FILENAME | 将编辑窗口的大小设为Number行 | |
vim FILENAME1 [FILENAME2]… | 打开多个文件。<Ctrl>ww 文件间切换 | |
vim -o FILENAME1 [FILENAME2] | 水平分割打开多个文件 | |
vim -O FILENAME1 [FILENAME2] | 垂直分割打开多个文件 | |
diff FILENAME1 [FILENAME2]… | 文件比较 | |
vimdiff FILENAME1 [FILENAME2]… | 以vi方式打开,高亮显示不同的部分 | |
:e | 重新加载当前文件 | |
:e FILENAME | 关闭当前文件,并开启新文件。若未保存,会警告 | |
:e! | 放弃当前修改,重新加载当前文件 | |
:e! FILENAME | 放弃当前文件,并开启新文件 | |
:e + FILENAME | 开启新文件,并从文件尾开始编辑 | |
:e + <Number> FILENAME | 开启新文件,并从第Number行开始编辑 | |
:enew | 编译一个未命名的新文档。(<Ctrl>W n) | |
:e# | 回到刚才编辑的文件 | |
<Ctrl>^ | ||
:f | 显示文档名,是否修改,和光标位置 | |
<Ctrl>g | ||
:f FILENAME | 改变编辑的文件名,这时再保存相当于另存为 | |
:gf | 打开以光标所在字符串为文件名的文件 | |
multifile | :n | 切换下一个文件编辑 |
:N | 切换上一个文件编辑 | |
:files | 查看已打开的文件 | |
:sp [FILENAME] | 打开新文件,并与当前上下分屏显示(<Ctrl>w 切换光标位置) | |
:vsp [FILENAME] | 打开新文件,并与当前左右分屏显示(<Ctrl>w 切换光标位置) | |
mode | <ESC> | 退出编辑模式,回到一般模式 |
:shell | 开启一个新的子shell,exit退出 | |
<Ctrl><v> | 进入可视块模式,选中需要注释的行 1. 插入:按<Shift><i>进入编辑模式,输入#,结束<Esc>。 2. 删除:选中内容,按x或者d键删除。 3. 替换:选中需要替换的内容,按下r键,然后输入替换后的内容 | |
<Shift>v | 进入可视行模式,选中整行内容 1. 复制:选中行内容后按y键及可复制 2. 删除:选中行内容后按d键删除 | |
<Shift>V | 进入可视模式 | |
:! [COMMAND] | 暂时到命令行模式下执行COMMAND的显示结果, 例如[:! ls /home]即列出/home目录 | |
:se[t] | show all options that differ from their default value. | |
:set all | show all but terminal options. | |
:set nu | 行号 | |
:set number | ||
:set nonu | ||
:set nonumber | ||
:syn on | 显示颜色帮助 | |
:syn off | ||
:syntax on | ||
:syntax off | ||
:set hlsearch | 高亮显示 | |
:nohl | ||
:set nohlserach | ||
:set nobackup | ~xxx.xxx 自动备份 | |
:set backup | ||
:set ruler | 右下角状态兰 | |
:set noruler | ||
:set show mode | 左下角状态栏是否显示"INSERT" | |
:set noshow mode | ||
:set autoindent | 缩排 | |
:set ai | ||
:set noai | ||
:set shiftwidth=4 | 反向制表符中的空格数目 | |
:set showmatch | 输入)、}时,光标会暂时回到匹配的(、{ | |
:set noshowmatch | ||
:set tabstop=4 | 制表停止位tab缩进的字符数目 | |
:set bg=dark | 底色色调(dark or light) | |
:set wrap | 折行 | |
:set nowrap | ||
:set wrapscan | 循环搜索 | |
:set nowrapscan | ||
:set ci | C编程时用的缩进格式 | |
:set cindent | ||
:set si | ||
:set smartindent | ||
:set autoread | 设置当文件变化时,自动读取新文件 | |
:set history=<Number> | 设置保存命令的行数 | |
:set cursorline | 当前行显示横线 | |
:set nocursorline | ||
:set guifont=consolas:h14 | 设置字体为 consolas,字号为14 | |
:set ff=unix | ff(fileformat),切换为unix格式,每行以 "\n" 结尾 | |
:set ff=dos | 切换为windows格式,每行以 "\r\n" 结尾 | |
:set encoding=utf-8 | 显示文本时的编码格式 | |
:set fileencoding=utf-8 | 写入文件时的编码格式 | |
:set list | 制表符显示^I,结尾显示$ | |
:set nolist | ||
:set paste | 粘贴模式 | |
:set nopaste | ||
move cursor | b | 左移一个字至字首 |
B | ||
w | 右移一个字至字首 | |
W | ||
e | 右移一个字至字尾 | |
E | ||
( | 句首 | |
) | 句尾 | |
{ | 段首 | |
} | 段尾 | |
h | 向左移动一个字符 | |
<BackSpace> | ||
<Number><BackSpace> | 向左Number个字符 | |
l | 向右移动一个字符 | |
<Space> | ||
<Number><Space> | 向右Number个字符 | |
- | 向上一行 | |
k | ||
<Ctrl><P> | ||
<Number>- | 向上Number行 | |
<Number>k | ||
+ | 向下一行 | |
j | ||
<Ctrl><N> | ||
<Enter> | ||
<Number>+ | 向下Number行 | |
<Number>j | ||
0 | 到行首 | |
^ | ||
<Home> | ||
$ | 到行尾 | |
<End> | ||
<Number>$ | 到Number行尾 | |
<Number><End> | ||
H | 光标移动到屏幕最上方所在行的行首 | |
M | 屏幕中央所在行的行首 | |
L | 最下方所在行的行首 | |
G | 最后一行 | |
<Number>G | Number指定行 | |
1G | 第一行 | |
gg | ||
:<Number> | 跳到Number指定行,如[:88],跳到第88行 | |
<Number><Enter> | 光标向下移动Number指定行数 | |
<Ctrl><F> | PageDown 下翻页 | |
<Ctrl><B> | PageUp 上翻页 | |
<Ctrl><D> | 向下移动半页 | |
<Ctrl><U> | 向上移动半页 | |
<Number>z | 将第Number行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部 | |
search & replace | /<SearchWord> | 从光标所在位置向下搜索 n下一个 N上一个 |
?<SearchWord> | ||
:% s/<OldWord>/<NewWord>/g | 全文搜索替换 | |
:N1,N2 s/<OldWord>/<NewWord>/g | 数字N1行与数字N2行之间进行替换 | |
:N s/<OldWord>/<NewWord>/g | 只在N行替换 | |
:N1,N2 s/<OldWord>/<NewWord>/gc | 数字N1行与数字N2行之间询问是否替换 | |
:1,20 s/^#// | 1与20之间的行开头去掉#号 | |
:1,20 s/^#/ | 1与20之间的行开头加上#号 | |
:1,3 s/p1/p2/g | 将第1至3行中所有p1均用p2替代 | |
:g /p1/s//p2/g | 将文件中所有p1均用p2替换 | |
:g /^\s*$/d | 删除全文中的空行(^代表开头 \s 代表空格 *通配符 $ 代表结尾) | |
delete | d | 删除 |
x | 从光标所在处向后删除一个字符 | |
X | 从光标所在处向前删除一个字符 | |
<Number>x | 向后删除Number个字符 | |
<Number>X | 向前删除Number个字符 | |
dG | 删除光标所在行处到最后一行 | |
d1G | 删除光标所在行处到第一行的所有 | |
d$ | 删除光标所在处到行尾 | |
d0 | 删除光标所在处到行首 | |
dd | 删除光标所在行 | |
<Number>dd | 删除Number行 | |
4dd | 删除当前光标所在行以下的3行 | |
<Number>dw | 删除光标处开始及其后的Number-1个字 | |
<Number>dW | ||
copy | y | 复制 |
yy | 复制光标所在行 | |
<Number>yy | 复制Number行 | |
y1G | 复制光标所在行处到第一行 | |
yG | 复制光标所在行处到最后一行 | |
y0 | 复制光标所在处到行首 | |
y$ | 复制光标所在处到行尾 | |
paste | p | 从光标所在行下一行粘贴 |
P | 从光标所在行上一行粘贴 | |
undo | u | 撤销 |
select | v | 字符选择 |
V | 行选择 | |
<Ctrl>V | 区块选择 | |
insert | i | 光标前插入 |
I | 光标所在行行首插入 | |
a | 光标后插入 | |
A | 光标所在行行尾插入 | |
o | 光标所在行下一行插入 | |
O | 光标所在行上一行插入 | |
relpace | r | 替换光标所在处的字符 |
R | 光标所在处开始向后替换 | |
modify | <Number>cw | 修改指定数目的字 |
<Number>CW | ||
<Number>CC | 修改指定数目的行 | |
read | :r FILENAME | 在当前光标处,插入另一个文件FILENAME |
:5r FILENAME | 插入FILENAME文件至当前文件的第五行下面 | |
save & quit | :w | 保存 |
:w! | 强制写入,但对该文件的权限有关 | |
:q[uit] | 退出 | |
:q! | 强制退出 | |
:x | 保存后退出 | |
:wq | 保存后退出 | |
:wq! | 强制保存退出 | |
ZZ | 若文件没有变动,则不保存离开; 若文件已经被更改过,则保存后退出。相当于wq! | |
:w FILENAME | 另存一个文件FILENAME | |
:saveas FILENAME | ||
:N1,N2 w FILENAME | 如[:1,3 w file.txt],将1行到3行的内容保存成file.txt |
reference link:
https://www.cnblogs.com/xiaolangabc/p/11283736.html
https://blog.csdn.net/weixin_45284484/article/details/95941403
https://blog.csdn.net/lgxzzz/article/details/124134846
https://www.jianshu.com/p/69c8b5eba986