Vim是一款功能强大的文本编辑器,是Unix和Linux系统中最常用的编辑器之一,可以大大提高编辑效率。它是Vi编辑器的增强版,提供了更多的功能和快捷键,可以大大提高编辑效率。
虽然它的学习曲线比较陡峭,但一旦掌握了它的基本操作和快捷键,就可以在编辑文本时事半功倍。
以下是Vim的一些特点和功能:
-
模式:Vim有多种模式,包括普通模式、插入模式、可视模式等。在普通模式下,可以使用快捷键执行各种操作,如复制、剪切、粘贴、查找、替换等。在插入模式下,可以像普通文本编辑器一样输入文本。在可视模式下,可以选择文本块进行操作。
-
快捷键:Vim的快捷键非常丰富,可以大大提高编辑效率。例如,使用yy命令复制一行文本,使用dd命令剪切一行文本,使用p命令粘贴文本等。
-
插件:Vim支持各种插件,可以扩展其功能。例如,可以安装代码高亮插件、自动补全插件、文件管理插件等。
-
跨平台:Vim可以在多种操作系统上运行,包括Unix、Linux、Windows等。
-
自定义:Vim可以通过修改配置文件来自定义其行为。例如,可以修改快捷键、设置颜色方案、添加插件等。
移动
j
,下k
,上h
,左l
,右v
,按v
之后按方向键可以选中你要选中的文字gg
,跳到第 1 行G
,跳到最后一行16G
或:16
,跳到第 16 行$
,到本行 行尾0
,到本行 行头^
,到本行的第一个非blank字符g_
,到本行最后一个不是blank字符的位置。%
,匹配括号移动,包括(
,{
,[
(需要把光标先移到括号上)*
,匹配光标当前所在的单词,移动光标到 下一个 匹配单词#
,匹配光标当前所在的单词,移动光标到 上一个 匹配单词/pattern
,搜索pattern
的字符串(如果搜索出多个匹配,可按n
键到下一个)fa
,到下一个为a
的字符处,你也可以fs
到下一个为s
的字符。3fa
,在当前行查找第三个出现的a。t
, 到逗号前的第一个字符。逗号可以变成其它字符。F
和T
,和f
和t
一样,只不过是相反方向。
插入
I
,在当前 行首 插入A
,在当前 行尾 插入i
,在当前字符的 左边 插入a
,在当前字符的 右边 插入o
(小写),在当前行 下面 插入一个新行O
(大写),在当前行 上面 插入一个新行
删除
x
,删除 光标后 的 1 个字符2x
,删除 光标后 的 2 个字符X
,删除 光标前 的 1 个字符2X
,删除 光标前 的 2 个字符dd
,删除当前行cc
,删除当前行后进入insert
模式dw
,删除当前光标下的单词/空格d$
,删除光标至 行尾 所有字符dG
,删除光标至 文件尾 所有字符ndd
,从当前光标开始,删掉n
行,比如3dd
dt"
,删除所有的内容,直到遇到双引号"
echo > aa.txt
,从 bash 角度清空文件内容,这个比较高效
复制
y
,复制光标所选字符yw
,复制光标后单词yy
或y_
或Y
,复制当前行4yy
,复制当前行及下面4
行y$
,复制光标位置至 行尾 的内容y^
,复制光标位置至 第一个非空白字符 的内容y0
,从当前位置复制到 行首yG
,从当前行复制到文件结束y20G
,从当前行复制到第20
行y?bar
,复制至上一个出现bar
的位置
粘贴
p
(小写),将粘贴板中内容复制到 光标之后P
(大写),将粘贴板中内容复制到 光标之前:%s/YouMeek/Judasn/g
,把文件中所有YouMeek
替换为Judasn
:%s/YouMeek/Judasn/
,把文件中所有行中第一个YouMeek
替换为Judasn
:s/YouMeek/Judasn/
,把光标当前行第一个YouMeek
替换为Judasn
:s/YouMeek/Judasn/g
,把光标当前行所有YouMeek
替换为Judasn
:s#YouMeek/#Judasn/#
,除了使用斜杠作为分隔符之外,还可以使用#
作为分隔符,此时搜索部分中间出现的/
不会作为分隔符,该命令表示:把光标当前行第一个YouMeek/
替换为Judasn/
:10,31s/YouMeek/Judasn/g
,把第10
行到31
行之间所有YouMeek
替换为Judasn
Vim 提供了 11 个剪贴板,分别是:0
,1
,2
,3
,4
,5
,6
,7
,8
,9
,a
,"
,默认采用的是 "
,也就是双引号。如果开启了系统剪贴板,则会另外多出两个:+
和*
。
使用:reg
命令,可以查看各个粘贴板里的内容。
指定复制到某个剪切板的命令:"7y
,表示使用 7
号剪切板。
指定黏贴某个剪切板内容:"7p
,表示使用 7
号剪切板内容进行黏贴
如果想y
/p
直接和系统剪贴板打通,可以在~/.vimrc
中加上以下配置:
set clipboard^=unnamed,unnamedplus
其他
guu
,把当前行的字母全部转换成 小写gUU
,把当前行的字母全部转换成 大写g~~
,把当前行的字母是大写的转换成小写,是小写的转换成大写u
,撤销Ctrl+r
反撤销
文件操作
:e <path/to/file>
,打开一个文件:saveas <path/to/file>
,另存为<path/to/file>
:w
,存盘:x
,ZZ
或:wq
,保存并退出 (:x
表示仅在需要时保存,ZZ
不需要输入冒号并回车):bn
和:bp
,你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文
件。(使用:n
也可以到下一个文件)
块操作:
Ctrl+v
然后移动光标选择块区域 进行操作以后按esc使得操作对于整个块区域生效J
,把所有的行连接起来(变成一行)<
或>
,左右缩进=
,自动给缩进