Vim-golf 真上头...
一些说在前面的闲话
如何生成完全随机的字符串? 找一个没有用过 Vim 的人,让他退出 Vim
这个东西没用(如果你是这么认为的话),并且他确实有很多的替代品,图形化的 VsCode 也是非常不错的,所以你现在就可以退出了。
如果你没有选择退出
学一个新工具就像小时候学习使用筷子一样,一开始你会发现,用筷子远远不如你使用汤勺吃放方便,但是当你熟练使用筷子后,你会发现,那是真的爽...
安装 Vim
Windows 10
- 首先 powershell 中输入
vim --version
找到 Vim 安装包
官网下载: https://github.com/vim/vim-win32-installer/releases
下载完成后解压到对应的文件夹
此时 Vim.exe 就可以正常使用了
为了方便使用我们需要添加环境变量
下方 path 中,添加路径,路径为 Vim.exe 所在文件夹目录
添加环境变量成功后,在 powershell 中再次输入
vim --version
,出现下图信息即添加成功
Linux
我一定会写的...
Vim 基本介绍
Vim 本身就是一种基于命令的编程语言
所以,就像编程中,你学会不同的函数后,就可以把他们组合起来,来实现一些功能
由于 Vim 有时使用组合按键,所以对后文的组合按键的表示,做一下说明
按键 | 表示 |
---|---|
i | i |
K | K |
Ctrl-v | ^v,Ctrl-v,<C,v> |
Vim 的各种模式
Vim 是一个模式编辑器(modal editor)
这意味着 Vim 有多个操作模式,编程时会经常做不同类型的事,你可以根据要做的事情去选择不同的操作模式
Vim 的缓冲区(buffer),窗口(window),标签页(tab)
像是很多编辑器一样,你会在编辑器中打开多个文件,并且会有多个标签页和多个窗口
Vim 也有这些概念,但是 Vim 的模式与大多数其他的编辑器有些不同
Vim 维护了一组打开的缓冲区,这是他用于打开文件的术语,它有一组打开的文件。除此以外,你可以有多个标签页,标签页里也会有窗口
但是和其他编辑器不同的是,Vim 中缓冲区和窗口之间不一定是一对一的对应关系。
普通模式
大部分情况下,你将在普通模式下,移动浏览文本
移动命令
移动命令像是句子中的“名词”,直接就能产生对应效果
可以帮助你快速的在文章中浏览
基本的移动:
hjkl
(左,下,上,右)单词:
w
(跳转到下一个单词的开头)b
(跳转到上一个单词的开头)e
(跳转到单词的末尾,向后跳)
行:
0
(行开头)^
(行第一个非空字符)$
(行末)
屏幕:
H
(当前屏幕第一行)M
(当前屏幕中间行)L
(当前屏幕最底行)
浏览:
Ctrl—u
(向上滚动)Ctrl—d
(向下滚动)
文件:
gg
(文件最开始)G
(文件最后)
行号:
:{number}<CR>
或者{number}G
(绝对行号)
查找:
f{字符}
当前行查找这个字符t{字符}
当前行查找这个字符,然后光标移动到他前一个字符F{字符}
,T{字符}
同样的道理,当前行向前寻找/{字符}
全文查找这个字符?{字符}
当前位置向前搜索n
下一个 “next”
编辑命令
编辑命令像是动词,有时候需要和移动命令相结合,来实现功能(动词+名词)
i
进入插入模式o
/O
在当前行下/上新建一行,并进入编辑模式d{移动命令}
删除所选部分- 例如:
dw
删除一个单词,d0
删除当前到行首部分
- 例如:
c{移动命令}
删除所选部分并进入插入模式,就是改变 “change”- 例如:
cw
改变一个单词,相当于dw
然后i
- 例如:
- 上述两个按键需要移动参数,当重复按的时候对当前行生效
dd
删除当前行cc
删除当前行,并进入插入模式(改变当前行)
x
删除当前光标处字符r{字符}
用输入的字符,替换当前光标处字符u
撤销 “undo”Ctrl-r
重做 “redo”y{移动命令}
复制 “yank”p{移动命令}
粘贴 “paste”v
进入普通可视模式~
反转大小写
计数
你可以给操作一个数字
{数字}{操作}
执行{数字}次{操作}- 向下移动四行
4j
- 删除七个单词
7dw
- 向下移动四行
Ctrl-a
当前光标数字+1Ctrl-x
当前光标数字-1
操作
你同样可以对命令进行操作
.
重复上一个命令
修饰符
用来与括号,引号一类的字符交互
a
周围或者包括 “around”i
内部 “inside”ci[
改变 [ ] 内部 (change “ [ ] ” inside)ca{
改变 { } 周围 (change “ { } ” around)da'
删除 ‘ ’ 周围 (delete “ ‘ ’ ” around)
可视模式
用于选择
v
普通可视模式:选中两点之间的文本V
可视行模式:移动中每次直接选中一行Ctrl-v
可视块模式:选中矩形块
命令行模式
通过键入 :
从普通模式进入命令行模式,此时光标将会跳转到屏幕底部
该模式有很多的功能,包括打开文件,保存文件,关闭文件,退出 Vim
:q
退出 “quit”(关闭当前窗口):w
保存 “write”:wq
保存并退出:e {文件名字}
打开文件进行编辑:ls
展示打开的缓存区:help {某个操作}
给出这个操作的使用帮助:help :w
打开:w
这个写入操作的使用帮助:help w
打开w
这个移动操作的使用帮助
练习 Vim 的小游戏
拜托,上手一个东西最快的方式一定是像游戏一样,操作,死掉,重新来过
- 冒险小游戏: https://vim-adventures.com/
- Vim-golf: http://www.vimgolf.com/
Vim 的简单配置
由于个人习惯不同,Vim 的操作键位不同,一些显示辅助功能也需要自己配置
所以需要设置 .vimrc
打开 powershell,输入
vim --version
,可以看到,系统 vimrc 文件,用户的 vimrc 文件的对应位置我们对用户的 vimrc 文件进行修改,在对应的目录输入
vim ~\.vimrc
:创建.vimrc
文件,并使用 Vim 将其打开之后在打开的文件中输入对应的配置语句,Vim 中会出现对应的效果
如图,这里添加了
set nu
,显示行号,保存重新打开 Vim左侧显示行号
这里给出 MIT 老师的提供的配置文件: https://github.com/missing-semester/missing-semester/blob/master/_2020/files/vimrc
参考
- 2020 MIT 公开课: The Missing Semester of Your CS Education(计算机教育中缺失的一课)
- 一位不知名大佬的博客: https://www.mintimate.cn/2021/08/25/vim/