Vim学习笔记
- GitHub的Learn-Vim仓库学习笔记
- Ch00 前言
- Ch01 Starting Vim
- Vim的官方链接
- Windows10下载和安装Vim
- Vim初级使用
- 打开Vim
- 退出Vim
- 保存文件
- 打开文件
- 帮助文档help
- argument参数
- 打开多个窗口
- 暂停
GitHub的Learn-Vim仓库学习笔记
仓库地址:https://github.com/iggredible/Learn-Vim
Ch00 前言
其他vim学习渠道:vimtutor、help文档
vimtutor入门级别,相对来说内容较少,而help文档内容又太多,容易无从下手。
本仓库的特点:提炼出vim的关键特性/功能(基于自身使用),便于学习者在短时间内轻松上手,学到vim最有用的部分。
包含许多用例,通过VimScript的学习可以帮助用户根据自己的需要自定义命令,而不是仅仅知道怎么用vim。
学习vim更多是要锻炼一种肌肉记忆,也就是说多练习多获益,不需要立马掌握一个命令的所有东西,但需要能够自然、不假思索地运行这个命令。
配置文件Vimrc用于保存一些vim的配置,其中的配置是永久性的,非永久性的配置通常通过在命令行执行set
Ch01 Starting Vim
Vim的官方链接
大部分Unix电脑自带Vim,如果没有可以自行根据Vim的官方下载地址和GitHub进行安装。作者在写这个教程时用的是Vim8.2。
Vim下载,Vim的GitHub
Windows10下载和安装Vim
对于现代的MS-Windows系统,可以直接用可执行文件自动安装:
选择默认提供的Vim90版本,安装流程(默认配置)如下:
安装完成后想要在cmd使用vim,还得配置环境变量(此电脑->属性->高级系统设置->环境变量),将vim90的安装目录添加到Path,即可在cmd命令窗口输入vim
启动vim的窗口。
Vim初级使用
- Vim是一个模式编辑器,不同模式下支持的操作不同,因此每个操作基本都会说明处于何种编辑器模式下方可执行。
- 打开一个文件时,默认属于命令行模式(也叫普通模式),此时输入冒号
:
(注意是半角字符,中文模式下的冒号不行),光标会移动到编辑窗口的左下角,在冒号之后输入相应命令进行相关操作。 - 需要编辑文件时,输入字母
i
会从命令行模式转换到插入模式,才能进行内容编辑。 - 通过
Esc
键可以退出插入模式(当Vim处于其他模式时也可以通过Esc
返回到命令行模式)。
打开Vim
- 通过在终端输入
vim
,默认开启一个新文件。 - 如果输入vim命令时带参数filename,如
vim ch01.txt
,该文件不存在时就会在当前文件夹下创建名为filename的文件(带后缀),否则打开文件filename。
退出Vim
- 在命令行模式下,输入
:q
或者:quit
,会退出当前文件的编辑界面。q
是最常用的Vim命令之一,一般用缩写比较方便。
保存文件
- 编辑文件之后,在命令行模式下,通过
:w
或:write
可以保存修改的内容。 - 如果是新打开的文件,可以通过带文件名参数,将编辑内容保存到指定文件,如
:w file.txt
会将内容写入file.txt。 - 编辑结束后想要保存并退出,可以将两个命令合并使用:
:wq
。 - 编辑后想保留原文件内容,可以通过执行
:q!
直接退出,不会保留前一次保存之后的修改,!
用于忽略提示强制执行。修改文件后直接执行:q
,不会马上执行退出操作,而是在命令行底端输出如下信息:
打开文件
- 通过在终端输入vim+文件名的形式可以打开指定文件,如
vim file1.txt
。 - 要同时打开多个文件时,执行
vim file1.txt file2.txt file3.txt
,各个文件位于不同的缓存区。不同文件之间如何切换等操作在后续展开,要关闭所有打开的文件的指令是:qa
(quit all)。
帮助文档help
- 命令行模式下通过
:h
或:help
打开帮助文档,相当于用Vim打开了help.txt(只读),因此也是通过:q
退出帮助文档界面。 - 通过在该指令后带参数打开指定命令的帮助文档,如
:q write-quit
。 - 不确定待查找命令的完整名称时,输入
:h
后,在其后输入不完整的指令,可以通过Tab
键自动补全帮助文档中包含输入字符的全部指令,显示在输入上方,通过左右移动就能选择不同的指令。
argument参数
- 这里的argument参数指在终端输入vim时其后附带的参数,比如用Vim打开某个文件。
- 终端输入
vim --version
可以查看Vim的版本信息、可用/不可用功能列表、用户信息和编译链接方式。 - 也可以在Vim内部,在命令行模式下输入
:version
查看相同的信息。 - 如果需要在打开一个文件时同时执行某个Vim命令,可以通过将
+{cmd}
传给vim实现。
例如,:s
(或:substitute
)表示替换字符串,以下终端命令(第二种-c代替+,两种形式等价)将文件中的所有的pancake替换为bagel,文件打开时所有的pancake替换为bagel,但需要执行:w
,修改结果才会存入文件。
vim +%s/pancake/bagel/g hello.txt
或:
vim -c %s/pancake/bagel/g hello.txt
命令还可以串联起来:
vim +%s/pancake/bagel/g +%s/bagel/egg/g +%s/egg/donut/g hello.txt
打开多个窗口
通过在终端命令vim之后加上-o
(字母小写)打开多个水平分屏,或加上-O
(字母大写)打开多个竖直分屏。
例如,vim -o2
打开2个水平分屏窗口,vim -O5
打开5个竖直分屏窗口;vim -o5 hello1.txt hello2.txt
打开五个水平分屏窗口的同时,将hello1.txt和hello2.txt分别给其中的第1和第2个窗口。
注:水平分屏窗口指每个分屏的水平方向是完整的,各窗口之间呈现上下排列的关系,光看文字描述可能会误解为几个窗口水平排列。
暂停
编辑中途想暂停,可以通过快捷键Ctrl+z
进行,也可以在命令行模式下执行:suspend
或:stop
。在终端通过fg
返回暂停的页面。
实践发现快捷键不能在插入模式下执行,需要切换到命令行模式;Ctrl+z
后直接在终端键入fg
会出现“不是内部或外部命令”的错误,尝试vim -fg
会报错“无法使用图形界面:编译时没有启用”(这个尝试应该是错的,有点病急乱投医了);另一台电脑Windows系统上的vim版本是8.2,但无论是Ctrl+z
还是:suspend
,都是编辑界面闪一下,然后回到原界面。
- 可能suspend功能只能在unix系统实现?(但我确实在文件所在文件夹发现了后缀为.swap的文件)这部分存疑,后续补充。