vi/vim命令使用说明
1、命令概述
vi/vim命令是文本编辑器。编辑多个文件,中间用空格隔开。
vi编辑器支持编辑模式和命令模式,编辑模式下可以完成文本的编辑功能,命令模式下可以完成对文件的操作命令,要正确使用vi编辑器就必须熟练掌握着两种模式的切换。默认情况下,打开vi编辑器后自动进入命令模式。从编辑模式切换到命令模式使用“esc”键,从命令模式切换到编辑模式使用“A”、“a”、“O”、“o”、“I”、“i”键。
vi编辑器提供了丰富的内置命令,有些内置命令使用键盘组合键即可完成,有些内置命令则需要以冒号“:”开头输入。
2、命令语法
vi【选项】 【文件】
3、命令选项
vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和末行模式(Last line mode)
+<行号>:将光标定位到指定行号的行首
+:打开文件,光标定位到最后一行的行首
+/word:打开文件,定位只第一次被word匹配到的行的行首
-b:以二进制模式打开文件,用于编辑二进制文件和可执行文件;
-c<指令>:在完成对第一个文件编辑任务后,执行给出的指令;
-d:以diff模式打开文件,当多个文件编辑时,显示文件差异部分;
-l:使用lisp模式,打开“lisp”和“showmatch”;
-m:取消写文件功能,重设“write”选项;
-M:关闭修改功能;
-n:不实用缓存功能;
-o<文件数目>:指定同时打开指定数目的文件;
-R:以只读方式打开文件;
-s:安静模式,不显示指令的任何错误信息。
1)命令模式
翻页命令:
Ctrl+u:向上翻半页;
Ctrl+d:向下翻半夜;
Ctrl+f:向下翻一页(小键盘PuDn);
Ctrl+b:向上翻一页(小键盘PuUp);
逐字符移动光标:
h:光标向左移一个字符
l:光标向右移一个字符(小写L)
k:光标向上移一个字符
j:光标向下移一个字符
nh/l/j/k:光标向左、右、上、下移动n个字符
以单词为单位移动光标:
w: 移至下一个单词的词首
e: 跳至当前或下一个单词的词尾
b: 跳至当前或前一个单词的词首
nw/e/b: 移动n个单词
行内跳转:
0(数字0):光标移动到当前行的行首(小键盘Home)
^: 行首的第一个非空白字符
$:光标移动到当前行的行尾(小键盘End)
n空格(n代表数字):光标向当前行右移动n个字符
行间跳转:
nG(n代表数字):光标移动到该文章第n行的第一个非空字符,如果为空行,则在行首
gg:光标移动到该文档的第一行的非空字符,如果为空行,则在行首
ngg:光标移动到该文档的第n行的行首
G:光标移动到该文章最后一行的第一个非空字符
n+回车:光标从当前行向下移动n行的第一个非空字符,如果为空行,则在行首
删除单个字符:
x或X:删除一个字符,x删除光标后的,而X删除光标前的;
nx(n代表数字):向后删除n个字符
nX(n代表数字):向前删除n个字符
删除命令:
dd:删除光标所在行整行内容;
D:删除从当前光标到光标所在行尾的全部字符;
ndd:删除当前行及其后n-1行;
dnG:删除光标所在行到第n行的所有数据
dG:删除光标所在行到最后一行的所有数据
dnj(n代表数字):删除光标所在行向下n+1行
dw:删除光标向后到下一个单词之间的字符
de:删除本单词光标后的字符(包含光标所在字符)
db:删除本单词光标前的字符(包含光标所在字符)
复制命令:
yy:复制光标所在整行,或者Y
nyy:包括光标所在行向下复制n-1行
y^或者y0:复制光标所在行到行首
y$:复制光标所在行到行尾
yw:复制一个单词
y2w:复制两个单词
ynG:复制光标所在行到第n行的所有数据
yG:复制光标所在行到最后一行的所有数据
y1G:复制至档首
ynj(n代表数字):复制光标所在行向下n+1行
粘贴命令:
p:粘贴至光标后(下)
P:粘贴至光标前(上)
替换命令:
nr字符:光标后的n个字符替换成想要替换的单个字符
R:替换模式,在光标处直接输入需要替换的字符
撤销操作:
u:撤消前一次的编辑操作
nu: 直接撤消最近n次编辑操作
连续u命令可撤消此前的n次编辑操作
U:撤销所有编辑操作
Ctrl+r:撤消最近一次撤消操作
重复前一次编辑操作:
.:点 命令模式下重复前一次编辑模式下的操作
可视化模式:
Ctrl + v:按字符选取(可视块模式)
1、插入:选中相应的字符后,按Shift+i进入编辑模式,输入需要插入的字符(选中字符的前面),结束按Esc键
2、删除:选中内容后,按x或者d键删除
3、替换:选中需要替换的内容,按r键,输入替换后的内容(把所有选中的内容替换成单个字符)
4、复制:选中内容,按y键复制
Shift + v:按行选取(可视行模式)
1、复制:选中行内容后按y键复制
2、删除:选中行内容后按d键删除
Esc:按两次取消可视化
其他命令:
J:将光标所在行与下一行的数据结合成一行(中间空格隔开)
+:光标移动到下一行的第一个非空字符
-:光标移动到上一行的第一个非空字符
H:光标移动到当前屏幕最上方的那一行的第一个非空字符,如果为空行,则在行首
M:光标移动到当前屏幕最中间那一行的第一个非空字符,如果为空行,则在行首
L:光标移动到当前屏幕最下方的那一行的第一个非空字符,如果为空行,则在行首
ZZ:命令模式下保存当前文件所做的修改后退出vi;
2)输入模式
i,I:i为在当前光标所在处插入输入的文字,I为在光标所在行第一个非空字符插入输入的文字
a,A:a为在当前光标所在处下一个字符插入输入的文字,A为在光标所在行的行尾插入字符
o,O:o为在光标所在行的下一行新建一行行首输入内容,O为在光标所在行的上一行新建一行行首输入内容
r,R:r为替换光标所在的那一个字符(单个字符),R为替换光标所在字符向后的所有字符,直到退出
Esc:退出,回到命令模式
3)末行模式
查找:
/word:在光标之后查找word字符串
?word:在光标之前查找word字符串
n:按搜索到的内容依次往下查找
N:按搜索到的内容依次往上查找
:f:显示当前的文件名、光标所在行的行号以及显示比例
替换:
:s/word1/word2:替换光标所在行的第一个满足条件的内容(word1替换成word2)
:s/word1/word2/g:替换光标所在行的所有满足条件的内容(word1替换成word2)
:m,ns/word1/word2:替换从m行到n行每行第一个满足条件的内容(word1替换成word2)
:m,ns/word1/word2/g:替换从m行到n行所有满足条件的内容(word1替换成word2)
:%s/word1/word2/g:替换整个文档满足条件的内容(word1替换成word2)
:s/word1/word2/gc:最后小写c作用替换内容时提示是否需要替换(y是,n否,a所有,q退出)
复制:
:ny:复制第n行,单行复制
:m,ny:复制从m行到n行
:$y:复制最后一行
:%y:复制所有行
删除:
:nd:删除第n行
:m,nd:删除第m到第n行
:$d:删除最后一行
:%d:删除文件所有内容
光标跳转:
:n:光标跳转到第n行的行首(n为数字)
:$:光标跳转到最后一行的行首
保存:
:w:将编辑的数据保存到硬盘文件中
:wq或:x:保存文件并退出编辑
:w [filename]:将编辑后的内容保存到另一个文件中(另存为,路径)
:m,nw [filename]:将m到n行的内容保存到名为filename的文件中(另存为,路径)
退出:
:q:退出,适用于未修改的文件
:q!:强制退出,适用于修改文件后不保存退出
插入文件内容:
:r [filename]:在编辑数据时,读入另一个文件中的数据,即将filename文件中的内容插入到光标所在行下面
编辑其他文件:
:e文件名:打开并编辑指定名称的文件
:n:如果同时打开多个文件,则继续编辑下一个文件(n为字符n)
编辑多个文件:
vim FILE1 FILE2 FILE3
next:切换至下一个文件
prev:切换至前一个文件
last:切换至最后一个文件
first:切换至第一个文件
q退出当前文件
qa 全部退出
显示行号:
:set nu:显示行号
:set nonu:取消行号
nu=number
字符大小写:
:set ic:忽略字符大小写
:set noic:区分字符大小写
ic = ignorecase
显示制表符:
:set list:显示制表符(空格、tab键)
:set nolist:取消制表符(空格、tab键)
设定自动缩进:
:set ai
:set noai
ai = autoindent
查找到的文本高亮显示或取消:
:set hlsearch
:set nohlsearch
语法高亮:
:syntax on
:syntax off
注:特性当前有效,如果想要永久有效需修改配置文件
配置文件:
/etc/vimrc 针对所有用户
~/.vimrc 针对当前用户