Linux 使用 vim命令行
Posted 夏至的稻穗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 使用 vim命令行相关的知识,希望对你有一定的参考价值。
一、介绍
vim 是 vi 的升级版,但它也是最难用的编辑器,
二、初识 Vim
2.1 见模式:
- normal 普通模式,vim 默认就是normal,可以进行移动和各种命令,比如删除文本等。
- insert 插入模式,该模式,可以进行文本的编辑。
- visual 可视模式,与普通模式相比,可增加文本的选择区域,可以是一整块文本。比如在normal 模式下,使用 v 进入 visual 选择,使用大写的 V 选择行,使用 Ctrl + v 进行方块选择
- cmd 命令模式,在普通模式下,输入:即可,比如 :wq 保存退出,vs 竖分屏,sp 横分屏,% s/xx/yy 替换字符等
2.2 模式的切换常
- 从 normal 到 insert ,可以使用 i (insert) 或者 a (append),o (open)
- 从 insert 到 普通模式,按 Esc 或者 Ctrl + [ 即可回到普通模式
- cmd 模式,切换到普通模式,输入:即可
- visual ,普通模式下,输入 v 即可
2.3 插入模式小技巧
当我们使用i、a、或者 o 之后,就可以进入编辑模式了,它跟其他编辑器差不多,但这里也有一些小技巧。
2.3.1 快速纠错
当我们拼写的单词有问题时,可以使用一些技巧来快速到达:
-
ctrl + h 删除上一个字符
-
ctrl + w 删除上一个单词
-
ctrl + u 删除整行
一个上述顺序的 gif 如下:
这些操作,在 git 等终端命令下也适用。 -
gi 快速回到上次编辑的地方,当在normal 下,直接按 gi,就可以回到上次编辑的地方了
上面的行号,可以在cmd模式(冒号)下,使用 set nu(number),显示行号。
如果想永久显示行号,可以新建一个个人的文件,在终端输入 vim ~/.vimrc ,然后输入 set nu 保存即可,后续的一些配置,比如 设置 tap 的空格数,也可以在这里设置
2.3.2 快速移动
vim 最让人头疼的是他的反人类的方向移动的方法,hjkl,当然也可以使用方向键
光标移动
-
h 光标向左
-
j 光标向下
-
k 光标向上
-
l 光标向右
单词间的移动
首先先解释一下,word 表示以非空白符分割的单词,WORD 以空白符分割的单词 -
w/W 移动下一个 word/WORD 的开头
-
e/E 下一个单词的结尾
-
b/B 回到上一个 word/WORD 开头
比较常用的就是 w 和 e 了。
行间搜索移动
同一行快速移动的方式其实是搜索一个字符并且移动到该字符
- 使用 fchar 移动到 char 字符上,t 移动到char的前一个字符,比如在某一行搜索 g,就可以使用 fg
- 可以使用 ; 或者 , 继续搜索该行的 下一个/上一个
- 如果在行尾,则可以使用 F 来搜索
水平移动
如何快速移动到行首和行尾呢?
- 0 移动到行首第一个字符,^ 移动到第一个非空白字符,也可以使用 home/end
- $ 移动到行尾,g_ 移动到行尾非空白字符
但我们一般使用 0 或者 $ 就可以了,用上上面的 w/W 等去定位。
页面移动
记住一些常用的
- gg/G 移动到文件开头和结尾,按 ctrl + o 快速返回
- H/M/L 跳转到屏幕的开头(head),中间middle和结尾 lower
- ctrl + u,ctrl+f,上下翻页,(upword/forward),zz 把屏幕置为中间
2.4 Vim 快速增删该查
2.4.1 快速删除
在 normal 模式下,可以使用u(undo)撤回刚才的操作
- 使用 x 快速删除一个字符,如果使用num x,比如 5x,就是删除5个字符
- 使用d,进行组合操作,比如,dd删除一行,dw 删除一个单词,daw 删除一个单词以及相关空格,dt* 删除从当前位置到 * 字符的内容,比如 dt) 就是删除当前到 ) 之间的字符。d 也支持num,比如 2dd 就是删除2行
2.4.2 快速修改
常用的有三个 r(replace),c(change),s(substitute)
- normal 模式下,r 可以替换一个字符,R 相当于window的 ins
- s删除当前字符,并进入插入模式,S 删除整行,并进入插入模式
- c 配置文本对象,可以快速进行修改 ,比如 cw 就是删除某个档次并进入插入模式,于 dt* 差不多,只不过c 模式是会进入插入模式.
2.4.3 查询
- 使用 / 或者 ?进行前向或者反向搜索
- 使用 n/N 跳转下一个或者上一个匹配
- 使用 * 或者 # 进行当前单词的前向或者后向匹配
以上是关于Linux 使用 vim命令行的主要内容,如果未能解决你的问题,请参考以下文章