vim指南
vim指南
该文记录如何使用 vim
。
vim
1. vim简单介绍
vi是 visual interface
的简称, 它在Linux上的地位就仿佛Windows中的记事本一样. 它可以执行编辑、删除、查找、替换、块操作等众多文本操作, 而且用户可以根据自己的需要对其进行定制. vi是一个文本编辑程序, 没有菜单, 只有命令。
vim更高级一些, 可以理解是vi的高级版本,vim需要自行安装, 在shell中输入 vimtutor
命令可以查看相关的帮助文档。
2. vim的三种模式
Vi有三种基本工作模式: 命令模式、文本输入模式、末行模式。
三种工作模式的切换如图所示, 从下图中可以看出编辑模式和末行模式之间不能相互切换, 必须经过命令模式.
3. vim 基本操作
3.1. 命令模式下的操作
用户按下esc键, 就可以使vi进入命令模式下; 当使用vi打开一个新文件开始也是进入命令模式下。
3.1.1. 光标移动
如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 “30j” 或 “30↓” 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可!
快捷键 | 操作 |
---|---|
h 或 向左箭头键(←) | 光标向左移动一个字符 |
j 或 向下箭头键(↓) | 光标向下移动一个字符 |
k 或 向上箭头键(↑) | 光标向上移动一个字符 |
l 或 向右箭头键(→) | 光标向右移动一个字符 |
[Ctrl] + [f] | 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用) |
[Ctrl] + [b] | 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用) |
[Ctrl] + [d] | 屏幕『向下』移动半页 |
[Ctrl] + [u] | 屏幕『向上』移动半页 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
n | 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。例如 20 |
0 或功能键[Home] | 这是数字『 0 』:移动到这一行的最前面字符处 (常用) |
$ 或功能键[End] | 移动到这一行的最后面字符处(常用) |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行的第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
G | 移动到这个档案的最后一行(常用) |
nG | n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu) |
gg | 移动到这个档案的第一行,相当于 1G 啊! (常用) |
n | n 为数字。光标向下移动 n 行(常用) |
3.1.2. 删除命令
快捷键 | 操作 |
---|---|
x | 删除光标后一个字符,相当于 Del |
X | 删除光标前一个字符,相当于 Backspace |
dw | 删除光标开始位置的字,包含光标所在字符 |
d0 | 删除光标前本行所有内容,不包含光标所在字符 |
D[d$] | 删除光标后本行所有内容,包含光标所在字符 |
dd | 删除光标所在行(本质其实是剪切) |
ndd | 从光标当前行向下删除指定的行数, 如15dd |
v/ctrl+v | 使用h、j、k、l移动选择内容, 然后按d删除其中ctrl+v是列模式, v为非列模式 |
3.1.3. 撤销和反撤销
快捷键 | 操作 |
---|---|
u | 一步一步撤销, 相当于word文档的ctrl+z |
ctrl-r | 反撤销, 相当于word文档的ctrl+y |
3.1.4. 复制粘贴
快捷键 | 操作 |
---|---|
yy | 复制当前行 |
nyy | 复制n行, 如10yy |
p | 在光标所在位置向下新开辟一行, 粘贴 |
P | 在光标所在位置向下新开辟一行, 粘贴 |
剪切操作 | 按dd或者ndd删除, 将删除的行保存到剪贴板中, 然后按p/P就可以粘贴了 |
3.1.5. 可视模式
快捷键 | 操作 |
---|---|
v/ctrl+v | 使用h、j、k、l移动选择内容; 使用d删除; 使用y复制; 使用p粘贴到光标的后面; 使用P粘贴到光标的前面 |
3.1.6. 替换操作
快捷键 | 操作 |
---|---|
r | 替换当前字符 |
R | 替换当前行光标后的字符 |
3.1.7. 查找命令
快捷键 | 操作 |
---|---|
/ | /xxxx, 从光标所在的位置开始搜索, 按n向下搜索, 按N向上搜索 |
? | ?xxxx, 从光标所在的位置开始搜索, 按n向上搜索, 按N向下搜索 |
# | 将光标移动到待搜索的字符串上, 然后按n向上搜索,但N向下搜索 |
shift+k | 在待搜索的字符串上按shift+k或者K, 可以查看相关的帮助文档 |
3.2. 切换到文本输入模式
从命令模式切换到文本输入模式只需输入如下命令
快捷键 | 操作 |
---|---|
i | 在光标前插入 |
a | 在光标后插入 |
I | 在光标所在行的行首插入 |
A | 在光标所在行的行尾插入 |
o | 在光标所在的行的下面新创建一行, 行首插入 |
O | 在光标所在的行的上面新创建一行, 行首插入 |
s | 删除光标后边的字符, 从光标当前位置插入 |
S | 删除光标所在当前行, 从行首插入 |
按列模式插入 | 先按ctrl+v进入列模式, 按hjkl移动选定某列,按I或者shift+i向前插入, 然后插入字符, 最后按两次esc. |
3.3. 末行模式下的操作
从命令模式切换到末行模式, 输入冒号(:)
保存退出
快捷键 | 操作 |
---|---|
q | 退出 |
q! | 强制退出,不保存修改内容 |
w | 保存修改内容, 不退出 |
wq | 保存并退出 |
x | 相当于wq |
替换操作
快捷键 | 操作 |
---|---|
:s/old/new/ | 光标所在行的第一个old替换为new |
:s/old/new/g | 光标所在行的所有old替换为new |
:m, ns/old/new/g | 将第m行至第n行之间的old全部替换成new |
:%s/old/new/g | 当前文件的所有old替换为new |
:1,$s/old/new/g | 当前文件的所有old替换为new |
:%s/old/new/gc | 同上,但是每次替换需要用户确认 |
快速换屏
快捷键 | 操作 |
---|---|
ctrl + u | 向下翻半屏(up)–光标向上移动 |
ctrl + d | 向上翻半屏(down)–光标向下移动 |
ctrl + f | 向上翻一屏(front) |
ctrl + b | 向后翻一屏(back) |
分屏操作
快捷键 | 操作 |
---|---|
sp | 当前文件水平分屏 |
vsp | 当前文件垂直分屏 |
sp 文件名 | 当前文件和另一个文件水平分屏 |
vsp 文件名 | 当前文件和另一个文件垂直分屏 |
ctrl-w-w | 在多个窗口切换光标 |
wall/wqall/xall/qall/qall! | 保存/保存退出/保存退出/退出/强制退出分屏窗口 |
4. 设置
- 用户配置:
~/.vimrc
,修改用户级别的配置文件只会影响当前用户, 不会影响其他的用户。 - 全局配置:
/etc/vimrc
,实际位置以本机为主,编辑此文件会影响系统上所有用户的vim
配置。进行这种更改通常需要管理员权限。
通用配置文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
" base config
set nocompatible " 不再与 vi 兼容
set autoread " 自动读取
set mouse=a " 可以使用鼠标
set magic " 用于改变搜索模式使用的特殊字符
set title " 用于设置 vim 窗口标题
set nobackup " 覆盖文件时不保留备份文件
set noerrorbells " 表示 vim 有错误信息时不响铃
set noswapfile " 不创建交换文集
set mouse=a " 启用鼠标
set selection=exclusive
set selectmode=mouse,key
" window config
set number " 显示行号
set ruler " 显示当代前光标所在位置的行号和列号
set cursorline " 突显当前行
set showcmd " 显示命令行
set showmode " 显示当前模式
" color config
set t_Co=256 " 启动 256 色
" indent config
set autoindent " 设置新增加的行和前一行具有相同的缩进形式
set shiftwidth=4 " 每级缩进为多少个空格
set expandtab " 将 tab 转换为空格
set softtabstop=4 " 设置按下 tab 键时,缩进的空格个数
set tabstop=4 " 设置 tab 字符的显示宽度为多少个空格
" search config
set showmatch " 高亮显示匹配括号
set hlsearch " 高亮显示匹配结果
set ignorecase " 搜索时忽略大小写
set incsearch " 每输入一个字符,就自动跳到第一个匹配的结果
" highlight syntax
filetype on " 自动识别文件类型
colorscheme elflord " 设置主题 /usr/share/vim/vim*/colors/
本文由作者按照 CC BY 4.0 进行授权