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 针对当前用户

 

posted @ 2019-11-07 17:52  网络小白-lzg  阅读(540)  评论(0编辑  收藏  举报