赞
踩
Vim 是 Linux 操作系统中一款功能强大的文本编辑器,支持安装各种插件。但是 vim 和 windows 中的文件编辑器所不同的是它没有 UI 界面,所有的操作都是通过键盘快捷键操作完成的,因此要想熟练使用 vim 在 Linux 中进行文本编辑是有成本的,需要花费一定的时间去练习。
如果我们拿到了一个纯净版的 Linux, 里边是没有 vim 的,但是有一个类似的文本编辑器叫做 Vi。vi 编辑器的功能不是很强,可以这样理解 vim 就是 vi 的增强版。
首先介绍一下如何在线安装 vim,软件安装需要管理员权限:
$ sudo apt install vim # 如果是root用户就不用加 sudo 了
$ sudo yum install vim # 如果是root用户就不用加 sudo 了
$ vim --version
另外 vim 还提供了使用文档,直接在终端执行下面的命令就可以打开了、
$ vimtutor
在 vim 中一共有三种模式,分别是 命令模式 , 末行模式 , 编辑模式,当我们打开 vim 之后默认进入的是命令模式。
介绍的以上三种模式之间是可以相互切换的:
通过 vim 打开一个文件,如果文件不存在,在退出的时候进行了保存,文件就会被创建出来
- # 打开一个文件
- $ vim 文件名
直接在键盘上操作,通过键盘按两个连续的大写的 Z (此处是大写的Z, 需要先按住 Shift 再操作哦)
- # 先按住 shift 键, 然后连续按两次 z
- ZZ
在编码过程中,为了便于阅读和代码维护,代码都需要按照样式对其,如果代码格式凌乱,可以在命令模式下快速进行代码的格式化,让其看起来更加美观,这个操作需要在键盘上连续输入多个字符。
- # 假设写的c/c+代码没有对齐, 通过该命令可以对齐代码
- # 一定要注意最后一个字符是 大写的 G, 因此需要先按 shift
- gg=G
在 vim 中可以使用键盘上的方向键 (↑, ↓, ←, →) 来移动光标,这种操作相对比较麻烦, 有一种更加简便的操作方式, 就是使用键盘上的 h, j, k, l。
- # 标准的移动光标的方法: 使用 h, j, k, l
-
- 光标上移
- ↑
- |
- 光标左移 <-- h j k l --> 光标右移
- |
- ↓
- 光标下移
除此之外我们还可以使用一些快捷键实现光标的快速跳转,常用的有:
快捷键 | 功能 | 备注 |
0 | 光标移动到行首 | 无 |
$ | 光标移动到行尾部 | 选按两个键: shift + 4 |
gg | 光标移动到文件头 | 第一行的开始 |
G | 光标移动到文件尾部 | 最后一行的开始 |
nG | 行跳转 | n 代表要跳转到哪一行 |
n+回车 | 相对跳转 n 行 | 从光标所在当前行往下跳 n 行,n 对应的是一个整数 |
在 vim 中是没有删除操作的,其实所谓的删除就是剪切,被删除的数据都可被粘贴到文档的任意位置,即便如此我们还是习惯性的将剪切操作称之为删除,常用的删除操作如下表所示:
快捷键 | 功能 | 备注 |
x (小写) | 删除光标后边的字符 | vim 中的光标比较宽会盖住后边的字符 |
X (大写) | 删除光标前边的字符 | 无 |
dw | 删除单词 | 要先把光标移动到单词的第一个字母上再删除, 否则单词只能被删除一部分 |
d0 | 删除光标前的字符串 | 从字符串开头到光标当前位置的字符串被删除了 |
d$ (D) | 删除光标后的字符串 | 从光标当前位置到字符串尾部的字符串被删除了,使用 D 也行 |
dd | 删除光标所在行 | 无 |
ndd | 删除 n 行 | 从光标所在行开始删除 n 行,n 对应的是一个整数 |
撤销和反撤销对应 windows 中的 ctrl+z 和 ctrl+y, 但是在 vim 中使用这两个快捷键是不行的。
快捷键 | 功能 | 备注 |
u | 撤销 | 等价于 windows 中的 ctrl+z |
ctrl+r | 反撤销 | 等价于 windows 中的 ctrl+y |
前边已经介绍了,在 vim 中做删除操作就相当于剪切,剪切或者复制之后的数据都可以用来做粘贴操作,在 vim 中对应的快捷键如下:
快捷键 | 功能 | 备注 |
p | 粘贴到光标所在行的下边 | 小写的 p |
P | 粘贴到光标所在行的上边 | 大写的 P |
yy | 复制光标所在行 | 无 |
nyy | 从光标所在行向下复制 n 行 | n是要复制的行数, 代表一个整数 |
在编辑文件的过程中,有时候需要删除或者需要复制的数据不整行的,而是一行中的某一部分,这时候可以使用可视模式进行文本的选择,之后再通过相关的快捷键对所选中的数据块进行复制或者删除操作。
有三种方式可以切换到可视模式:
进入到可视模式之后,就可以进行文本块的选择和复制以及删除了
快捷键 | 功能 | 备注 |
h | 光标向左移动 | 移动光标用于可视模式下的数据块选择 |
j | 光标向下移动 | 移动光标用于可视模式下的数据块选择 |
k | 光标向上移动 | 移动光标用于可视模式下的数据块选择 |
l | 光标向右移动 | 移动光标用于可视模式下的数据块选择 |
d | 删除 (剪切) | 删除可视模式下选中的数据块 |
y | 复制 | 复制可视模式下选中的数据块 |
p (小写) | 数据粘贴到光标的后边 | 粘贴在可视模式下复制或者剪切的数据块 |
P (大写) | 数据粘贴到光标的前边 | 粘贴在可视模式下复制或者剪切的数据块 |
控制光标方向用来选择文件中的不规则数据块,可以对选中的文本信息进行复制和删除
- # 进入到字符可视模式,直接在键盘上按 v 即可:
- v
通过 v 切换到字符可视模式之后, 在窗口的最下方会看到 -- VISUAL-- 字样。
向下移动光标可以选择一整行,向上移动光标可以取消整行选择
- # 进入行可视模式, 键盘上按 shift+v
- V
通过 V 切换到行可视模式之后, 在窗口的最下方会看到 -- VISUAL LINE -- 字样。
通过向上,下移动光标控制矩形文本块的高度,通过向左,右移动光标控制矩形文本块的宽度。
- # 进入块可视模式, 选择一个矩形文本块
- ctrl+v
通过 ctrl+v 切换到块可视模式之后, 在窗口的最下方会看到 -- VISUAL BLOCK -- 字样。
代码块注释可以使用块可视模式,具体操作步骤如下:
删除多行注释的方法,同样 Ctrl+v 进入列选择模式,移动光标把要删除的注释符选中,按下 d,注释就被删除了。
命令模式下的替换功能并不强,常用于某个单字符的替换。
快捷键 | 功能 | 备注 |
r | 替换光标后的单个字符 | 无 |
R | 替换光标后的多个字符 | 按 esc 结束替换 |
在 vim 的命令模式下一共有三种查找方式,首先需要在键盘上输入对应的字符,然后按回车键 vim 会进行关键字匹配,之后就可以通过 n 或者 N 进行关键字之间的切换了。
搜索快捷键 | 关键字遍历 | 描述 | 备注 |
/ | n | 从当前位置向下 | 直接按键盘上的 / 即可 |
N | 从当前位置向上 | ||
? | n | 从当前位置向上 | 直接按键盘上的 ? 即可,需要使用组合键 |
N | 从当前位置向下 | ||
# | n | 从当前位置向上 | 光标需要先放在被搜索的关键字上,键盘上按 # |
N | 从当前位置向下 |
关于 ? 和 # 都需要使用组合键,这点要注意一下。
下面总结一下这三种搜索方式:
- 使用 / 或者 ? 搜索效果一样,只是遍历关键字的时候的顺序是相反的
- 使用 # 必须先从被搜索的文件中找到要搜索的关键字,好处就是搜索的内容不需要通过键盘输入
- 以上两种搜索方式各有优劣,请根据实际情况选择使用。
man 文档,是 Linux 中默认自带的帮助文档,作为程序猿可以通过这个文档来查询 shell 命令或者标准 API 函数或者系统自带的配置文件格式的说明等信息。
man 文档一共有 9 个章节, 具体如下:
章节 | 说明 |
section 1 | Linux 提供的所有 shell 命令 |
section 2 | 系统函数(由内核提供的) |
section 3 | 库调函数 (程序库中的函数) |
section 4 | 特殊文件 (通常在 /dev 目录中可以找到) |
section 5 | 系统配置文件格式和约定,比如:/etc/passwd |
section 6 | 游戏(如果有的话) |
section 7 | 杂项 (包括宏包和约定) |
section 8 | 系统管理命令 (通常仅针对 root 用户) |
section 9 | 内核例程 [非标准] |
- # 打开 man 文档首页
- $ man man
- # 退出 man 文档,直接按键盘上的 q 即可
- q
那么,我们如何通过 man 文档查询相关的 shell 命令或者函数等信息呢?
- # 下边举几个例子:
-
- # 查询第一章的shell命令
- $ man 1 cp
-
- # 查询第二章的系统函数 (如: read, write, open 等)
- $ man 2 read
-
- # 查询第三章的标准的库函数 (如: fread, fwrite, fopen 等)
- $ man 3 fread
-
- # 查询第五章的特殊的配置文件说明, 比如: /etc/passwd 或者 /etc/group
- $ man 5 passwd
查询的时候章节号是可以省略的,只是查到的结果不精确。如果不写章节号,从第一章开始搜索查询的关键字,如果查询到了,直接就结束了。也就是说如果查询的是函数,但是这个函数和某个命令的名字是相同的,查询到第一章搜索就结束了。
如果当前是在 vim 的命令模式下,我们可以直接跳转到 man 文档:
- 找到要查看的函数,然后将光标放到该函数上
- 在键盘上依次输入:章节号 (可选) + K(shift+k)(大写的k),就会自动调整到 man 文档中了
如果要编辑文件,需要从命令模式切换到文件编辑模式,切换模式的快捷键有很多,不同的快捷键对应的效果有所不同,效果如下表所示:
快捷键 | 功能 |
i | 从光标前边开始输入 |
a | 从光标的后边开始输入 |
o | 在光标下边创建新行,在新行中输入 |
s | 删除光标后边的字符 (盖住的字符), 从删除的字符位置开始输入 |
I (大写的i) | 从当前行行首开始输入 |
A | 从当前行行尾开始输入 |
O | 在光标上边创建新行,在新行中输入 |
S | 删除当前行,在当前行开始输入 |
文件编辑完成之后,从编辑模式回到命令模式只需要按键盘上的 Esc 即可。
从命令模式切换到末行模式只需要在键盘上输入一个 :,同时这个符号也会出现在窗口的最下端,这时候我们就可以在最后一行输入我们执行的命令了。
- # 命令模式切换到末行模式
- 在命令模式下键盘输入一个 冒号 -> :
-
- # 从末行模式 -> 命令模式
- 1. 按两次esc
- 2. 在末行模式下执行一个完整指令, 执行完毕, 自动回到命令模式
从末行模式切换回命令模式有两种方式:
- 按两次 Esc
- 在末行模式下执行一个完整指令,执行完毕,自动回到命令模式
使用 vim 对文件编辑完成之后,需要保存或者退出 vim 一般都是在末行模式下完成的,不管是进行那种操作都有对应的操作命令,如下表:
末行模式下输入的命令 | 功能 |
q | 退出,如果退出的时候文件没有保存,vim 会提示是否要保存 |
q! | 直接退出,不保存 (强制退出) |
w | 保存,不退出 (相当在 windows 中于按了 ctrl+s) |
wq | 保存退出 |
x | 保存退出 |
末行模式下的替换比命令模式下的替换功能要强大的多,在末行模式下可以指定将什么样的内容替换为什么样的内容,并且可以指定替换某一行或者某几行或者是全文替换。
替换对应的命令是 s 并且可以给其指定参数,默认情况下只替换相关行的第一个满足条件的关键字, 如果需要整行替换需要加参数 /g。
末行模式下的替换命令 | 说明 |
s / 被替换的关键字 / 新的关键字 /g | 只对光标所在行进行替换 |
行号 1, 行号 2s / 被替换的关键字 / 新的关键字 /g | [行号1 , 行号2] 是一个从小到大的范围,对这个范围进行替换 |
% s / 被替换的关键字 / 新的关键字 /g | % 代表对所有行进行替换 |
分屏就是将当前屏幕中的窗口以水平或者垂直的方式拆分成多个,在不同的子窗口中可以显示同一个文件或者不同文件中的内容,下边介绍一下相关的分屏命令:
末行模式命令或者快捷键 | 说明 | 备注 |
sp | 水平分屏,多个窗口垂直排列 | 多个窗口中显示同一个文件里的内容 |
vsp | 垂直分屏,多个窗口水平排列 | 多个窗口中显示同一个文件里的内容 |
ctrl+w+w | 光标在打开的屏幕之间切换 | 快捷键操作 (按住 ctrl 然后按两次 w) |
qall | 同时退出多个屏幕 | |
wqall | 同时保存退出多个屏幕 | |
sp 文件名 | 分屏的同时指定打开的文件的名字 | 在新窗口中显示指定的文件的内容 |
vsp 文件名 | 分屏的同时指定打开的文件的名字 | 在新窗口中显示指定的文件的内容 |
除了在命令模式下分屏,我们也可以在使用 vim 打开文件的时候直接分屏,下边是需要用到的参数:
- # 在vim打开文件的时候指定打开多个文件和分屏方式
- # 水平分屏
- $ vim -o 文件1, 文件2, 文件3 ...
- # 垂直分屏
- $ vim -O 文件1, 文件2, 文件3 ...
在 vim 中不仅可以在命令模式下进行行的跳转,也可以在末行模式下进行行跳转,末行模式下指定哪一行光标就可以跳转到哪一行。
:行号 # 输入完行号之后敲回车
在使用 vim 编辑文件的过程中,还可以在末行模式下执行需要的 shell 命令,在执行 shell 命令之前需要在前边加上一个叹号 !。
- # 语法:
- :!shell命令
-
- # 举例
- :!ls # 回车即可
vim 是一个文本编辑器工具,这个工具也是有配置文件的,文件的名字叫做 vimrc,在里边可以设置样式,功能 , 快捷键等属性 。对应的配置文件分为两种 用户级别和系统级别。
Linux 的文本编辑器 vim 功能不仅强大,还支持安装各种插件,但是插件的安装一直是让小伙伴们头疼的问题。下面为大家介绍一个快速安装插件的方法,这是 github 上的一个开源项目,基于脚本一键安装,下面是这个项目里 README 中的相关描述:
vimplus 项目的 github 地址: https://github.com/chxuan/vimplus
安装 HomeBrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装 vimplus
- git clone https://github.com/chxuan/vimplus.git ~/.vimplus
- cd ~/.vimplus
- ./install.sh
设置 Nerd Font
更新 vimplus
./update.sh
支持以下发行版
未完待续...
作者: 苏丙榅
链接: https://subingwen.cn/linux/vim/
来源: 爱编程的大丙
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。