本文是neovim中的练习项目Tutor的笔记。
建议自己手动尝试一下这个项目,很快就能上手neovim。
想要尝试这个项目,只要输入:Tutor<Enter>
即可。
安装 & 启动
使用包管理器apt安装即可。
运行:
$ sudo apt install neovim
Tutor
Lesson 1
移动光标
使用hjkl
键可以移动光标,方向如下所示:
k
h l
j
启动&退出
启动neovim的命令格式是:
$ nvim FILENAME
启动后neovim处在普通模式,这个时候问题就来了,什么是普通模式?
众所周知,neovim和vim一样,是一个模态编辑器,这意味着它有多个模式,同一行为在不同模式下会产生不同的结果。
现在需要知道两个模式————普通模式与命令模式;
不过不用担心,只要知道有这么个东西就行了。
退出程序则需要进入命令行模式,在普通模式下输入冒号即可,而如果想回到普通模式,按Esc即可;
在命令行模式中输入q!
即可退出程序,
具体操作是:
<Esc> :q! <Enter>
注意!这么操作将不会保存文件更改。如果想保存文件更改,则需要输入wq
<Esc> :wq <Enter>
要怎么确定自己处在哪个模式呢?
普通模式下光标是个高亮方块,与字符在同一个格子内。
命令模式下光标将跳转到屏幕最底(一整行白色高亮提示行之下),此时的输入发生在最底下。
插入模式
想要编辑文本内容,就要进入插入模式。
有非常多种方法进入插入模式,例如:
在普通模式下,输入a、i或者它们的大写均可进入插入模式,但它们的光标位置将不太一样。
要注意,i是insert(插入),a是append(添加)。故而i将光标插入到所在位置前,而a将光标添加到所在位置后。
要怎么确认自己是不是处在插入模式下呢?
只要看最底部即可,命令模式下输入命令的位置,在插入模式下会显示:
-- INSERT --
简单删除
在普通模式下按x将删去光标所在位置的字符。
Lesson 2
注意,本章命令全部在普通模式下使用
删除
dw
:删除到下个词的开头d$
:删除到行末dd
:删除整行
要注意的是,这些操作说是删除,其实更像是剪切,它们无一例外的都会导致剪切板的改变。
可以注意到这三个命令的开头都是d
,这是因为普通模式下的命令格式是:
operator [number] motion
- operator:表示这条命令要做什么事.
- [number]:表示执行这条命令多少次。
- motion :移动到指定的文本位置。
于是可以分析出,上面的三条命令都做了删除这件事,区别在于最后的motion指向的位置。
撤销
按u
可以撤销(undo),按U
可以撤销本行的所有修改,用<C-r>
可以重做(Redo)。
按0
可以直接移动到当前行的开头。
Lesson 3
在普通模式下编辑文本
按p
键可以粘贴。
刚刚提到d这个操作会更改剪切板。按下粘贴,发现插入的是刚刚被删去的内容。
刚刚已经提到过在普通模式下按x
可以删去单个字符。
相似的,在普通模式下按r
可以替换(replace)字符。
当需要大量更改内容时,可以按c
,这会删去一定文本并进入插入模式。
删去的文本取决于命令,命令的格式如下:
c [number] motion
后面的两项与上面介绍的是一样的。
Lesson 4
在文档中快速移动
在普通模式下
<C-g>
可以显示当前处在文件中的哪个位置。
G
可以跳转到文件结尾,gg
可以跳转到开头。
先输入数字
,再按G
可以跳转到对应的行。
/
可以前搜索。
?
可以向后搜索。
搜索后,按n可以查看下一个搜索结果,按N可以查看上一个。
值得注意的是,这里的n/N
是一个motion。这意味着它前面可以加数字。
<C-o>
可以让光标回到上一个位置。
<C-i>
可以让光标前往刚刚的位置。就像<C-r>
与u一样。
输入%可以在对应的左右括号(()[]{}
)间跳转。
查找替换
在命令模式下,替换文本只需要按以下格式输入。
:s/old/new
但这样只能替换一个匹配项,在其之后加入/g,改为:
:s/old/new/g
即可替换一整行。
而在整个命令前加入行号,行号,即可替换指定行(比如1,3就是替换一至三行的所有匹配项。)
:行号,行号s/old/new/g
如果想要替换整个文件,在前面加入%即可。
:%s/old/new/g
在最后加入c可以在替换前加入询问
:%s/old/new/gc
询问的内容如下:
replace with the (y/n/a/q/l/^E/^Y)?
这些选项的效果是:
- y:替换当前项,并跳到下一项。
- n:跳到下一项。
- a:替换全部。
- q:退出。
- l:替换当前项并退出。
- ^E:屏幕向下移动一行。
- ^Y:屏幕向上移动一行。
注意这里的^
意思是按住Ctrl
Lesson 5
执行外部shell命令
在命令模式下使用!可以调用外部shell命令
例如:
:!ls
该命令会列出当前工作目录中的文件。相当于在外面的shell里使用了ls命令。
视觉模式
在命令模式下,使用下面命令,即可保存当前文件。
w FILENAME
如果只想保存当前文件的一部分内容,则要先使用视觉模式选择所需内容,再保存文件。
这里有一个新的模式————视觉模式
使用v或者V都能进入视觉模式,该模式下,屏幕最底部会显示:
-- VISUAL --
此时移动光标即可选择文本,被选中的文本会被高亮表示。
选择完所需文本后,按:进入命令模式,此时底部会显示:
:'<,'>
看起来是不是有一点熟悉?没错,这就是刚刚展示的定位作用范围,接下来的命令的作用范围就被指定在视觉模式所选择的文本里了。
接下来就像刚刚一样正常输入命令即可。
:'<,'>w FILENAME
在命令模式下,使用r可以显示文件信息:
:r FILENAME
Lesson 6
前面已经提到过按a、i以及它们的大写均可进入插入模式,小写定位当前光标,大写定位当前行。
这里接触一个新的方法,按o(或者它的大写)也可以进入插入模式,并且会开启(open)新的一行。
o将在光标下方开启新行,O将在光标上方开启新行。
按e可以跳跃到词的结尾(end)。
按y可以复制,按p可以粘贴。
按R可以进入替换模式(Replace),这个模式下光标会变为一条字符底下的短横线,按
Lesson 7
多窗口与帮助文档
查看帮助文档:按
按
在命令模式下输入q可以关闭窗口。
在命令模式下,按
配置
刚刚的Tutor中我故意略去了设置的部分。
想配置neovim,先要了解neovim如何读取配置文件。
neovim会默认读取文件~/.config/nvim/init.lua
,也就是说,只要将配置文件写在这个位置即可。
但一股脑的把配置写在这显然不是一个好的做法。
于是就需要用到一个语句,将它写在init.lua
里,就能导入对应配置文件。
这里的目录会默认读取~/.config/nvim/lua/
里的内容,并且分隔文件夹的/
要替换为.
,且省略文件后面的.lua
require('目录')
比如require('main.options')
意味着读取~/.config/nvim/lua/core/options.lua
文件。
这样就能开心地配置neovim了。
若是要查找配置项,则可以使用h vim.opt
查看帮助文档。