本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Vim
Vim是从 vi 发展出来的一个文本编辑器。
代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。
我们可以通过Vim代码编辑器进行程序的书写.
Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。
1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。 但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器大奖,又将Emacs推至二线 总的来看, Vim和Emacs在文本编辑方面都是非常优秀的。
- 我们可以通过用户手册指令
man查看系统给出的信息: 输入指令man vim
vimtutor
vim官方自带的学习教程vimtutor
(如果显示中文请跳过该部分)
如果您进入之后是全英的,那么恭喜你获得了提升英语文本阅读的能力,但如果您还是希望强调舒适感,这里也提供了汉化显示的教程.
在终端输入指令: ①
echo "LANG=\"zh_CN.UTF-8\"" >> ~/.bashrc
② source ~/.bashrc 执行完两句指令在进入vimtutor就会变成汉语了~
系统给出的信息
输入指令 man vimtutor 查看 vimtutor 详细信息
vimtutor教程的设计思路是在使用中进行学习的。也就是说,您需要通过实际执行命令来学习它们本身的正确用法。
如果您只是阅读而不操作,那么您可能会很快遗忘这些命令的!
接下来我们在终端输入vimtutor,来具体查看命令操作,阅读领略一下vim支持的"丰富缤纷"的指令.
vim指令
这里提供一份大佬制作的键盘图 与 常用命令速查:
下面列举一些常见的指令,这些指令都是在普通模式下执行的:
vim中有
5种模式:普通模式,插入模式,命令模式,可视模式,替换模式.
-
h向左移动l向右移动j向下移动k向上移动 在非图形化界面,使用指令进行移动就显得尤为重要,在Linux系统环境下编程尽量使用这四个键来代替方向键 但是如果想要输入这几个字母,就要切换至插入模式,才能用于编辑文本 -
以下都是进入==插入模式==:
i在光标之前插入文本a在光标之后插入文本I在本行行首插入文本 (shift + i)A在本行行末插入文本 (shift + a) -
:进入==命令模式==:w保存:q退出:q!不保存修改,直接强制退出:wq保存并推出 -
r进入==替换模式==R替换多个文本 (shift + r) -
v进入==可视模式==,意为选择模式 1.按v进入可视模式 2.光标向右移,选中想要复制的文本 3.按y复制在剪切板 (vim的剪切板)与Windows的剪切板不互通 4.按p粘贴出来 [以上操作仅限于Vmware中]ym复制这个单词yy复制一整行 -
esc返回==正常模式== -
x删除光标处文本 -
dw(delete word) 从光标当前位置直到下一个单词开始处,不包括它的第一个字符
de
从光标当前位置直到本单词末尾,包括最后一个字符
(如果是中文的话,删除到第一个不是中文的地方)
db 向前删除一个单词
d$ 删除到当前整行行末
d2w 删除两个单词,光标置于单词首
d2e 删除两个单词,光标置于单词尾
dd 一次删除一整行
2dd一次删除两行
(dd其实并未物理删除,而是保存在了`粘贴板`,`p`粘贴在光标**后**,`P`粘贴在光标**前**)
9. 数字 + w 使光标向后移动 ~ 个单词,光标置于单词首部
数字 + b 使光标向前移动 ~ 个单词,光标置于单词首部
数字 + e 使光标向后移动 ~ 个单词,光标置于单词末尾
u(undo) 撤销一次操作
U 撤销整行操作 (shift + u)
Ctrl + r 反撤销(重做)
Ctrl + z把 vim 放在后台
fg 再切换出来
cw(change word) [与dw不同的是:进入了插入模式]
删除到单词末尾,同时进入插入模式
ce
cb
c$
c2w
都同之前的d~操作
-
Ctrl + g显示当前光标位置与文件信息 -
gg来到文件开头 -
G来到文件末尾(shift + g) -
行号跳转
:492492 shift + g -
两次引号''回到上次跳转位置 -
set nu在左侧设置行号 <---->set nonu取消行号 -
/ + 单词,从前向后查找内容 再点击n,下一个单词 再点击N,上一个单词(shift + n) -
? + 单词从后向前查找 -
shift + f5也就是(%) 找到匹配括号 找到( ),[ ],{ },其中一个所对应的另一个 [==可以用于跳转到函数末尾==] -
:s /被替换内容/想要替换成为的内容/ g--->g表示整行所有内容
:s /被替换内容/想要替换成为的内容/ gc--->gc每次替换前都会询问是否替换
:%s /被替换内容/想要替换成为的内容/ g --->整个文件替换
:行号,行号 s /被替换内容/想要替换成为的内容/ g --->指定行内容替换
(这里行号的分隔符不一定要用, 同:也可以)
-
:!执行外部命令:!ls不退出 vim 情况下使用Linux系统指令 -
o在当前行的下方创建新行 ----小写字母oO在当前行上方创建新行(shift + o) -
0移动光标到行首----数字0$移动光标到行末
每一次启动文件都需要重新输入指令,那么有没有什么办法可以使得效果得以保存?
可以通过固化配置功能:
1.在终端上cd回到home目录
2.输入指令vim .vimrc (这里Linux中以.开头的文件为隐藏文件,ll -a可以查看到)
3.进入后点击i进入插入模式输入set nu
4.:wq保存退出
之后再打开就是默认设置行号了
总结
如此丰富的快捷键和指令集合,一时半会也无法全部掌握,这就要求学者在使用中总结,学以致用,通过反复操作,练就肌肉记忆,同时切勿死记硬背,到头来只是败倒在庞杂的指令体系中,所以一定要战略性学习~