概述
vi 编辑器是 Linux 系统中最常用的文本编辑器,vi 在Linux界有编辑器之神的美誉几乎所有的 Linux 发行版中都包含 vi 程序。
vi 工作在字符模式下,不需要图形界面,非常适合远程及嵌入式工作,是效率很高的文本编辑器,尽管在 Linux 上也有很多图形界面的编辑器可用,但vi的功能是那些图形编辑器所无法比拟的。
那 vim 又是什么呢?
vim 是 vi 的升级版,它不仅兼容 vi 的所有指令,而且还有一些新的特性,例如 vim 可以撤消无限次、支持关键词自动完成、可以用不同的颜色来高亮你的代码。vim 普遍被推崇为类 vi 编辑器中最好的一个。
官网:http://www.vim.org/download.php
使用 vim 时,通用需要 ctags 工具辅助。ctags 是 vim 下方便代码阅读的工具,是很强大的 vim 插件,有了它浏览代码时可以在函数, 变量之间跳来跳去等等。
官网:http://ctags.sourceforge.net/
准备工作
安装 vim,ctags:
sudo apt-get install vim
sudo apt-get install ctags
vim 最简单最常用的操作
以下操作,使用 vi 或 vim 命令是等价的。
先给大家介绍一种最简单最常用的操作(打开文件,编辑文件,保存文件),如果不深入探究,学习这几个操作即可。
使用 vi 打开文件
vi filename:打开或新建文件,并将光标置于第一行行首
如果文件不存在,则会新建文件,如下:
如果文件存在,即为打开文件,打开文件后,按 “i” 进入插入模式后,才可以进行编辑:
由于 vim 配置原因,导致如上图的分栏,按 “F9” 即可实现隐藏显示分栏切换。
默认的情况下,打开文件,是不能直接编辑的:
按 “i” 进入插入模式,即可编辑:
vi +n filename:打开文件,并将光标置于第 n 行行首
保存文件(其中一种方式):
一定要先退出插入模式,然后,shift + zz (按住 “shift” + 按两下“z”键) 即可保存退出当前文件。
vim 的详细使用
vim 编辑器有 3 个操作模式(模式的名字不重要,我总分不清,知道每种模式下干什么事即可):
1、vi 插入模式
vi 创建一个不存在文件时,默认进入插入模式
2、vi 编辑模式
vi 打开一个已经存在文件时,默认进入编辑模式
在此模式下可进入插入模式、控制屏幕光标的移动、进行文本的选择、复制、粘贴、剪切、删除、查找等工作。
3、vi 最后一行模式 ( 命令模式 )
在编辑模式下,按 “shift” + “ : ” 进入
跟编辑模式类似,完成存盘、另存、查找等任务
注:以上图片上传到红联Linux系统教程频道中。
模式切换:
由编辑模式切换到插入模式
i 从光标当前位置开始插入
a 从光标当前位置的下一个字符开始插入
o 在光标位置的下行插入一个空行,再进行插入
I 从光标所在行的开头开始插入正文
A 从光标所在行的末尾开始插入正文
O 在光标位置的上一行插入一个空行,再进行插入
由编辑模式切换到最后一行模式(命令模式)
“shift” + “ : ”
由插入模式、命令模式切换到编辑模式
Esc(命令模式到编辑模式两次 Esc)
插入模式与命令模式不能直接转换
编辑模式下删除和修改文本
1、 u 撤消前面多次修改。
2、[n]x 删除光标后 n 个字符。
3、[n]X 删除光标前 n 个字符。
4、[n]dd 删除从当前行开始的 n 行(准确来讲,是剪切,剪切不粘贴即为删除)。
5、[n]yy复制从当前行开始的 n 行。
6、 p把粘贴板上的内容插入到当前行。
7、 .执行上一次操作
8、shift +zz ( 按住 shift 按两下 z 键 ) 保存退出当前文件
编辑模式下的复制
yw 复制一个word
dw 剪贴一个word
cw 修改一个word
块选择命令
v:按字符选择
d:剪贴选择的内容到剪贴板。
y:拷贝选择的内容到剪贴板。
c:剪贴选择的内容到剪贴板并且进入插入模式
(n)shift + >所选内容向右移动一个tab
(n)shift + <所选内容向左移动一个tab
编辑模式下移动光标
[n]G:将光标定位到第n行开始处
G:将光标定位到文件结束处
gg:将光标定位到文件开始处
编辑模式下的查找
/字符串:从光标开始处向文件尾查找字符串。
n:同一方向重复上一次查找命令
N:反方向重复上一次查找命令
常用最后一行模式命令
文件存储类
:w保存当前文件
:w file 另存当前文件为 file
:q 退出vi
:wq 保存当前文件,退出
:x 同上
:q! 不保存文件并退出
普通模式下的多行剪切、复制
:n1,n2 d 剪切 n1 到 n2 行之间的内容到粘贴板
:n1,n2 m n3 剪切 n1 行到 n2 行之间的内容到 n3 行下
:n1,n2 co n3 复制 n1 行到 n2 行之间的内容到 n3 行下
最后一行模式下的查找和替换
:s/p1/p2/g 将当前行中所有 p1 均用 p2 替代
:g/p1/s//p2/g 将文件中所有 p1 均 用 p2 替代
:n1,n2s/p1/p2/g 将 n1 到 n2 行中所有 p1 均用 p2 替代