Linux编译四组件(一):Vim教程

655 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

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种模式:普通模式插入模式命令模式可视模式替换模式.

  1. h 向左移动 l 向右移动 j 向下移动 k 向上移动 在非图形化界面,使用指令进行移动就显得尤为重要,在Linux系统环境下编程尽量使用这四个键来代替方向键 但是如果想要输入这几个字母,就要切换至插入模式,才能用于编辑文本

  2. 以下都是进入==插入模式==: i在光标之插入文本 a在光标之插入文本 I在本行行首插入文本 (shift + i) A在本行行末插入文本 (shift + a)

  3. : 进入==命令模式== :w 保存 :q 退出 :q! 不保存修改,直接强制退出 :wq 保存并推出

  4. r 进入==替换模式== R替换多个文本 (shift + r)

  5. v 进入==可视模式==,意为选择模式 1.按v进入可视模式 2.光标向右移,选中想要复制的文本 3.按y复制在剪切板 (vim的剪切板)与Windows的剪切板不互通 4.按p粘贴出来 [以上操作仅限于Vmware中]

    ym 复制这个单词

    yy 复制一整行

  6. esc 返回==正常模式==

  7. x 删除光标处文本

  8. dw (delete word) 从光标当前位置直到下一个单词开始处,不包括它的第一个字符

de 从光标当前位置直到本单词末尾,包括最后一个字符 (如果是中文的话,删除到第一个不是中文的地方)

db 向前删除一个单词

d$ 删除到当前整行行末

d2w 删除两个单词,光标置于单词

d2e 删除两个单词,光标置于单词

dd 一次删除一整行
2dd一次删除两行

    (dd其实并未物理删除,而是保存在了`粘贴板`,`p`粘贴在光标**后**,`P`粘贴在光标**前**)

9. 数字 + w 使光标向移动 ~ 个单词,光标置于单词首部

数字 + b 使光标向移动 ~ 个单词,光标置于单词首部

数字 + e 使光标向移动 ~ 个单词,光标置于单词末尾

  1. u (undo) 撤销一次操作

U 撤销整行操作 (shift + u)

Ctrl + r 反撤销(重做)

  1. Ctrl + z 把 vim 放在后台

fg 再切换出来

  1. cw (change word) [与dw不同的是:进入了插入模式]

删除到单词末尾,同时进入插入模式 ce cb c$ c2w 都同之前的d~操作

  1. Ctrl + g 显示当前光标位置文件信息

  2. gg来到文件开头

  3. G 来到文件末尾(shift + g)

  4. 行号跳转 :492 492 shift + g

  5. 两次引号'' 回到上次跳转位置

  6. set nu 在左侧设置行号 <---->set nonu取消行号

  7. / + 单词,从前向后查找内容 再点击n,下一个单词 再点击N,上一个单词(shift + n)

  8. ? + 单词 从后向前查找

  9. shift + f5也就是(%) 找到匹配括号 找到( ),[ ],{ },其中一个所对应的另一个 [==可以用于跳转到函数末尾==]

  10. :s /被替换内容/想要替换成为的内容/ g ---> g表示整行所有内容

:s /被替换内容/想要替换成为的内容/ gc--->gc每次替换前都会询问是否替换

:%s /被替换内容/想要替换成为的内容/ g --->整个文件替换

:行号,行号 s /被替换内容/想要替换成为的内容/ g --->指定行内容替换

(这里行号的分隔符不一定要用,:也可以)

  1. :!执行外部命令 :!ls 不退出 vim 情况下使用Linux系统指令

  2. o在当前行的下方创建新行 ----小写字母o O 在当前行上方创建新行(shift + o)

  3. 0 移动光标到行首----数字0 $ 移动光标到行末

每一次启动文件都需要重新输入指令,那么有没有什么办法可以使得效果得以保存?

可以通过固化配置功能:

1.在终端上cd回到home目录

2.输入指令vim .vimrc (这里Linux中以.开头的文件为隐藏文件,ll -a可以查看到)

3.进入后点击i进入插入模式输入set nu

4.:wq保存退出

之后再打开就是默认设置行号了

总结

如此丰富的快捷键和指令集合,一时半会也无法全部掌握,这就要求学者在使用中总结,学以致用,通过反复操作,练就肌肉记忆,同时切勿死记硬背,到头来只是败倒在庞杂的指令体系中,所以一定要战略性学习~