美文网首页
vim 常用命令

vim 常用命令

作者: 92c5d7b45a71 | 来源:发表于2019-08-27 18:55 被阅读0次

    vim简明教程

    大小写敏感

    这是一个你不需要使用鼠标,不需使用小键盘,只需要使用大键盘(87)就可以完成很多复杂功能文本编辑的编辑器

    配置vs code vim以禁用其某些快捷键,能够能好得使用它 vimconfig

    模式

    • [ESC]Normal ,可以使用快捷键命令,或按:输入命令行。
    • i, I, o, O, a, AInsert ,插入模式,可以输入文本
    • vVisual ,可视模式,移动光标可以选择文本
      • VVisual line , 可视行模式, 总是整行整行的选中
      • <C-v>Visual block ,可视块模式,可以完成多行同时操作
    • RReplace 替换模式,正常模式下,按R进入。
    • :wq → 存盘 + 退出 (:w 存盘, :q 退出) (:w 后可以跟文件名
    • . → 重复上一个命令
    • 3. → 重复 3 次上一个命令,在很多情况下都可以使用数字重复执行命令
    • :help <command> → 显示相关命令的帮助。你也可以就输入 :help 而不跟命令。(退出帮助需要输入:q)

    各种进入插入模式的方式

    • i → 在光标前插入
    • I → 行首插入
    • a → 在光标后插入
    • A → 行尾插入
    • o → 在当前行后插入一个新行
    • O → 在当前行前插入一个新行
    • s → 删除光标所在处字符,并进入插入模式
    • S → 删除光标所在的行,并进入插入模式

    复制 粘贴

    • yyY → 拷贝当前行
    • <line>yy→ 拷贝从 光标所在行 到 第n行 的内容
    • p → [paste] 粘贴剪贴板 (p是表示在当前光标之后,P表示在之前)
    • 2p → 粘贴文本2次
    • 3iword[ESC] → 会写下"wordwordword", 重复3次world
    ri

    在vs code vim中可以通过设置"vim.useSystemClipboard":true使用系统的剪贴板 (默认使用vim自己的临时缓冲区)

    删除文本

    删除的内容将会存到剪贴板里

    • x → 删当前光标所在的一个字符

    • dd → 删除当前行

    • 2dd → 删除2行

    • d → [delete] 在选择模式下,删除选择内容

    • dt<char> → 删除所有的内容,直到遇到匹配字符,不包括匹配字符

    • dw → 删除光标所在的字符至单词结束的内容,例如 str = (*this)光标在h,将会删除his,更多命令看下面 可视化选择组合

    • c<move>→ 删除并进入插入模式,<move>可以是任何移动光标的命令,如ciw,cf<char>

    • <C-h> → 在插入模式,删除前一个字符

    • <C-w> → 在插入模式,删除前一个单词

    • <C-u> → 在插入模式,删除前面一行所有字符

    简单的移动光标

    • h,j,k,l →你也可以使用光标键 (←↓↑→)
    • 0 → 数字零,到行头
    • ^ → 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
    • $ → 到本行行尾
    • g_ → 到本行最后一个不是blank字符的位置。
    • /<word> → 搜索 匹配 的字符串, 如果搜索出多个匹配,可按n键到下一个)
    • <line>G → [go to] 到第 n 行
    • gg → 到第一行。(相当于1G,或 :1)
    • G → 到最后一行。

    按单词移动光标

    word_moves
    • wW → 到下一个单词的开头
    • eE→ 到下一个单词的结尾
    • bB → 到上一个单词的开头

    如果你认为单词是由默认方式,那么就用小写的e和w。默认上来说,一个单词由字母,数字和下划线组成(程序变量)
    如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W。(程序语句)

    • % : 匹配括号移动,包括 (, {, [ 你需要把光标先移到括号上
    • *#: 匹配单词移动 (光标当前所在的单词),移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)
    line_moves
    • 0 → 到行头
    • ^ → 到本行的第一个非blank字符
    • $ → 到行尾
    • g_ → 到本行最后一个不是blank字符的位置。
    • f<char> → 到本行下一个 匹配字符处,大写的 F 为本行上一个,例如fs到下一个为s的字符
    • t<char> → 到本行下一个 匹配字符前的第一个字符,大写的 T 为本行上一个

    可视化选择组合(重要)

    • <action><move>

      • action 可以是任何的命令,如 d(删除) c, y (拷贝), v (可以视模式选择)。

      • move 任何移动光标的命令

      当光标在==之后的blank字符上:

      avtion_move

      下一个组合<action><mode><object>可以同时往光标两边扩充,光标可以在选择内容的任意位置上;而当前组合中,光标只能在其中的一端。

    • <action><mode><object>

      • action 与上同,可以是任何的命令
      • mode 可以是:
        • a attach, 如果<object>是特别的字符的话,那么将会把括号给包含在内,其他情况与i等价
        • i inner, 不包含括号
    • object 可能是: w 一个单词 (a,i 等价), W 以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符(能将文字括起来):",',),}, ],>,(不区分左右符号)

      当光标在I上:

    可视块操作 向多行插入

    • <C-v><move>I 向多行首部添加
      • <C-v> 进入可视块
      • <move> 移动光标选择行,我在这里用的是G, (可使用 j 或 <C-d> 或是 /pattern 或是 % 等……)
      • I 进入插入模式
    向行首添加
    • <C-v>G$A 向多行尾部添加
    向行尾添加

    缩进

    • J → 把所有的行连接起来,变成一行
    • <> → 左右缩进
    • = → 自动缩进

    宏录制 把你的命令临时保存起来

    • q<char> → 开始以<char>为名字进行宏录制
    • q → 在宏录制时停止录制
    • @<char>→ replay宏<char>
    • @@ → 快速replay最新录制的宏

    示例

    在一个只有一行且这一行只有“1”的文本中,键入如下命令:

    • qaYp<C-a>q

    • qa 开始录制,名字为a

      • Yp 复制行
      • <C-a> 增加1
      • q 停止录制
    • @a → 在1下面写下 2

    • @@ → 在2 正面写下3

    • 现在做 100@@ 会创建新的100行,并把数据增加到 103.

    replay

    在gif图中,录制宏时也会实际执行,所以会比原文多一个,可能是vs code vim的原因

    相关文章

      网友评论

          本文标题:vim 常用命令

          本文链接:https://www.haomeiwen.com/subject/qtydectx.html