Vim
基础帮助可以 直接在 vim 下输入 help 获得
前面会教你如何进行基础操作和跳转,这很重要,会了光标的移动和跳转之后,就可以查看 help 文件下各种命令,基本都是通过跳转来查看的。
在其中发现一个三十分钟的基础教程,在终端中输入
vimtutor
然后根据教程来操作,学习如何使用 vim ,大概有七章,都看过之后基础命令基本都会了
光标移动
基础移动
k
h l
j
对应实际的光标上下左右
跳转
- CTRL - ] 跳转到目标定义的地方
- CTRL - t 返回上次跳转点
- CTRL - o 返回上次跳转点(根据之前的跳转记录)
-
CTRL - i 往前跳转(根据之前的跳转记录)
- 数字n - w 向右移动到第 n 个单词的开头处 除了-以外 其他符号会被当作一个单词来处理
- 数字n - e 向右移动到第 n 个单词末尾 除了-以外 其他符号会被当作一个单词来处理
-
数字n - G 跳转到指定行
- 0 移动到行首
- $ 移动到行尾
- ^ 移动到本行第一个不为空格的字符
- G 跳转到最后一行
-
gg 跳转到第一行
- H 移动到当前页面的首行
- M 移动到当前页面的中间行
-
L 移动到当前页面的尾行
- [[ 移动上一个 { 所在位置,如果没有就是首行
- ]] 移动下一个 { 所在位置,如果没有就是尾行
- { 移动到上一个为空行的位置
- } 移动到下一个为空行的位置
- ( 移动到上一段首
-
) 移动到下一段首
- '. 跳转到最后修改的一行首
- `. 跳转到最后修改的准确位置
-
g; 在整个修改位置表中来回跳转
-
Fx 向左搜索为x的字符并且移动到其位置,同理x可以替换为其他字符
- zt 将光标所在行移动到屏幕顶行显示
- zb 将光标所在行移动到屏幕底行显示
-
zz 将光标所在行移动到屏幕中间行显示
- CTRL - F 向下翻页
-
CTRL - B 向上翻页
- % 对光标处的括号进行匹配,跳转到与其匹配的另一个括号
增删改查
增
- i 进入插入模式,并在光标所在位置的左侧插入内容
- a 进入追加模式,并在光标所在位置的右侧插入内容
-
A 进入追加模式,并在光标所在行末,插入内容
-
p 会将栈中内容插入到光标所在行的下一行,粘贴
- o 在光标所在行下方插入一行,并进入插入模式
- O 在光标所在行上方插入一行,并进入插入模式
删
- x 删除光标所在位置的内容
- X 退格删除
- s 删除光标所在位置内容,并插入
-
S 删除光标所在行,并在原来的行首处插入
- dw 删除光标所在位置到下一个单词的开始处,中文会识别为所有连着的字,英文则是一个单词, 都不包括符号。
- de 删除光标所在位置到单词末尾
- d$ 删除当前光标所在位置到行末
- dd 删除整行,删除的行内容会被压入栈,可以当成删除剪贴来用。
命令和对象
到这里就可以发现其实命令是两个部分组成:
- 操作符:d
- 操作次数:数字
- 操作对象:w(到下一个单词首) e(当前单词尾) $(行末)
这里的 w e $ 的概念同样也适用于其他的操作中。
改
- r 修改光标处的字符内容
-
R 连续修改光标处的字符内容
- C 表示从当前位置删除到行尾,并进入插入模式
- c 表示从当前位置删除一定内容,并进入插入模式,但是不能单独使用,必须配合操作数/对象
- w 从当前光标位置删除一个字符,并进入插入模式
- $ 从当前光标位置删除到行尾,并进入插入模式
-
cc 删除本行所有内容,并在原本的行首位置进入插入模式
- * 查找光标初的word
- cw 修改目标word
- esc/CTRL - [ 退出到正常模式 (不可以使用CTRL-C 无法触发insert退出事件)
- . 重复之前的操作,替换所有word
如果要取消查找的高亮部分,那么必须得 :noh 比较麻烦
- guu 整行内容修改为小写
- gUU 整行内容修改为大写
-
g~~ 整行内容大小写翻转
- CTRL - a 自动把光标下的数字增加1
- CTRL - X 自动把光标下的数字减少1
查
- ? - 字符 可以在当前文件从下到上搜索该字符
- / - 字符 可以在当前文件从上到下搜索该字符
- n 向下查找
- N 向上查找
- :set ic 可以设置忽略大小写
- :set hls 设置高亮显示查询目标
- :set ls 实时部分匹配,会实时根据输入的搜索内容匹配显示
- :set noic 不忽略大小写
- :set nohlsearch 移除高亮显示 等效于 :noh
- 在参数前加 no 可以禁用对应的选项
- \c 后缀 单次查找忽略大小写
- :s/xx/xxx 使用xxx替换xx 只替换光标所在行第一个匹配的
- /g 后缀参数 替换整行匹配内容
- /gc 后缀参数 替换整行匹配内容,对每个匹配串进行询问是否替换
- 1,100 前缀参数 替换1-100行匹配的内容
- % 前缀参数 替换全文匹配内容
其他指令
Vim 中 leader 是 \ 键
撤销/重做
- u 撤销上次操作
- U 撤销改行的所有操作
- CTRL - r 重做上次的操作
复制粘贴
- y 复制,可以配合参数 w来使用,从而复制一个单词
- yy 复制当前行
- p 粘贴
- +”y 复制到外部剪贴板
- +”p 从外部剪贴板复制进来
补全
- CTRL - p 兼具在补全列表中选择上一个
- CTRL - n 兼具在补全列表中选择下一个
外部命令
- :! - 外部命令 可以在vim中调用外部命令,但是会短暂切到外部,然后按任意键切回来
状态
- CTRL - G 显示当前行状态以及文本状态信息
文件操作命令
- :!dir 显示当前目录内容
- :!ls 显示当前目录内容
- :w filename 保存文件为filename
- :!rm filename 删除名为filename的文件
- q 退出
- !不保存退出
- a 对所有打开的文件操作
- :e 表示编辑,常用来切换文件
- :e . 就会显示当前路径,然后选择文件,即可编辑。
- ZZ 保存退出
- ZQ 不保存退出
多行操作
- v 进入预览行模式,移动光标进行选择
- v 选择文本 d 删除选择内容
- v 选择文本 y 复制文本 可用p粘贴
- v 选择文本 = 自动调整选定行的缩进
提取合并
- :r filename 将名为filename的文件内容提取到光标处
- :r !ls 将 ls命令的输出 提取到光标处,同理其他命令也可以
- J 合并当前行和下一行,其实就是去掉本行回车符
缩进
进入预览模式,然后选择多行,使用 < 或 > 进行缩进
- > 向右缩进
- < 向左缩进
- == 自动调整缩进本行
多列操作
一般要求对其的情况下进行同一列或者多列操作较为方便
- CTRL-V 进入可视列模式
- A / I / c 进行追加 插入 删除 (只会显示一行内容,esc/CTRL - [ 退出到正常模式 (不可以 使用CTRL-C 无法触发insert退出事件)后会更新其他行内容)
- esc 更新其他行
帮助
- :help 操作指令 可以查询该指令如何使用
进阶
阅读用户手册
- :help user-manual
Quote
https://zhuanlan.zhihu.com/p/25045662
http://www.runoob.com/linux/linux-vim.html
http://www.jianshu.com/p/bcbe916f97e1
http://blog.csdn.net/xiajun07061225/article/details/7039413
https://www.zhihu.com/question/27478597
https://www.zhihu.com/question/20833248
https://www.zhihu.com/question/20151659