1、在没有图形界面的环境下,要编辑文件,vi是最佳选择,vi是Visual interface的简称
vi编辑器在系统管理、fugitive管理编辑文件时,其功能永远不是图形界面的编辑器能比拟的
vi的特点:
没有图形界面的功能强大的编辑器
只能编辑文本内容,不能对字体,段落进行排版
不支持鼠标操作
没有菜单
只有命令
vim = vi improved
vim是从vi发展出来的文本编辑器,支持代码补全、编译及错误跳转等方便变成的功能,称为编辑器之神
在很多Linux发行版中,直接把vi做成vim的软链接
2、新建和打开文件
vi 文件名 如果文件不存在,会新建一个文件
vi 文件名 +行数 打开文件定位到指定行,只带上+不指定行号,会直接定位到文件末尾
在使用vi编辑文件 hello.py 时,异常退出,磁盘上可能会保存有交换文件 .hello.py.swp
再次用vi打开文件,会提示交换文件已存在,选择删除交换文件((D))选项即可
3、vi三种工作模式
打开文件 - > 命令模式 --> i (insert) 编辑模式(ESC返回命令模式)
--> : 末行模式(ESC返回命令模式) --> wq (write & quit) 关闭文件
3.1 命令模式
打开文件首先进入命令模式,是使用vi的入口
通过命令对文件进行常规的编辑操作,例如:定位、翻页、复制、粘帖、删除 ...
其他图形编辑器下,通过快捷键或鼠标实现的操作,都在命令模式下实现
3.2 末行模式 -- 执行保存、退出等操作
要退出vi返回控制台,需要在末行模式下输入命令
末行模式是vi的出口
w write保存
q quit退出,如果没保存不允许退出
q! 强退
wq 保存并退出
x 保存并退出
3.3 编辑模式 -- 正常的编辑文字
4、常用命令
注意:命令模式下注意关闭中文输入法,否则命令不好用
4.1 重复次数
4.2 移动和选择(多练)
1) 上下左右
H 左
J 下
K 上
L 右
2) 行内移动
w 向后移动一个单词 word
b 向前移动一个单词 back
0 行首
^ 行首第一个不是空白字符的位置
$ 行尾
3) 行数移动
gg 文件顶部 go
G 文件末尾
数字gg 移动到数字对应行数
数字G 移动到数字对应行数
:数字 移动到数字对应行数
4) 屏幕移动
ctrl+b 向上翻页 back
ctrl+f 向下翻页 forward
H 屏幕顶部 Head
M 屏幕中间 Middle
L 屏幕底部 Low
5) 段落移动
使用空行来区分段落,通常一段功能相关的代码会写在一起
{ 上一段
} 下一段
6) 括号切换
{}、[]、()等括号成对出现
% 括号匹配及切换
7) 标记
开发时如果某一快代码需要稍后处理,此时先使用m增加一个标记,这样可以在需要时快速跳转
标记名称可以是a-z或A-Z之间任意一个字母
添加标记的行如果被删除,标记也被删除
如果在其他行添加了相同的标记,之前添加的标记和会被替换掉
mx mark添加标记x
'x 直接定位到标记x所在位置
8) 选中命令 (可视模式)
vi中提供3种可视模式,按ESC放弃选中,返回到命令模式
v 可视模式 从光标位置开始按正常模式选择文本
V 可视行模式 选中光标经过的完成行
ctrl+v 可视块模式 垂直向下选中文本
可视模式下可以和移动命令连用,例如: ggVG能选中所有内容
4.3 编辑操作
删除
x cut 删除光标所在字符,或选中文字
nx 删除光标处开始的n个字符
d delete 删除移动命令对应的内容
dd delete 删除光标所在行,可以ndd复制多行
D delete 删除至行尾
提示: 删除命令可以和移动命令连用,常见组合命令如下
dw 光标位置删除到单词末尾
d0 光标位置删除到起始位置
d} 光标位置删除到段落结尾
ndd 光标位置向下删除n行
d代码行数G 光标所在行删除到指定代码行
d`a 光标所在行删除到标记a之间所有代码
复制、粘帖
y(移动命令) copy 复制
yy 复制一行,可以nyy复制多行
p paste 粘帖 np光标处向下粘帖n行
注意: vi的缓冲区与系统的剪贴板不是同一个,别处使用ctrl+c复制的内容,可以在编辑模式下使用鼠标右键粘帖
替换
r replace 替换当前字符 命令模式
R 替换当前行光标后的字符 替换模式
缩排和重复执行
>> 向右增加缩进,一次性在选中的代码前增加4个空格
<< 向左减少缩进,一次性在选中的代码前减少4个空格
. 重复上次命令
在可视模式下,缩排命令只需要使用一个 > 或者 <
4.4 撤销和重复
u undo 撤销上次命令
ctrl+r redo 恢复撤销的命令
4.5 查找
/str 查找str
n 查找下一个
N 查找
* 向后查找当前光标所在单词
# 向前查找当前光标所在单词
4.6 查找并替换
1) 命令格式
:%s///g 查找并替换的固定格式
2) 全局替换
:%s/旧文本/新文本/g
3) 可视区域替换
先选中要替换文字的范围
:s/旧文本/新文本/g
4) 确认替换
如果把末尾的g改成gc (c -> confirm),在替换的时候,会有提示,推荐使用
:%s/旧文本/新文本/gc
y yes 替换
n no 不提换
a all 替换所有
q quit 退出替换
l last 作为最后一个替换,替换完成把光标移动到行首
^E 向下滚屏
^Y 向上滚屏
4.7 编辑
进入编辑模式的6个命令
i insert 在当前字符钱插入文本
I insert 在行首插入文本
a append 在当前字符后添加文本
A append 在行末添加文本
o 在当前行后面插入一空行
O 在当前行前面插入一空行
#编辑命令和数字的连用 (进入编辑模式前不要输入数字)
命令模式输入重复的次数10 按i进入编辑模式,输入print("python")回车,按ESC,会循环输入10次
#利用可视块给多行代码增加注释
python中的注释是#
移动到要添加注释的第1行代码,按^来到行首
按ctrl+v进入可视块模式
使用j向下连续选中要添加的代码行
输入I进入编辑模式,并在行首输入#
按ESC回到命令模式
5、分屏命令
可以同时编辑和查看多个文件
:sp 文件名 split 横向增加分屏
:vsp 文件名 vertical split 纵向增加分屏
1) 切换分屏窗口
分屏窗口都是基于 ctrl+w (window)这个快捷键的,然后再输入以下命令
w window 切换到下一个窗口
r reverse 互换窗口
c close 关闭当前窗口,但是不能关闭最后一个窗口
q quit 退出当前窗口,如果是最后一个窗口,则关闭vi
o other 关闭其他窗口