[Linux] vim基础

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, 到逗号前的第一个字符。逗号可以变成其它字符。
  • FT,和 ft 一样,只不过是相反方向。

插入

  • 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,复制光标后单词
  • yyy_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,存盘
  • :xZZ:wq,保存并退出 (:x 表示仅在需要时保存,ZZ不需要输入冒号并回车)
  • :bn:bp,你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文
    件。(使用:n也可以到下一个文件)

块操作:

  • Ctrl+v 然后移动光标选择块区域 进行操作以后按esc使得操作对于整个块区域生效
  • J,把所有的行连接起来(变成一行)
  • <>,左右缩进
  • =,自动给缩进