Vim
什么是 Vim
-
Vim是一个高度可定制的文本编辑器,源自Unix系统的vi编辑器。它被广泛用于类Unix系统中,包括Linux、Mac OS和Windows平台。Vim特别受到程序员的青睐,因为它提供了丰富的编程功能,如代码补全、编译及错误跳转等。这些功能使得Vim不仅仅是一个简单的文本编辑器,而更像是一个专为程序开发设计的工具。
-
Vim的设计理念基于命令的组合。用户可以通过学习各种文本移动和编辑命令来提高编辑效率。Vim支持多种模式,包括命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)。每种模式都有其特定的功能和操作方式,例如在命令模式下,用户输入的按键被视为命令,而在输入模式下,用户可以像使用普通文本编辑器一样输入文本。
Vim 的优势
-
高效性:Vim的设计允许用户通过键盘快捷键快速执行复杂的文本编辑任务,减少了鼠标操作,提高了工作效率。
-
可定制性:Vim支持大量的配置选项和插件,用户可以根据个人喜好和工作需求进行深度定制。
-
跨平台:Vim可以在Unix、Linux、Windows、Mac OS等多种操作系统上运行,为用户提供了统一的编辑体验。
-
轻量级:Vim占用系统资源少,即使在资源有限的远程服务器上也能流畅运行。
-
强大的文本处理能力:Vim提供了强大的搜索、替换、宏录制等功能,非常适合处理大量文本。
Vim的安装
查看Vim是否安装
输入Vim查看是否安装Vim
系统安装的情况会进入以下界面
系统未安装Vim的情况会出现bash: vim: command not found
安装Vim
输入指令apt-get install vim
安装Vim
apt-get install vim
如果出现E: Unable to locate package vim
root@754741ff94d6:/# apt-get install vim
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package vim
此时需要更新一下apt-get
命令,然后再执行apt-get install vim命令
apt-get update
apt-get install vim
Vim 模式
主要的 4 种模式:
-
Normal 模式: 默认进⼊的模式, 也是最常⽤的模式
-
Insert 模式: 插⼊模式, 像正常的⽂本编辑器—样输⼊
-
Command 模式: 命令模式, 在底部输⼊命令
-
Visual 模式: 可视模式, 对⽂本进⾏选择
Normal 模式:基本移动
-
hjkl :上下左右
-
gg :跳到第⼀⾏(类似 Home 键)
-
G :跳到最后⼀⾏(类似 End 键)
-
/ :往上翻半⻚/⼀⻚(类似 PageUp 键)
-
/ :往下翻半⻚/⼀⻚(类似 PageDown 键)
-
{lineno}gg :跳到第 lineno ⾏
-
zz / zt / zb :光标⾏设置为 屏幕居中/屏幕第⼀⾏/屏幕最后⼀⾏
进⼊ Insert 模式
Normal 模式下通过特定命令进⼊ Insert 模式
-
i :代表¢insert£ ,当前光标之前开始输⼊
-
a :代表¢append£ ,当前光标之后开始输⼊
-
o :下⽅插⼊新的⼀⾏,然后开始输⼊
-
s :删除当前光标的字符,然后开始输⼊
-
I :在本⾏的开头开始输⼊
-
A :在本⾏的末尾开始输⼊
-
O :上⽅插⼊新的⼀⾏,然后开始输⼊
-
S :删除当前⾏,然后开始输⼊
-
回到 Normal 模式
进⼊ Command 模式
Normal 模式下输⼊:
进⼊ Command 模式
-
:w :保存当前⽂件
-
:q :退出
-
:q! :放弃当前更改,然后退出
-
:wq :保存当前更改,然后退出
-
:h {command} :显示关于命令的帮助
-
回到 Normal 模式
进⼊ Visual 模式
* Normal 模式下按 v 进⼊可视模式
* 进⼊可视模式后可以⽤ Normal 模式下的移动命令选择⽂本
* 可视模式下 x / y :剪切/复制;回到 Normal 模式下 p :粘贴
* Normal 模式下按 V 进⼊⾏可视模式,⼀次选中⼀整⾏,在需要选中多⾏时很⽅便
* 回到 Normal 模式
移动与编辑
基于单词的移动
-
w :代表“word” ,跳转到下⼀处单词的开头
-
b :代表“back” ,跳转到上⼀处单词的开头
-
e :代表“end” ,跳转到下⼀处单词的结尾
-
ge : e 的反向版本,跳转到上⼀处单词的结尾
-
^ / $ :跳转到本⾏的开始/结尾
-
% :跳到匹配的配对符(括号等)处
基于搜索的移动
-
⾏内搜索:
-
f{char} / t{char} :跳转到本⾏下⼀个 char 字符出现处/出现前
-
; / , :快速向后/向前重复 ft 查找
-
F{char} / T{char} :往前搜索⽽⾮往后
-
-
⽂件中搜索:
-
/{pattern} :跳转到本⽂件中下⼀个 pattern 出现的地⽅
-
?{pattern} :跳转到本⽂件中上⼀个 pattern 出现的地⽅
-
pattern 可以是正则表达式
-
* :等价于 /{pattern} , pattern 是当前光标下的单词
-
nN :快速重复 / 查找
-
基于标记的移动
- m{mark} :把当前位置标记为 mark(mark 是 a-z 的字符)
- `{mark} :跳转到名为 mark 的标记位置
- 内置标记:
- `` :上次跳转前的位置
- `. :上次修改的位置
- `^ :上次插⼊的位置
Operator+Motion=⼀次编辑动作
-
c :代表“change” ,修改,删除内容并进⼊插⼊模式
-
d :代表“delete” ,删除
-
y :代表“yank” ,复制
-
v :代表“visual” ,选中⽂本,进⼊可视模式
-
⼤部分操作符连续按两次( cc/dd/yy ):将其作⽤在这⼀⾏上
重复操作: . 命令
-
. :重复上⼀次修改
-
u :撤销上⼀次修改
-
:重做上⼀次修改
批量操作:数字+动作
-
count+action :重复 count 次 action 动作
-
4j :向下移动 4 ⾏
-
3dw :删除 3 个单词
-
2yy :复制 2 ⾏
-
4p :粘贴 4 次
-
. 命令可以直观地看到每⼀次的变化,在合适的时候停⽌
-
数字+动作则需要预先知道动作的次数
开关行号
-
:set nu 开启行号
-
:set nonu 关闭行号