目录
通过源码安装vim
Github项目地址:https://github.com/vim/vim
源码编译安装参考:https://blog.csdn.net/MyJoiT/article/details/82082638
卸载通过源码编译安装的Vim:进入源码目录,执行:sudo make uninstall
打开系统帮助手册
- 按下 <HELP> 键 (如果键盘上有的话)
- 按下 <F1> 键 (如果键盘上有的话)
- 输入 :help <回车>
练习vim的相关操作
vimtutor -g zh
若出现报错: Failed to load module “canberra-gtk-module”
(作者编写时运行环境为ubuntu18.04)
解决方法:
sudo apt-get install libcanberra-gtk-module
进入插入模式
进入插入模式并光标前插入文本:i
进入插入模式并光标后插入文本:a
进入插入模式并将光标移至行首:I
进入插入模式并将光标移至行尾:A
进入插入模式并在当前行下面开启新行:o
进入插入模式并在当前行上面开启新行:O
退出
不保存退出::q
保存退出::wq或:x或ZZ
常用操作
命令:【操作符】 【数字】【移动光标的动作】
操作符 | 说明 |
---|---|
d | 剪切 |
y | 复制 |
c | 修改(change) ,等于删除内容并进入插入模式 |
撤销最后一次执行的命令(undo):u
恢复到该行的原始状态:U
撤销掉撤销命令:ctrl+r
复制行:yy
剪切行:dd
剪切到行尾:D
修改行:cc
修改到行尾:C
删除光标所在位置的字符:x
替换光标所在位置的字符(replace):r
逐个替换光标所在字符,光标自动向后移动:R
可以在当前文件中往下查找该字符串:/string
可以在当前文件中往上查找该字符串:?string
下一个(next):n
上一个:N
替换该行第一个匹配的字符串:: s/old/new
替换该行全部匹配的字符串:: s/old/new/g
其中#,#代表的是替换操作的若干行中的首尾两行中匹配的字符串::#,#s/old/new/g
替换整个文件中的每个匹配字符串::%s/old/new/g
替换整个文件中的每个匹配字符串,并且会提示是否替换::%s/old/new/gc
配对括号的查找,在两个括号之间跳转:%
执行shell命令::!命令
光标移动
向下翻一页:ctrl+f
向上翻一页:ctrl+b
向下翻半页:ctrl+d
向上翻半页:ctrl+u
光标移到行首:0
光标移到行尾:$
到下一个单词起始处:w
到下一个单词结尾处:e
到上一个单词起始处:b
光标移到,该行接下来找到的第一个指定字符:f+字符
当前页面顶部:H
当前页面中部:M
当前页面底部:L
VISUAL模式
- 进入单个选择:v
- 或进入行选择:shift+v
- 选择后,复制:y,剪切:d
多行同时编辑:ctrl+v 进入行选择
- 多行同时增加,选择后键入I,输入添加内容后按Esc即可
- 多行同时删除,选择后,键入d
书签
书签分为文件书签跟全局书签。
- 文件书签是你标记文件中的不同位置,然后可以在文件内快速跳转到你想要的位置。
- 全局书签是标记不同文件中的位置。也就是说你可以在不同的文件中快速跳转
显示所有书签或指定的书签::marks [{a-z}/{A-Z}]
保存书签:m{a-z}或m{A-Z}
- 小写的是文件书签,可以用(a-z)中的任何字母标记。
- 大写的是全局书签,用大写的(A-Z)中任意字母标记。
跳转到指定书签精确位置(行和列):`{a-z}或`{A-Z}
调整到书签a所在行的起始位置:’{a-z}/{A-Z}
删除一个书签 (delete a mark) ::delm {a-z}/{A-Z}
删除全部书签 (delete all marks)::delm!
还有一些vim缺省的标识
缺省标识 | 说明 |
---|---|
0 或 " | 当前文件上次退出的位置 |
. | 最后一次执行改变的位置 |
[ | 先前改变或者复制文本的第一个字符 |
] | 先前改变或复制文本的最后一个字符 |
< | 先前选择可视化区域的第一行 |
> | 先前选择可视化区域的最后一行 |
^ | 最后一次插入模式停止的光标所在位置 |
分屏相关操作
相关英语解释:vertical,垂直的。horizontal,水平的。
垂直分屏:将屏幕垂直分割为左右两个屏
水平分屏:将屏幕水平分割为上下两个屏
在shell使用vim打开同时多个文件:
- (垂直分屏)
vim -On file1 file2
- (水平分屏)
vim -on file1 file2
创建空白分屏::new
以分屏形式打开文件:
- 垂直分屏::vsplit(或:vsp) filename
- 水平分屏::split(或:sp) filename
打开当前文件:
- split:ctrl+w+s
- vsplit:ctrl+w+v
关闭分屏:
- 取消一个分屏(close):ctrl+w+c
- 取消其它分屏,只保留当前分屏:
:only
或者ctrl+w+o
移动分屏焦点:
- 依顺序切换:ctrl+w+w
- 依方向切换:ctrl+w+方向键
改变分屏尺寸:
- 均分:ctrl+w+=
- 左:ctrl+w+数字+<
- 右:ctrl+w+数字+>
- 上:ctrl+w+数字++
- 下:ctrl+w+数字-+
将当前窗口调至最大:
- 水平分屏时:ctrl+w+数字-_
- 垂直分屏时:ctrl+w+数字-|
改变分屏位置:
- 移动到最左边:ctrl+w+H
- 移动到最右边:ctrl+w+L
- 移动到最上边:ctrl+w+K
- 移动到最下边:ctrl+w+J
折叠与展开代码
- 折叠代码:zf
- 展开代码:zo
- 折叠成对大括号之间的内容,包括大括号所在行,一般用于折叠函数定义、 循环、只有一个分支的条件判断:zfa{
- 折叠成对大括号之间的内容,不包括大括号所在行,一般用于折叠条件判断的多个分支、try-cache 的各部分内容:zfi{
后台运行vim与恢复前台
- 第一种
在命令模式下输入":sh",可以运行相当于在cmd模式下,到输入结束想回到VIM编辑器中用exit,ctrl+D返回VIM编辑器
- 第二种
将正在打开的vim后台运行:ctrl+z
查看后台程序:$ jobs
将后台程序恢复为前台程序:fg %数字
其他
显示命令行历史记录列表:q+:
显示搜索记录列表:q+/
显示当前光标所在的位置和文件状态信息:ctrl+g
启动man手册查询光标处单词:shift+k
我的vim相关配置
https://github.com/HideOnLie/dotfile/blob/master/.vimrc
习惯性按了Ctrl+s该怎么办?
由于长时间在windows的编辑器进行工作 ,很容易直接使用Ctrl+s保存,这时就能发现vim输出不进数据了
原因:
在Linux下,Ctrl+s用来暂停向终端发送数据,输入的数据都在缓冲区出不来了
解决方法:
此时按下Ctrl+q就退出那个状态恢复正常了,此时之前位于缓冲区的数据也会输出
粘贴时格式混乱怎么办?
打开粘贴模式::set paste
关闭粘贴模式::set nopaste
参考学习
https://www.cnblogs.com/markleaf/p/7808817.html
https://www.cnblogs.com/codehome/p/10214801.html
https://blog.csdn.net/weixin_43250623/article/details/88722389
https://blog.csdn.net/qq_27825451/article/details/103507518
《Vim 从入门到精通》
插件参考配置博客
https://blog.csdn.net/l_changyun/article/details/98252459