Day 10:新手杀,谁来教我离开 vim 阿~~

前面 9 天都在介绍操作环境,今天终於要进到编辑器啦!我选用的编辑器是 nvim,但是如果你要用 vim 8 也是可以,因为这两者之间几乎没什麽差别,只是你要注意这两者的设定档位置不同,目录需要你自己转换。唯一不同的点大概是 nvim 内建支援用 lua(一种程序语言)写外挂,vim 8 只能用 vimscript。关於两者之间的爱恨情仇请参考这里,他讲的非常详细

接下来的文章可能会出现 vim、nvim 混用,但是他们都是指 neovim,也就是我们用的这个编辑器,不用特别跑去装两套软件

安装 nvim

基本上你的电脑的套件管理器里面应该都有 nvim 了,但是他的名字可能不是 nvim,例如 apt 就是 neovim,如果你的套件管理器没有收录 nvim 或是你不知道该怎麽办的话,可以看看这个文章 几乎所有作业系统他都有介绍怎麽安装了,当然他也有教你如何自己 build

操作

vim 的前身—— vi 诞生於几乎没有图形化界面的时候,那时候也没有滑鼠,所以所有的操作都必须在键盘上达成,今天就来认识一些简单的命令吧!

离开 vim

为什麽要在还没进入 vim 之前就教如何离开呢? 因为几乎所有初学者都会有这个疑问,要怎麽离开 vim 啦!! 这边我提供一个必胜的方法,不论你在 vim 做了什麽操作,ESC 狂按个 100 次三到四次,然後输入 :q!ENTER 就会离开了。

命令模式?编辑模式?

vim 的「模式」也是让初学者很困扰的东西之一,下面用一张图来解释他们的关系

vim mode
vim 模式切换 (From: 高见龙——超简明 Vim 操作介绍)

通常 Normal Mode 中文是 「命令模式」,顾名思义这个模式下你可以打命令,Insert Mode 的中文是 「编辑模式」 ,在这个模式你可以编辑你的档案。

从命令模式切回编辑模式的命令不只 iao 这三个,还有很多,但这是最常见的三个,其他的会在之後介绍

命令

注意:我的用词可能和你看到其他文章不太一样,这里我的「命令」指的是 vim 中冒号开头的命令,其他的则被我归类到「快捷键」但是其实对 vim 来说他们都是命令(文件中都是 command )

如果你想打某个 vim 命令,例如说「储存并离开」,你需要先到 「命令模式」 ,然後按下 :,萤幕下面就会有 一行空行 ,你可以在这里打命令,也可按上、下 浏览以前打过的命令。常用的命令有储存、离开、搜寻与取代、开启档案等等,这里我列出几个和档案操作有关的命令

命令 说明
:w [filename] 储存
:q 离开
:q! 强制离开不储存(如果有更动档案但只用 :q 的话会跳出错误讯息)
:wq 储存并离开
:e [filename] 开启某个档案
:{number} 跳掉第几行
:! {cmd} 执行 shell 命令

注意第三个和最後一个,虽然都有惊叹号,但是第三个的惊叹号在最後面,执行 shell 命令的惊叹号在最前面。第三个的惊叹号表示 「强制」「忽略警告」 ,搭配其他命令可以达到以下效果

命令 说明
:w [filename] 强制存档,有时候会遇到档案在开启 vim 途中被其他程序修改或是权限问题,用 :w! 可以强制覆盖
:e [filename] 不管现在这个档案有没有修改,直接从硬碟载入另一个档案

快捷键

和 tmux 一样,vim 也可以把某个按键对应到命令,这样就不用常常打一堆指令了。
要注意,vim 可以指定快捷键生效的模式,所以如果在编辑模式不能用,那可能要切换到指令模式。
以下的快捷键都是在命令模式下用的喔,常用的快捷键有

快捷键 说明
yy 复制一行
dd 剪下一行
x 剪下一个字
p 贴上剪贴簿的内容
v 选取(之後可以复制、剪下)
. 重复执行刚刚执行过的指令
u 回复( undo )
<C-r> 重做( redo,重做 undo 取消的操作,也就是说要先 u 之後才能 r )
分隔线 接下来的快捷键看看就好,你可以用方向键解决
h 左移
j 下移
k 上移
l 右移
gg 移至档案开头
G 移至档案结尾
^ 移至行头
$ 移至行尾

<C-r> 的意思是 CTRL+r,这是 vim 常见的表示法,以後还会看到

结尾

vim 的命令(快捷键)其实是个非常高深的学问,我的文章可能没办法讲的非常详细,你可以去找其他教学,或是在 vim 中用指令 :help 看官方的教学


<<:  DAY8:基本元件及画面设计实作

>>:  冒险村08 - Preitter output in rails console

[Day18] Unreal Webcam Fun

[Day18] Unreal Webcam Fun 需要用到的技巧与练习目标 MediaDevice...

[Day_24]函式与递回_(3)

计算BMI BMIT常用来判断肥胖程度,BMI等於体重(KG)除以身高(M)的平方,「BMI与肥胖等...

7 种敏捷估算技术 (Agile Estimation Techniques)

敏捷估算 (Agile Estimation) 技术有助於估算并且猜测如何正确地计划和执行是很重要的...

Day 18 Docker Compose 简介和安装

实务上,一个服务往往可以拆解成数个微服务组成。以市占相当高的 Wordpress 内容管理系统 CM...

自己的hackmd自己架 - Codimd

更多会员限定文章可以到patreon观看 Codimd是hackmd的开源版,虽然主要功能仍含hac...