230912_再学vim
最早接触vim这个词是在看HBO的Silicon Valley里的emacs和vim之争,由于我很憧れのRichard Hendricks是emacs党,于是我也暗暗决心当个emacs党。
初めての使用と言うと、大三OS课,就会个最简单的:i
插入,:wq
保存退出
Why现在决定重新开学vim了?
vim的这套文本编辑的philosophy可能是编辑效率最快的,使いこなせば真的健步如飞。而も不局限于死的快捷键key binding,命令的组合可以玩出各种花样(eg.数字+dd
:删多少行),这应该其他编辑器都做不到key binding命令如此强大。
只学一套快捷键key binding。vscode, jetbrains…都有自己的快捷键key binding (而且听说emacs的快捷键key binding很凌乱),不想用一个编辑器/IDE就要熟悉一套肌肉记忆。而且常见的编辑器/IDE都有vim插件,vscode的Vim, jetbrains的IdeaVim, emacs也有evil。
上次做AWS的OA算是第一次本机ssh连接服务器,纯命令行环境,要编辑nginx的配置文件只能用vim, nano之类的终端下的文本编辑器了。
所以,不管怎么样,vim都是必须身に付けるskillだ
普通模式 Normal mode
移动系
行首: 0
Home
本行第一个字符: ^
行尾: $
End
文件头: gg
文件尾: G
光标跳转到某一行: 绝对行号gg / 绝对行号G
or :绝对行号
,命令模式
光标向后移动一个单词: w
(word) W
(Shift + w
以空格分割) Ctrl + ➡️
光标向前移动一个单词: b
(back word) B
(Shift + b
以空格分割) Ctrl + ⬅️
单词尾: e
查找: / 然后输入要搜的东西,之后Enter
,用n
来跳转到下一个match,N
上一个 Ctrl + f
如果此时光标已经在想查找的单词上了,*
跳转到下一个匹配,#
上一个 (可以方便找div, class之类的)
编辑系
撤销undo: u
Ctrl + z
重做redo: Ctrl + r
or 命令模式:redo
删字符: x
改字符s
删单词: dw
de
(这俩其实都是只从当前光标位置删到末尾) diw
(inner 光标在中间としても删整个单词) daw
(带后接空格)
删到某个特定字符为止: dt某特定字符
to dt)
删到行尾: d$
($
移动到行尾) 类似还有d0
dG
dgg
删当前行: dd
(其实相当于剪切Ctrl + x
,p
paste后复制)
删tag<>中包起来的内容(即使有多行)(delete inner): dit
cit
(删完进insert模式) (前端常用) 删除整个tag: dat
注意和di<
的区别
类似还有di"
, di(
注意是左括号
修改: c
change其实就相当于是delete后进insert模式,命令和删除差不多,把d换成c即可
复制当前单词: yaw
(yank )
复制到某个字符: yf某字符
yt某字符
的话,那个字符没有被包含进来
缩进: >>
, <<
用法类似dd
,可以>行数>
or 行数>>
插入模式 Insert mode
i
: 光标前插入
a
: 光标后插入
I
: 行首插入
A
: 行尾插入
o
: 向下新开一行
O
: 向上新开一行
Insert模式下可以Ctrl + w
删除单词,就像终端里的操作一样
命令模式 Command mode
不保存修改,强制退出用:q!
注意是先q后!,如果先!的话,后面接的会被认为是终端shell命令,比如:!ls
一些设置
1 | :set number |
在命令模式敲的设置只是一次性有效的。退出vim后,这些设置不会被保留。
所以需要一个设置的配置文件 ~/.vimrc
可视模式 Visual mode
从normal mode按v / V /Ctrl + v
进入visual mode,然后主要做选中文本的操作
也有vi(
, vi"
之类的操作
选中的部分一个d
全部删除,一个y
全部复制,一个c
修改…< >
缩进
全选: ggVG
Ctrl + a
注釈: gg移动到首行,v / V /Ctrl + v进可视模式(v选中字符,V选中行,Ctrl + v矩形块选),G光标移到最后一行,即全选
(ggvG
的话最后一行只选中了第一个字符,ggVG
才真正全部选中,因为V
是行选)
选中内容以后就可以其他的操作了,比如:
- d 删除选中内容
- y 复制选中内容,仅vim内
- “+y 复制选中内容到系统的剪贴板,供其他程序用
不过其实可以不用visual mode,就gg"+yG
。原理就是ggyG
,只不过调用了+寄存器(系统的剪贴板)
Ctrl + v块选,可以做到连续多行的同一位置的相同操作。方向键精调选中后,d
删除,c
修改,A
光标后多行插入,I
光标前多行插入
块选中一列数字后,g然后Ctrl+a
循环递增
宏 Macros
https://www.youtube.com/watch?v=mYUk9N-1JZ8 最后两分钟的技巧
待续
https://www.youtube.com/watch?v=RZ4p-saaQkc
https://zhuanlan.zhihu.com/p/188499395
https://www.youtube.com/watch?v=80mWp6H4zEw
配置文件
参考资料
TheCW的视频
自分の知乎收藏夹
Lecture 3: Editors (vim) (2020)
https://missing.csail.mit.edu/2020/editors/
上手 IdeaVim 插件:在 WebStorm 和其他 JetBrains IDE 中获得 Vim 的强大功能
cheet sheet https://vim.rtorr.com/lang/en_us/
- Title: 230912_再学vim
- Author: Haoliang Tang
- Created at : 2023-09-12 00:00:00
- Updated at : 2023-11-02 20:28:09
- Link: https://hl-tang.github.io/2023/09/12/230912_再学vim/
- License: This work is licensed under CC BY-NC-SA 4.0.