Linux_vim
一、什么是vi/vim
vi:vi是Unix及Linux系统下标准的编辑器,由美国加州大学伯克利分校的Bill Joy所创立 。有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。
vim:vim 是一个全屏幕纯文本编辑器,是vi 编辑器的增强版。代码补完,编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
二、vi与vim的区别
vi和vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些比如语法高亮的新特性。
vim相较于vi的优势主要体现在以下几个方面:
多级撤消
- 我们知道在vi里,按 u只能撤消上次命令,而在vim里可以无限制的撤消。
易用性
- vi只能运行于unix中,而vim不仅可以运行于unix,windows ,mac等多操作平台。
语法加亮
- vim可以用不同的颜色来加亮你的代码。
可视化操作
- 就是说vim不仅可以在终端运行,也可以运行于x window、 mac os、 windows。
对vi的完全兼容
- 某些情况下,你可以把vim当成vi来使用。
搜索不同
- vi不支持正则表达式的搜索,vim支持正则表达式的搜索。
脚本语言不同
- vi没有自己的脚本语言,只是在Unix及类Unix系统下进行编辑的工具。vim有自己的脚本语言,称为vim脚本(也称为vimscript或vimL),用户可以通过多种方式使用它来增强vim。
共享不同
- vi不具有高度可配置性,无法和各个vi安装之间共享文件。vim具有高度可配置性,包含vim核心全局设置(称为vimrc)的文件可以在各个Vim安装之间共享。
三、vi/vim基本使用
3.1 vi/vim工作模式
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令(有许多快捷键模式)。命令模式主要控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入输入模式下,或者到底行命令模式。
若想要编辑文本:启动vim进入了命令模式后需切换到输入模式。命令模式想要进入输入模式,可以使用以下的方式:
命令 | 作用 |
---|---|
a | 在光标所在字符后插入 |
A | 在光标所在行行尾插入 |
i | 在光标所在字符前插入 |
I | 在光标所在行行首插入 |
o | 在光标下插入新行 |
O | 在光标上插入新行 |
输入模式:
主要用于文本编辑,和记事本类似,功能为编辑数据。
底线命令模式:
在命令模式下按下:(英文冒号)就进入了底线命令模式。底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。底线命令模式可以保存文件或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。按ESC键可随时退出底线命令模式。
命令 | 功能 |
---|---|
:w | 保存不退出 |
:w 新文件名 | 把文件另存为新文件 |
:q | 不保存退出 |
:wq | 保存退出 |
:! command | 暂时离开vim执行command命令 |
:q! | 强制不保存退出,用于修改文件之后,不保存数据退出 |
:wq! | 强制保存退出,当文件的所有者或者root用户,对文件没有写权限的时候,强制写入数据使用 |
简单的说,我们可以将这三个模式想成底下的图标来表示:
3.2 命令模式操作
3.2.1 移动光标
方式 | 说明 |
---|---|
h或← | 光标左移 |
j或↓ | 光标下移 |
k或↑ | 光标上移 |
l或→ | 光标右移 |
数字n +上述4种命令 | 数字n +上述4种命令 |
gg | 移动到文件头 |
G | 移动到文件尾 |
0或Home | 移动到行首字符 |
$或End | 移动到行末字符 |
:数字n | 移动到第n行 |
数字n +G | 移动到第n行 |
3.2.2 删除或剪切
方式 | 说明 |
---|---|
x和X | 删除单个字母,x相当于del,X相当于backspace |
数字n +x | 删除 n 个字母 |
dd | 删除(剪切)单行 |
数字n +dd | 删除(剪切)n行 |
:n1,n2d | 删除指定范围的行 |
p | 粘贴到光标后 |
P | 粘贴到光标前 |
dG | 删除所在光标到文件尾 |
d$ | 删除所在光标到行末 |
d0 | 删除所在光标到行首 |
3.2.3 复制
方式 | 说明 |
---|---|
yy | 复制单行 |
数字n +yy | 复制n行 |
3.2.4 撤销
方式 | 说明 |
---|---|
u | 撤销,“u”键能一直撤销到文件打开时的状态,类似Windows 下“ctrl+z”键的作用。 |
ctrl+r | 反撤销,“ctrl+r”能一直反撤销到最后一次操作状态,类似Windows 下“ctrl+y”键的作用。 |
. | 重复前一个动作 |
3.2.5 替换
方式 | 说明 |
---|---|
r | 替换光标所在处的字符, |
R | 从光标所在处开始替换字符,按 ESC 结束 |
3.2.6 vim 配置文件
方式 | 说明 |
---|---|
:set nu | 显示行号。 |
:set nonu | 取消行号。 |
:syntax on | 显示语法显示相关的颜色帮助。 |
:syntax off | 取消语法显示相关的颜色帮助。 |
:set hlsearch | 设置是否将查找的字符串高亮显示。默认是set hlsearch 高亮显示 |
:set nohlsearch | 取消将查找的字符串高亮显示。 |
:set ruler | 设置是否显示右下角的状态栏。默认是set ruler 显示。 |
:set noruler | 取消右下角的状态栏。 |
:set showmode | 设置是否在左下角显示如“—INSERT--”之类的状态栏。默认是set showmode 显示 |
:set noshowmode | 取消左下角显示。 |
:set list | 设置是否显示隐藏字符(Tab 键用“^I”表示,回车符用“$”表示)。默认是nolist 显示。如果使用set list 显示隐藏字符,类似“cat –A文件名”。 |
:set nolist | 隐藏特殊字符显示。 |
注意:vim 支持更多的设置参数,可以通过“:set all”进行查看。大家会发现,这些设置参数都只是临时生效,一旦关闭文件再打开,又需要重新输入。如果想要永久生效,需要手工建立vim 的配置文件“~/.vimrc”,把你需要的参数写入配置文件就永久生效了。
注意:补充:Windows 下回车符在Linux 中是用“^M$”符号显示,而不是“$”符。这样会导致Windows下编辑的程序脚本,无法在Linux 中执行。这时可以通过命令“dos2unix”,把Windows 格式转为Linux格式,当然反过来 “ unix2dos ” 命令就是把Linux 格式转为Windows 格式。这两个命令默认没有安装,需要手工安装才能使用。
3.2.7 查找
方式 | 说明 |
---|---|
/查找内容 | 从光标所在行向下查找 |
?查找内容 | 从光标所在行向上搜索 |
n | 下一个 |
N | 上一个 |
3.2.8 替换
:1,10s/old/new/g
#替换1 到10 行的所有old 为new
:%s/old/new/g
#替换整个文件的old 为new
举例:在shell 中“#”开头是注释,那我是否可以注释文件的前10 行呢?手工一个一个注释很麻烦,那么批量替换吧:
:1,10s/^/#/g
#注释1 到10 行
:1,10s/^#//g
#取消注释
举例:在C 语言,PHP 语言等大多数语言中,是使用“//”开头作为注释的,我们当然可以用vim 来写这些程序语言脚本,那么批量加入“//”注释吧:
:1,10s/^/\/\//g
#1 到10 行,行首加入//
:1,10s/^\/\///g
#取消1 到10 行行首的//
四、vim 使用技巧
4.1 在vim 中导入其他文件内容或命令结果
4.1.1 导入其他文件内容
:r 文件名
#把文件内容导入光标位置
4.1.2 在vim 中执行系统命令
:!命令
#在vim中执行系统命令
#这里只是在vim中执行系统命令,但并不把系统命令的结果写入到文件中。主要用于在文件编辑中,查看系统信息,如时间。
4.1.3 导入命令结果
:r !命令
#在vim中执行系统命令,并把命令结果导入光标所在行
4.2 设定快捷键
:map 快捷键 快捷键执行的命令
#自定义快捷键
vim允许自定义快捷键,常用的自定义快捷键如下:
:map ^P I#<ESC>
#按“ctrl+p”时,在行首加入注释
:map ^B ^x
#按“ctrl+b”时,删除行首第一个字母(删除注释)
注意:^P快捷键不能手工输入,需要执行ctrl+V+P来定义,或ctrl+V ,然后ctrl+P。^B快捷键也是一样
4.3 字符替换
:ab 源字符 替换为字符
#字符替换
在vim编辑中,有时候需要频繁输入某一个长字符串(比如邮箱),这时使用字符串替换,能增加输入效率,例如:
:ab mymail chunqiurusi@163.com
#当碰到“mymail”时,转变为邮箱
注意:“源字符”不应设置的太短,否则有可能影响输入。
4.4 多文件打开
在vim中可以同时打开两个文件,只要执行如下命令:
[root@localhost ~]# vim -o abc bcd
[root@localhost ~]# vim -O abc bcd
#-o 小写o会上下分屏打开两个文件
#-O 大写O会左右分屏打开两个文件
- 这样可以同时打开两个文件,方便操作。如果是“-o”上下打开两个文件,可以通过先按“ctrl+w”,再按“上下箭头”的方式在两个文件之间切换。
- 如果是“-O”左右打开两个文件,可以通过先按“ctrl+w”,再按“左右箭头”的方式在两个文件之间切换。
4.5 vi/vim快捷键总结
图一:
图二: