目录
一、光标控制
单位级
h
向左一字符j
下一行k
上一行l
向右一字符
单词级
w
orW
向右移动到下一单词开头e
orE
向右移动到单词结尾b
orB
向左移动到单词开头
块级
- gg 到文档第一行
- G 到文档最后一行
- 0 到行首(第 1 列)
- ^ 到第一个非空白字符
- $ 到行尾(end)
- H 移动到屏幕顶端
- M 移动到屏幕中间
- L 移动到屏幕底部
- Ctrl-d 向下移动半页
- Ctrl-u 向上移动半页
- Ctrl-f 向下移动一页
- Ctrl-b 向上移动一页
- :<N> or <N>gg 跳转到第 N 行
- :+<N> or <N>j 向下跳 N 行
- :-<N> or <N>k 向上跳 N 行
二、打开文件、查找内容
在 Vim 中打开文件
:e <filename>
打开名为 filename 的文件,若文件不存在则创建之:vsp <filename>
将原有
vim
界面竖直分割并打开名为
filename
的文件,若文件不存在则创建之(
sp
为水平分割,取消分屏为:
only
或:
q
)
:Ex
在 Vim 中打开目录树,光标选中后回车打开对应文件(提示:-
进入上级目录)- gf 将光标定位到文件名的任意位置上 , 直接敲键盘
gf
进 入 - 顶端属性栏点击File----open tab 选择文件
文档内查找内容
*
向后查找光标当前所在单词#
向前查找光标当前所在单词- :/<search> 向后查找指定字符串(:set nohlsearch 将高亮关闭,或搜索一个不存在的单词)
:?<search>
向前查找指定字符串n
继续查找下一个N
继续查找上一个
行内查找
f<X>
当前行内向行尾方向查找并定位到字符X
t<X>
当前行内向行尾方向查找并定位到字符X
之前F<X>
当前行内向行首方向查找并定位到字符X
T<X>
当前行内向行首方向查找并定位到字符X
之后;
继续向当前方向查找下一个字符,
向当前相反方向查找下一个字符
匹配查找
Vim 中可以使用 % 对 ( 和 ),[ 和 ],{ 和 } 进行匹配查找,当光标位于其中一个 符号上时,按下 %,光标会跳到与之匹配的另外一个符号上。
文件历史buffer
Vim 的 buffer就是当前 Vim session 的文件历史记录。
- :使用buffers 或 :ls 命令查看,:bn 打开缓存中下一个文件
- :bp 打开缓存中上一个文件
- :b<N> 打开缓存中第 N 个文件
你也可以使用 :bdelete<N> 来删除所要关闭的缓冲区,缩写 :bd<N>。
三、插入、修改内容
插入内容
i
当前字符前插入a
当前字符后插入I
行首插入A
行尾插入o
在下一行插入O
在上一行插入
删除(并保存到 Vim 剪贴板)
s
删除当前字符,并进入INSERT
模式S
删除当前行并保存到 Vim 剪贴板,同时进入INSERT
模式(等同于cc
)x
删除当前字符,相当于 insert 模式下的Delete
X
删除前一个字符,相当于 insert 模式下的Backspace
dd
删除当前行,并将删除的内容保存到 Vim 剪贴板d<X>
删除指定内容并保存到 Vim 剪贴板- n dd删除光标所在行向下的n行
- d 1G删除所在行在内到第一行
- dG删除所在行到最后一行
- d0删除光标到行首
- d$删除光标到行尾
cc
删除当前行并保存到 Vim 剪贴板,同时进入INSERT
模式c<X>
删除指定内容并保存到 Vim 剪贴板,同时进入INSERT
模式批量删除:进入
normal
模式
ctrl+v
选中要操作的内容进行删除(批量替换同理,选中操作内容后按
s
进入插入模式,编辑完成
esc
退出即可)
-
删除包含text关键字的行
:g/text/d
-
:删除以 #开的的注释内容。
:g/^#/d
-
1、删除行首所有空格:%s/^\s*//g
2、删除行尾所有空格: %s/\s*$//g
-
:%s/ /\r/g/ 将文章中所有的空格替换为回车
-
g/^\s*$/d 删除空白行
-
g/[//]/d 删除含有//的行
复制、粘贴
yy
复制当前行到 Vim 剪贴板- y dd复制光标所在行向下的n行
- y 1G复制所在行在内到第一行
- yG复制所在行到最后一行
- y0复制光标到行首内容
- y$复制光标到行尾内容
鼠标选中
y<X>
复制指定内容到 Vim 剪贴板
粘贴
p
在当前位置后粘贴P
在当前位置前粘贴选中后鼠标中键
合并
J
将当前行与下一行合并
替换
r<X>
将当前字符替换为 Xgu<X>
将指定的文本转换为小写gU<X>
将指定的文本转换为大写:%s/<search>/<replace>/
g 全文查找 search 内容并替换为 replace 内容
撤销、重做
u
撤销Ctrl-r
重做
保存文件
:w
保存当前文件:wa
保存全部文件:wq
orZZ
保存并退出:q!
orZQ
强制退出,不保存:saveas <new filename>
文件另存为:w <new filename>
文件另存一份名为<new filename>
的副本并继续编辑原文件
四、简单设置 Vim
Vim的全局配置一般在/etc/vim/vimrc或/etc/vimrc,对所有用户生效,个人配置在~/.vimrc如果没有就新建一个, 修改完成执行 :wq 或者 ZZ 保存退出,再次进入 Vim 时,你的这些配置就已经生效了
- :set number 显示行号
- :set relativenumber 显示相对行号(这个非常重要,慢慢体会)
- :set hlsearch 搜索结果高亮
- :set autoindent 自动缩进
- :set smartindent 智能缩进
- :set tabstop=4 设置 tab 制表符所占宽度为 4
- :set softtabstop=4 设置按 tab 时缩进的宽度为 4
- :set shiftwidth=4 设置自动缩进宽度为 4
- :set expandtab 缩进时将 tab 制表符转换为空格
- :filetype on 开启文件类型检测
- :syntax on 开启语法高亮
重复上一次命令
按 . 重复执行上一个命令
缩进
- >> 向右缩进当前行
- << 向左缩进当前行
自动排版
- == 自动排版当前行
- gg=G 当前文档全文自动排版
- <N>== 对从当前行开始的 N 行进行自动排版
- =<N>j 对当前行以及向下 N 行进行自动排版
- =<N>k 对当前行以及向上 N 行进行自动排版