0%

Vim快速上手

Vim是从vi发展出来的一个文本编辑器。功能丰富,在程序员中被广泛使用。相比其他文本编辑器,选用 Vim/vi 有着以下原因:

  • 所有的 Unix Like 系统都会内建 vi 文本编辑器,其他的文本编辑器则不一定会存在
  • 很多软件的编辑接口会主动呼叫 vi
  • Vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计
  • 程序简单,编辑速度快

概述

Vim 编辑器有三种模式:命令模式,编辑模式,底行模式。

vi键位图

安装

Vim 编辑器需要安装三个包:

1
2
3
vim-minimal-7.4.160-5.el7.x86_64
vim-common-7.4.160-5.el7.x86_64
vim-enhanced-7.4.160-5.el7.x86_64
  1. 查看本机已经存在的包,如果 vim 已经正确安装,则会显示上面三个包的名称
1
2
$ rpm -qa|grep vim
vim-minimal-7.4.629-8.el7_9.x86_64
  1. 如果缺少了其中某个包,比如缺少vim-commonvim-enhanced,使用 yum 下载安装:
1
$ yum -y install vim-common vim-enhanced

配置Vim

如果安装了 Vim,可以配置别名让 vim 命令替代掉 vi 命令。别名的配置在/root/.bashrc,如果只对单次登录临时启用别名,可以直接输入别名配置命令alias vi='vim'

添加别名

/root/.bashrc
1
alias vi='vim'

Vim 的全局配置一般在/etc/vimrc,对所有用户生效,用户个人配置在~/.vimrc。如果只对单次编辑临时启用某个配置项,可以在 Vim 的命令模式下输入对应的命令。

添加样式

/etc/vimrc
1
2
3
set number		"显示行号"              
set showmatch "高亮匹配括号"
set ai "自动缩进"

可选样式:

  • syntax on:语法高亮,自动识别代码
  • set cursorline:光标所在行高亮
  • set showmatch:高亮匹配括号
  • set number:显示行号
  • set nonumber:不显示行号
  • set autoindent:自动缩进,按下回车后下一行的缩进会与上一行的缩进保持一致
  • set encoding=utf-8 :使用 utf-8 编码
  • set t_Co=256:启用 256 色
  • set tabstop=2:按下 Tab 键时,Vim 显示的空格数
  • set softtabstop=2:Tab 转为多少个空格

粘贴模式

进入粘贴模式后,再按 i 进入插入模式,此时进行粘贴就可以避免粘贴时的缩进问题:

1
:set paste

命令模式

命令模式也叫一般模式,使用 Vim 打开文件进入的便是命令模式。在这个模式中,可以移动光标,可以对文字进行剪切、复制、粘贴。

移动光标

  • ,,,:光标向指定方向移动一个字符
  • h,j,k,l:光标向指定方向移动一个字符
  • H,M,L:光标移动到屏幕的上方、中间、下方那一行的第一个字符
  • G:移动到文件的最后一行
  • nG:移动到文件的第 n 行
  • gg:移动到文件的第一行,相当于1G

剪切、复制与粘贴

  • x:向后删除一个字符,相当于Delete
  • X:向前删除一个字符,相当于Backspace
  • dd:剪切当前行
  • ndd:剪切光标及下面共n行
  • yy:复制光标所在行
  • nyy:复制光标及下面共n行
  • p:粘贴数据在光标下一行
  • P:粘贴数据在光标上一行
  • u:撤销
  • Ctrl+R:重做
  • .:重复上一个动作

选择

  • v:字符选择,将光标经过的地方反白选择
  • V:行选择,将光标经过的行反白选择
  • Ctrl+V:区块选择,用纵向区块反白选择,按下 Shift + i,输入要插入的内容,再按 Esc,就会看到插入的效果
  • y:复制反白的地方
  • d:删除反白的地方

编辑模式

命令模式按下:iIoOaArR进入编辑模式,可以编辑文本。

  • i:从光标所在处插入
  • I:在光标所在行的第一个非空格符处开始插入
  • a:从光标所在的下一个字符处开始插入
  • A:从光标所在行的最后一个字符处开始插入
  • o:在光标所在行的下一行处插入新的一行
  • O:在光标所在行的上一行处插入新的一行
  • r:替换光标所在处的字符一次
  • R:一直替换光标所在处的文字
  • ESC:退出编辑模式,回到命令模式

底行模式

命令模式下,按:/?进入底行模式。

退出与保存

  • :w:将编辑的数据写入硬盘
  • :w!:文件属性为只读时,强制写入
  • :q:退出Vim编辑器
  • :q!:退出且不保存改动
  • :wq:保存改动后退出
  • :x:保存改动后退出

搜索

  • /word:向光标之下寻找一个名称为 word 的字符串
  • ?word:向光标之上寻找一个名称为 word 的字符串
  • n:重复前一个搜寻的动作
  • N:反向重复前一个搜寻动作
  • :num:跳转到第 num 行

替换

用法::[作用范围]s/{旧字符串}/{新字符串}[/替换标志]

  • :s/old/new:用字符串 new 替换字符串 old,替换当前行的第一个匹配
  • :s/old/new/g:用字符串 new 替换字符串 old,替换当前行的所有匹配
  • :%s/old/new:用字符串 new 替换字符串 old,替换所有行的第一个匹配
  • :%s/old/new/g:用字符串 new 替换字符串 old,替换所有行的所有匹配
  • :n1,n2s/old/new/g:在第 n1 与 n2 行之间,用字符串 new 替换字符串 old
  • :.,+ns/old/new/g:在当前行与接下来 n 行中(共 n+1 行),用字符串 new 替换字符串 old
  • :%s/old/new/gi:用字符串 new 替换字符串 old,大小不敏感
  • :%s/old/new/gI:用字符串 new 替换字符串 old,大小敏感(默认)
  • :%s/old/new/gc:用字符串 new 替换字符串 old,替换前需要确认(y/n/a/q/l/^E/^Y)
  • y表示替换
  • n表示不替换
  • a表示全部替换
  • q表示退出
  • l表示替换当前并退出
  • ^E表示逐行下滚
  • ^Y表示逐行上滚

多文件编辑

Vim 支持同时开启多个文件,可以将一个文件中的内容复制到另一个文件中。

多标签页

多文件编辑

  • vim -p[N] 文件1 文件2...,打开 N 个标签页,默认每个文件一个

  • 使用vim 文件1 文件2可以打开多个文件,只是不显示标签页

  • 使用:files命令可以查看打开的文件列表

  • 使用:n命令可以来到下一个文件

  • 使用:N命令可以来到上一个文件

多窗口

多窗口编辑

  • vim -o[N] 文件1 文件2...,打开 N 个水平分割的窗口,默认每个文件一个

  • vim -O[N] 文件1 文件2...,打开 N 个垂直分割的窗口,默认每个文件一个

  • 在 Vim 中,可以使用:sp 文件2在新的水平窗口中打开另一个文件

  • 在 Vim 中,可以使用:vsp 文件2在新的垂直窗口中打开另一个文件

  • 可以使用Ctrl+W+↑/↓/←/→快捷键进入对应位置的窗口

  • 可以使用Ctrl+W+W快捷键轮换窗口


参考资料
鸟哥的Linux私房菜
在 Vim 中优雅地查找和替换

  • 本文作者: SANNAHA
  • 本文链接: https://sannaha.moe/Vim/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!