【Linux@基础篇 ~】# vi/vim 命令
vi/vim 命令
1、简介
1.1 命令简介
vi -h 我们可以看到如下关于vi的帮助
usage: vim [arguments] [file ..] edit specified file(s)
or: vim [arguments] - read text from stdin #从标准输入中读入text shell编程中使用
or: vim [arguments] -t tag edit file where tag is defined #直接查找某函数或变量,并打开包含这个tag的文件。设定tag 需用ctags命令生成tags list后才能使用
大家可以用gcc编一个c的程序测试一下,还是很好用的。
or: vim [arguments] -q [errorfile] edit file with first error #编辑错误文件,光标直接定位到第一个错误
Arguments:
-- Only file names after this
-v Vi mode (like "vi") #直接进入 vi编辑模式
-e Ex mode (like "ex") #直接进入 末行模式
-s Silent (batch) mode (only for "ex")
-d Diff mode (like "vimdiff") #比较有用,可以对比两个或多个文件,具有代码对比功能
-y Easy mode (like "evim", modeless) #直接进入 vi编辑模式
-R Readonly mode (like "view") #只读模式
-Z Restricted mode (like "rvim")
-m Modifications (writing files) not allowed
-M Modifications in text not allowed
-b Binary mode
-l Lisp mode
-C Compatible with Vi: ‘compatible‘
-N Not fully Vi compatible: ‘nocompatible‘
-V[N][fname] Be verbose [level N] [log messages to fname]
-D Debugging mode
-n No swap file, use memory only
-r List swap files and exit
-r (with file name) Recover crashed session
-L Same as -r
-A start in Arabic mode
-H Start in Hebrew mode
-F Start in Farsi mode
-T <terminal> Set terminal type to <terminal>
-u <vimrc> Use <vimrc> instead of any .vimrc
--noplugin Don‘t load plugin scripts
-p[N] Open N tab pages (default: one for each file) #打开多个文件tab格式, 末行模式中N/n切换上一个tab或下一个tab
-o[N] Open N windows (default: one for each file) #打开多个文件窗口格式, 末行模式中N/n切换上一个win或下一个win
-O[N] Like -o but split vertically #打开多个文件窗口格式(竖版), 末行模式中N/n切换上一个win或下一个win
+ Start at end of file #打开文件光标直接定位到文件尾
+<lnum> Start at line <lnum> #打开文件光标直接定位到第<lnum>行
--cmd <command> Execute <command> before loading any vimrc file
-c <command> Execute <command> after loading the first file
-S <session> Source file <session> after loading the first file
-s <scriptin> Read Normal mode commands from file <scriptin>
-w <scriptout> Append all typed commands to file <scriptout>
-W <scriptout> Write all typed commands to file <scriptout>
-x Edit encrypted files
--startuptime <file> Write startup timing messages to <file>
-i <viminfo> Use <viminfo> instead of .viminfo
-h or --help Print Help (this message) and exit
--version Print version information and exit
1.2 常用的三种模式
vi编辑器主要有三种模式:
编辑模式:自由输入文本内容,和普通操作文本类似
命令模式:通过命令直接编辑和控制文本光标
末行模式:通过命令保存文件或退出vi编辑器,即在屏幕最下面冒号后输入的命令
1.3 模式之间的切换
命令模式 -> 编辑模式
使用命令vi filename打开vi编辑器,首先进入的是命令模式。通过使用使用编辑键(a, i, o 等后面会介绍)自动进入编辑模式。
编辑模式 -> 命令模式
按[ESC]键退出编辑模式进入命令模式
命令模式 -> 末行模式
按[:] 直接可输入末行模式中的命令
末行模式 -> 命令模式
按[ESC]键退出末行模式进入命令模式
2、命令模式
2.1 光标定位命令
H 光标前移一个字符
J 光标下移一行
K 光标上移一行
L 光标后移一个字符
0 光标移动到行的最前面
$ 光标移动到行的最后面
w 移动到下一个单词的第一个字母
e 移动到下一个单词的最后一个字母
b 移动到上一个单词的第一个字母
^ 移动到当前光标所在行的第一个非空字符
[n]- 上移n行 (不加n 上移一行)
[n]+ 下移n行 (不加 n 下移一行)
nG 移动到第n行
[ctrl] d 下移半页
[ctrl] f 下移一页
[ctrl] u 上移半页
[ctrl] b 上移一页
fx 向右移动到x字符
Fx 向左移动到x字符
tx 向右移动到x字符前
Tx 向左移动到x字符前
; 重复一次fx/Fx操作
, 反方向重复一次fx/Fx操作
按下[/]末行输入需要查找的关键词,按[Enter]查找, 操作类似于末行模式
/x 向下查找有x字符的位置
?x 向上查找有x字符的位置
n 重复一次
N 反方向重复一次
[n]( 移动到上一个句子的第一个字符,空白段落也会当做一个句子,以!.?作为界定
[n]) 移动到下一个句子的第一个字符,空白段落也会当做一个句子,以!.?作为界定
[n]{ 移动到上一个段落的第一个字符,空白段落也会停顿一次,以空白行作为界定
[n]} 移动到下一个段落的第一个字符,空白段落也会停顿一次,以空白行作为界定
**n可选跳转n行
2.2 文本修改命令
编辑插入模式与编辑替换模式通过[insert]键切换
a 从光标所在位置之后开始添加内容,进入编辑插入模式
A 从光标坐在行之后开始添加内容,进入编辑插入模式
i 从光标所在位置之前开始添加内容,进入编辑插入模式
I 从光标坐在行之前开始添加内容,进入编辑插入模式
o 在光标所在行新增一行开始添加内容,进入编辑插入模式。
O 在光标所在行上面新增一行开始添加内容,进入编辑插入模式。
x 删除光标所在字符
dd 删除光标所在行(确切的说是剪切)可以通过p粘贴 ndd 向下删除n行
cc 删除光标所在行(确切的说是剪切)可以通过p粘贴 进入编辑模式
yy 复制一行 nyy 复制光标下n行
p 粘贴缓存区的内容,复制到光标后
P 粘贴缓存区的内容,复制到光标前 (大写P)
r 进入编辑替换模式,输入内容直接替换内容,只能替换一个,替换完成后即回到命令模式
R 进入编辑替换模式,输入内容直接替换内容,替换多个,需要手动回到命令模式
s 删除光标所在字符,并进入编辑模式
S 删除光标所在行,并进入编辑模式
u 撤销最近一次修改,可操作多次
U 撤销对当前行的所有修改
[Ctrl] + R 重做撤销内容
d y c + 定位 组合命令
定位可以是下列几个:
e 光标所在位置到该字的最后一个字母 ex. ye常用语复制一个单词
w 光标所在位置到下个字的第一个字母
b 光标所在位置到上个字的第一个字母
$ 光标所在位置到该列的最后一个字母
0 光标所在位置到该列的第一个字母
) 光标所在位置到下个句子的第一个字母
( 光标所在位置到该句子的第一个字母
} 光标所在位置到该段落的最后一个字母
{ 光标所在位置到该段落的第一个字母
3、末行模式(行命令模式)
3.1 保存退出命令
q!不保存退出
wq!保存退出
不加感叹号按提示信息操作确认/取消
ZZ 保存退出,无提示
3.2 文本替换
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
** n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/vivian/sky/ 替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g 替换每一行中所有 vivian 为 sky (g是贪婪匹配,正则用法)
:s#vivian/#sky/# 替换当前行第一个 vivian/ 为 sky/ 也可以使用+ 来作为分隔符代替/(替换文本中/)
3.3 配置编辑器
在末行模式下可以使用set命令对vi做一些配置,常用的有:
:set nu显示行号
:set nonu隐藏行号
:set ic设置搜索时忽略大小写
:set noic搜索时对大小写敏感
:set list显示不可视字符
:set nolist不显示不可视字符
:set showmode显示当前操作模式
:set shownomode不显示当前操作模式
:set all显示所有的vi环境变量设置
:set fileformat=unix #将文件修改为unix格式,如win下面的文本文件在linux下会出现^M。
在行命令模式中设置的配置都不能保存,如果需要保存我们需要在$HOME/下新增一个.vimrc的配置文件,.开头文件默认隐藏文件,ls -a查看:
echo "set nu" >> .vimrc
这样vi编辑器中就默认显示行号了
vi自定义配置文件可以扩展很多功能,大家可以参考这篇文章
http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html
3.4 编辑其他文件
:e otherfilename
直接切换当前编辑文件为另外一个文件,需要先保存当期文件:w
4、总结
本文只是简单了介绍vi编辑器常用的一些功能和操作命令,老外可以把vi编辑器写成一本书,what‘ a awesome one! 其实能熟练掌握vi常用的一切操作已经很不容易了。万事开头难,这个编辑器不像windows中的记事本那么友好,但是功能灰常强大,就像学五笔一样,刚开始很痛苦,学成了就天下无敌了!好了就到这里了,如果以后有补充的,我会继续添加内容。下一次我们学习Linux文件操作命令。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。