前言
Neovim是我最喜欢的编辑器,它几乎可以无缝衔接Vim的操作跟配置,天生支持正则表达式、录制宏等。
除了VimScript之外,Neovim还支持使用Lua进行配置。
Vim系列编辑器只要用一个键盘就能完成所有的操作,手不需要离开键盘去操作鼠标。
通过自己的配置,让编辑器去适配用户的习惯,而不是等IDE更新之后再去适应新的操作方式。
其他编辑器
- Emacs:这个被人称之为全世界最好的操作系统,Emacs使用Lisp语言做配置,可拓展性很强,但是个人感觉Lisp学习成本高了点。
Vim跟Emacs势不两立 - VSCode: 微软开源的编辑器,图形化界面对新手入门比较友好,使用TypeScript编写拓展插件,通过json配置。
工作模式
Vim主要有三种工作模式,在任何模式下都可以通过 Esc
回到正常模式(Normal mode)
- 标准模式(Normal mode),主要用来浏览文件,快速的对文本进行增删改查等工作
- 插入模式(Insert mode),在这个模式下编辑文件
- 命令模式(Command mode),使用一些命令拓展Vim的功能
# 打开vim
$ vim
# 使用vim打开指定文件
$ vim filename
# 使用vim打开指定文件,光标移动到第63行
$ vim filename +63
标准模式
移动光标
除了用小键盘的上下左右移动光标之外,在Normal模式下还可以使用 h
、j
、k
、l
移动光标
巧记方法
在QWERTY布局的键盘上 h
、j
、k
、l
这四个按键是并排着的
h
在最左边,所以光标往左移动l
在最右边,所以光标往右移动j
由右手食指点击,我们浏览文本都是从上往下看,食指按一下就往下移动(习惯问题)k
按照4399小游戏的那一套方案,k
是跳跃,跳跃就是向上移动
k
h l
j
除了上下左右移动之外,还有几个常用移动光标方式
按键 | 描述 |
---|---|
w |
移动到下一个单词的第一个字母 |
e |
移动到下一个单词的最后一个字母 |
b |
移动到上一个单词的第一个字母 |
ge |
移动到上一个单词的最后一个字母 |
gg |
移动到文件第一行 |
G |
移动到文件到最后一行 |
进阶操作
Vim的操作方式大小写都有不同的效果,自己手动尝试一下有惊喜!!
最常用的还是复制粘贴
按键 | 描述 |
---|---|
dd |
删除当前光标所在行 |
yy |
复制当前光标所在行 |
x |
删除当前光标下的字符 |
p |
粘贴 |
Vim可以在按键前指定执行次数
按键 | 描述 |
---|---|
7k |
执行7次k ,光标向上移动7行 |
12j |
执行12次j ,光标向下移动12行 |
20p |
执行20次p ,粘贴20次文本 |
把这些操作结合起来,体验极佳
按键 | 描述 |
---|---|
d10k |
向上删除10行 |
diw |
删除当前光标所在位置的单词 |
de |
从当前光标位置开始删除字符到该单词的最后一个字符 |
可视模式
可视模式下移动光标可以选择需要的文本,然后配合其他的按键进行一系列操作
按键 | 描述 |
---|---|
v |
进入可视模式 |
V |
进入可视行模式 |
<c-v> |
进入可视块模式 |
插入模式
插入模式最简单,就像普通的编辑器那样编辑文件即可,主要区分几个进入Insert模式时不同的效果
按键 | 描述 |
---|---|
i |
从光标所在字符前开始编辑 |
a |
从光标所在字符后开始编辑 |
o |
向下新插入一个空行开始编辑 |
s |
覆盖光标所在字符,继续编辑 |
命令模式
命令模式是在Vim最后一行输入特定的命令来执行,是拓展Vim的关键
搜索
命令 | 描述 |
---|---|
/string |
向下搜索string |
?string |
向上搜索string |
保存退出
命令 | 描述 |
---|---|
:w |
保存 |
:q |
退出 |
:q! |
强制退出 |
:wq |
保存并退出 |
基本设置
命令 | 描述 |
---|---|
:set number |
显示行号 |
:set cursorline |
高亮光标所在行 |
:set nowrap |
文本超出屏幕不换行 |
:set hlsearch |
高亮搜索匹配到到文本 |