vim编辑器

vim是一个全屏纯文本编辑器,是vi编辑器的增强版。

vim与vi的区别

  • 多级撤销:在vi编辑器中,按u只能撤消上次命令,而在vim里可以无限制的撤消。
  • 语法加亮:vim可以用不同颜色来加亮代码。
  • vim里面加入了很多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等。
  • 对vi完全兼容。

vim基本使用

vim工作模式

vim有三种工作模式,分别是命令模式、输入模式、编辑模式。

  • 命令模式:当用“vim 文件名”打开文件时,首先进入的时命令模式,这个模式是主要使用快捷键的模式,命令模式不能输入,需要快捷键进入输入模式才能输入,下面列举进入输入模式的快捷键。
快捷键 作用
a 在光标后进行插入。
i 在光标前进行插入。
A 在行尾进行插入。
I 在行首进行插入。
o 往下重启一行进行输入。
O 往上重启一行进行输入。
  • 输入模式:主要用于文本编辑,和记事本类似,输入数据。
  • 编辑模式(末行模式):
快捷键 作用
:w 保存不退出。
:w 文件名 另存为新文件,但当前编辑的文件不变。
:q 不保存退出。
:wq 保存退出
:! 强制
:q! 强制不保存退出,对于普通用户,修改后不保存退出。
:wq! 强制保存退出,当文件的所有者或者root用户,对文件没有写权限时,强制写入数据使用。

命令模式基本操作

  • 移动光标
#上下左右移动光标
上、下、左、右方向键  移动光标。
h、j、k、l  移动光标,h向左,j向下,k向上,l向左。

-#把光标移动到文件头或文件尾。
gg  将光标移动到文件头。
G  将光标移动到文件尾。

#移动到行首或行尾。
^  移动到行首。
$  移动到行尾。

#移动到指定行。
:行号 可以移动到指定行。

  • 删除字母
x  删除单个字母
nx  删除n个字母,这里的n是数字,例“5x”就是删除5个字母

  • 剪切整行或删除
dd   剪切或删除整行
ndd  剪切或删除n行
:n1,n2d  剪切或删除从n1行到n2行,例“1,2d”就是删除第1行到第2行。
dG  从光标所在行删除到文件尾
#删除整行或多行,这里的命令既是删除也是剪切,使用命令之后内容会被粘到剪切板上,使用下面的粘贴命令可以粘贴

p   粘贴到光标后
P(大写)   粘贴到光标前

  • 复制
yy   复制单行
nyy  复制多行

  • 撤销
u   撤销
ctrl+r  反撤销

  • 替换
r 替换光标所在处的字符
R 从光标处开始替换,一直到Esc结束

  • 查找
/查找内容  从光标所在行向下查找
?查找内容 从光标所在行向上寻找
n   下一个
N  上一个

  • 查找替换
:1,10s/old/new/g   替换1到10行的所有old为new
:%s/old/new/g    替换整个文件中的old为new

#在shell中"#"是添加注释,可以利用上面的命令加注释
:1,4s/^/#/g   将1到4行设为注释
:1,4s/^#//g   取消注释

#c语言或PHP中是用"//"表示注释的
:1,4s/^/\/\//g   将1到4行,行首加//
:1,4s/^\/\///g   取消注释

vim常用设置

vim有一些常用的设置,日常中会使用到,这些设置可以用末行模式进行更改,末行模式中修改是对当前操作的文件生效,要一直生效可以更改vim的配置文件。

常用设置

设置参数 含义
:set nu 显示行号。
:set nonu 取消行号。
:syntax on 依据语法显示相关的颜色帮助。
:syntax off 不提供颜色帮助。
:set hlsearch 设置将查找的字符串高亮显示,默认是set hlsearch高亮显示。
:set nohlsearch 关闭搜索字符高亮显示。
:set ruler 显示右下角的状态栏,默认开启。
:set noruler 关闭右下角状态栏。
:set showmode 在左下角显示相应的模式。
:set noshowmode 关闭模式显示。
:set llist 显示回车、Tab键等隐藏字符(如Tab用"^I"表示,回车符用"$"表示。)
:set nolist 关闭隐藏字符显示。

更改配置文件

前面说了用末行模式更改设置只是暂时生效,若想一直生效可以更改配置文件,"/etc/vimrc"中可更改配置,更改后会在全局生效;如果只是个人用户想修改配置,可以在家目录中创建配置文件"~/.vimrc",直接所需配置输入文件即可,更改后可在登录相应用户时生效。
更改配置文件不会立即生效,需要注销重新登录。

注:在Windows中输入的特殊字符与Linux中是不同的, 像shell命令这种错一个字符都不行,这个时候就可以用":set list"来查看或修改,不过这样比较麻烦,Linux中也有专门的工具来修改。

vim使用技巧

在vim中导入其他文件内容或命令结果

  • 导入其他文件内容
:r 文件名   把其他文件内容导入光标位置

  • 在vim中执行系统命令查看命令结果
:! 命令   在vim中执行系统命令并查看结果

  • 将命令结果导入文件
:r !命令 在vim中执行系统命令并将命令结果导入光标位置

自定义快捷键

vim允许自定义快捷键,定义快捷键的命令格式如下:

:map 快捷键 执行的命令 

常用的自定义快捷键如下:

:map ^P I#<ESC>   按下ctrl+p时,自动将本行注释
:map ^B ^x    按下ctrl+b时,删除行首,取消注释常用
#^P不能手动输入,需要执行ctrl+v+p来定义,或者先按ctrl+v,再按ctrl+p,同理,^B也是一样。

在使用vim时定义快捷键只是暂时的,若要一直生效,需要将命令写入配置文件~/.vimrc中。

字符替换

可能在工作中我们需要经常输入一些较长的字符串,但每次都重新输入有些麻烦,vim为我们准备了字符串替换的命令,命令格式如下:

:ab 源字符 替换的字符

例:替换邮箱

:ab mymail czlmmks@csdn.com   在输入mymail之后,按回车或空格将mymail替换为邮箱

分屏打开两个文件

在vim中可以同时打开两个文件,分屏显示:

[root@ddkk.com ~]# vim -o hello net1  小写o表示上下分屏
[root@ddkk.com ~]# vim -O hello net1  大写O表示左右分屏

在上下分屏是,可以按ctrl+w后用上下方向键切换处理的文件;在左右分屏中,可以按ctrl+w后用左右方向键切换处理的文件。