Vim学习笔记【Ch00,Ch01】

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系统,可以直接用可执行文件自动安装:
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,不会马上执行退出操作,而是在命令行底端输出如下信息:
    修改后执行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键自动补全帮助文档中包含输入字符的全部指令,显示在输入上方,通过左右移动就能选择不同的指令。
    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的文件)这部分存疑,后续补充
    **补充:**实践表明,在Linux系统下暂停功能可以实现,暂停时文件所在的文件夹会有对应的.swp文件:
    Linux的暂停功能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值