一、 介绍

vim的前身是vi编辑器,vi的全称是Visual Interface,我们称之为可视化接口,vim的全称是Visual Interface IMproved,意为vi增强版,是Linux上非常著名的、功能非常强大的、入门曲线非常陡峭的文本编辑器。

二、基本使用方法

1. 命令格式

vim [options] [file ..]

  • option:
    +#:打开文件直接定位第#行
    +:直接到尾行的第一个非空白字符上
    +/pattern:打开文件直接让光标处于第一个被pattern匹配到的行首

2. 模式转换

vim是一个模式化编辑器,处于不同的模式中,击键的意义也是不同的

2.1 命令模式

使用vim打开文件时,默认就处于命令模式

  • x:删除光标处的单个字符
  • #x:删除#个字符
  • dd:删除整个行
  • D:删除当前光标至行尾,留空白
  • p:缓冲区如果是整行,粘贴下方,缓冲区如果是半行,粘贴在光标后面
  • P:缓冲区如果是整行,粘贴上方,缓冲区如果是半行,粘贴在光标前面
  • yy:复制
  • r:替换光标所在处的单个字符
  • u:撤销操作
  • ctrl+r:恢复撤销操作
  • .:重复上一次操作
  • ZZ:保存退出

2.2 命令模式转为输入模式

直接在命令模式中键入

  • i:insert,在光标前转输入模式
  • a:append,在光标后转为输入
  • o:在光标所在行的下方加入新行,并转换为输入模式
  • I:在当前光标所在行首输入
  • A:在当前光标行尾输入
  • O:在当前光标上一行输入
  • c:删除当前光标至指定位置,结合光标跳转使用,删除后直接进入输入模式
  • C:删除当前光标至行尾,删除后直接进入输入模式

2.3 命令模式转为末行模式

直接敲(冒号),末行模式的使用格式为地址定界/命令操作/修饰符

2.3.1 命令操作

  • q:退出
  • q!:强制退出
  • wq:保存退出
  • x:保存退出
  • help:获取帮助
  • w /PATH/TO/SOMEWHERE:把当前文件内容保存到新的文件中
  • r /PATH/TO/SOMEWHERE:读取某个文件到指定处
  • /pattern:从当前向下执行搜索操作
  • ?pattern:从当前向上执行搜索操作
    • n:下一个搜索结果,与命令同方向
    • N:下一个搜索结果,与命令反方向
  • s:查找替换关键字,格式为s/要查找的内容/替换的内容/修饰符,分隔符可以使用其他符号代替
    • i:忽略大小写
    • g:全局替换
    • d:删除
    • y:复制

2.3.2 地址定界

  • #:具体第#行
  • #,#:从#到#行;
  • #,+#:从#到#+#行
  • .:当前行
  • $:最后一行
  • %:全文

2.4 命令模式转为可视化模式

可视化模式结合光标跳转命令选择内容,结合编辑命令来指定操作,取消则按Esc键

  • v:按字符选定
  • V:按行选定

2.5 多文件模式

2.5.1 每个文件单独显示

使用vim同时打开多个文件:vim file1 file2 file3,文件间跳转:

  • next:下一个文件
  • prev:上一个
  • first:第一个
  • last:最后一个
  • wall:保存所有
  • qall:退出所有

2.5.2 窗口分割显示

使用vim -O/-o file1 file打开多个文件

  • -o:上下分割窗口
  • -O:左右分割窗口
  • ctrl+w,↑、↓、←、→:切换窗口
  • ctrl+w,s:打开后继续分割,上下分割
  • ctrl+w,v:打开后继续分割,左右分割

3. 光标跳转

3.1 字符跳转

  • 左下上右:h、j、k、l
  • #[h、j、k、l]:一次跳转#个字符

3.2 单词跳转

  • w:跳转到下一个单词的词首
  • b:当前或前一个单词的词首
  • e:当前或下一个单词的词尾
  • #[w、b、e]:一次跳转#个单词

3.3 行内跳转

  • ^:跳转至行首的第一个非空白字符
  • 0:绝对行首
  • $:绝对行尾

3.4 行间跳转

  • G:最后一行
  • #G:第#行
  • gg:第一行

3.5 句间跳转

  • (:上一句
  • ):下一句

3.6 段落跳转

  • {:上一段
  • }:下一段

3.7 翻屏操作:

  • ctrl+f:向下翻一屏
  • ctrl+b:向上翻一屏
  • ctrl+d:向下翻半屏
  • ctrl+u:向上翻半屏

三、定制vim工作特性:

1. 配置文件:

  • 全局生效:/etc/vimrc
  • 个人生效:~/.vimrc,默认没有,需手动创建

2.常用工作特性

  • 显示、关闭行号:set nu、set nonu
  • 显示括号、关闭括号匹配:set sm、set nosm
  • 自动、关闭缩进:set ai、set noai
  • 搜索结果高亮显示、关闭高亮搜索结果:set hlsearch、set nohlsearch
  • 语法高亮、关闭语法高亮:syntax on、syntax off
  • 忽略字符大小写、关闭忽略字符大小写:set ic、set noic

四、 练习

  1. 复制/etc/grub2.cfg/tmp目录,删除/tmp/grub2.cfg文件中行首的空白字符
    末行模式输入 %s/^[[:space:]]\+//

  2. 复制/etc/init.d/functions文件至/tmp,用查找替换给/tmp/function文件中以空白开头行的行首加一个#
    末行模式 %s/^[[:space:]]/#&/

  3. 复制/etc/init.d/functions文件至/tmp目录,替换/tmp/functions/文件中的/etc/sysconfig/init为/var/log
    末行模式中输入 %s@/etc/sysconfig/init@/var/log@g

  4. 删除上述文件中所有以#号开头,且#号后面至少有一个空白字符行首的#。
    末行模式中输入%s/^#\([[:space:]]\+.*\)/\1/