Vim常用快捷键

这个是我的草稿本记录一下防止丢失,以后有时间进行整理

0 或功能键[Home] 这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End] 移动到这一行的最后面字符处(常用)
G 移动到这个档案的最后一行(常用)
nG n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行
gg 移动到这个档案的第一行,相当于 1G 啊! (常用)
n n 为数字。光标向下移动 n 行
[Ctrl] + [f] 屏幕『向下』移动一页,相当于 [Page Down]按键
[Ctrl] + [b] 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
x, X 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用)
:tabp 切换到上一个编辑器
:tabn 切换到下一个编辑器
:tabfirst 切换到第一个编辑器
:tablast 切换到末一个编辑器
:sp 水平拆分编辑器
:vsp 垂直拆分编辑器
:new 水平拆分编辑器,并创建新的无标题文件
:vnew 垂直拆分编辑器,并创建新的无标题文件
:only 关闭所有的编辑器
gh或K 显示悬停
光标的移动

普通模式 NORMAL

| w | 跳到一个单词开头 |

| b | 跳到本单词或上一个单词的开头 |

| e | 跳到本单词或下一个单词结尾 |

| ge | 跳到上一个单词结尾 |

| 0 | 跳到行首 |

| ^ | 跳到从行首开始第一个非空字符 |

| $ | 跳到行尾 |

| gg | 跳到第一行 |

| G | 跳到最后一行 |

| f{char} | 光标跳到下一个{char}所在位置 |

| F{char} | 反向移动到上一个{char}所在位置 |

| t{char} | 光标跳到下个{char}的前一个字符的位置 |

| T{char} | 光标反向移动到上个{char}的后一个字符的位置 |

| ; | 重复上次的字符查找操作 |

| , | 反向查找上次的查找命令 |

动作 motion

普通模式 NORMAL
i (inner) 和 a (around) 的区别
i不包含 a包含

| iw / aw |

| i( / a( 或 ib / ab |

| i{ / a{ 或 iB / aB |

| i" / a" |

| i' / a' |

| i / a |

| i< / a< |

| i[ / a[ |

| it / at |

| is / as |

| ip / ap |

操作符

普通模式 NORMAL

| d(delete) | 删除 |

| c(change) | 修改(删除并进入插入模式) |

| y(yank) | 复制 |

| v(visual) | 选中并进入 VISUAL 模式 |

实列

  1. 修改 HelloWorld (ciw)

  2. 删除 diw

  3. 复制 yiw

    'HelloWorld'

  4. 修改泛型 ci<

  5. 删除泛型 di<

  6. 包含 括号一起删除 da<

  7. 删除返回值 di{ 或 diB

  8. 删除并修改 ci{

  9. 复制 yi{

  10. 包括括号删除 da{

    {

    flag,

    handleSetTrue,

    handSetFalse

    }

  11. 删除返回值 di( 或 dib

  12. 删除并修改 ci(

  13. 复制 yi(

  14. 包括括号删除 da(

    ('flag')

  15. 删除返回值 di[

  16. 删除并修改 ci[

  17. 复制 yi[

  18. 包括括号删除 da[

    [1,3,4,5]

  19. 删除返回值 di`

  20. 删除并修改 ci`

  21. 复制 yi`

  22. 包括括号删除 da ffff`

  23. 删除到 dfs => 删除d 查找f 字符s(s前面的全部删除)

    vim is awesome

  24. 删除 d^ => 删除d ^ 删除光标前面的

  25. 删除 d$ => 删除d $ 删除光标后面的

  26. 删除整个文件 die

  27. 删除整个文件并进入插入模式 cie

  28. 复制整个文件 yie

  29. 删除标签内的内容 dit

  30. 删除标签内的内容并进入插入模式 cit

dsdsdsadsadsadsadsadsadsadsadsad d dsadsad sad sad sad sad sad sa
dwddd sadsa ds dsa dsadsad sad sad sa dsa dsa dsa d sad sad sad

  1. 可视模式 viw 进入可视 i inner w 选中一个单词 后面可以接操作符 d 删除 c修改 y复制
  2. 可视模式 viB 进入可视 i inner B 选中大括号{}里面的全部内容 后面可以接操作符 d 删除 c修改 y复制
切换大小写
  1. ~ 将光标下的字母改变大小写

  2. 3~ 将光标位置开始的3个字母改变其大小写

  3. g~~ 改变当前行字母的大小写

  4. gUU 将当前行的字母改成大写

  5. guu 将当前行的字母改成小写

  6. gUaw(gUiW) 将光标下的单词改成大写

  7. guaw(guiw) 将光标下的单词改成小写

    FFFF

  8. 查看函数的实现及定义 gd

  9. 查看代码的tip 悬浮时 gh

  10. 切换标签页 gt下一个 后一个 gT 指定 2gt

  11. 转跳到侧边 Ctrl + 0

  12. 在不同的多标签页 Ctrl + 1...5

  13. 空格空格 s + 查找的字符

  14. "test" => cs" ' => 'test'

  15. "test" => ds" => test

  16. "test" => cs"t 123> =>

  17. ffffoo => ysiw ' =>

  18. fffff0 => ysiw < p> =>

  19. 多光标模式 gb 多次选中 c修改 d删除 i插入

h 左

j 下

k 上

l 右

ctrl + o 移动到上一光标位置

ctrl + i 移动到下一光标位置

行相关移动

0 行开头

^ 行开头(非空格)

$ 行尾

g_ 行尾(非空格)

词句相关移动

w 下一个词开始

W 下一个词开始(无视标点)

b 上一个词开始

B 上一个词开始(无视标点)

e 上一个词结束

E 上一个词结束(无视标点)

( 句首

) 句尾

块相关移动

{ 移动到块开始

} 移动到块结束

屏幕相关移动

ctrl + b 向上一屏幕

ctrl + f 向下一屏幕

ctrl + u 向上半屏幕

ctrl + d 向下半屏幕

H 当前屏幕第一行

M 当前屏幕中建行

L 当前屏幕最后一行

语言相关一种

gd 跳转到定义

文件相关移动

gf 跳转到文件

gg 文件头

G 文件尾

gg 第 N 行

G 第 N 行

: + 第 N 行

历史移动

g; 上一个修改位置

g, 下一个修改位置

ctrl + o 上一个跳转位置

ctrl + i 下一个跳转位置

窗口移动

ctrl + w, h 左边的窗口

ctrl + w, j 下边的窗口

ctrl + w, k 上边的窗口

ctrl + w, l 右边的窗口

ctrl + w, w 切换窗口

:bp 上一个标签

:bn 下一个标签

剪切/粘贴

d 剪切

y 复制

p 粘贴

P 粘贴到上一行

"_d 删除(不放置到剪切板)

"0p 粘贴(忽略剪切的内容)

折叠

zc 折叠代码块

zo 展开代码块

za 切换折叠

zR 展开所有

zM 折叠所有

常用功能

gu 小写转换

gU 大写转换

书签

m{a-zA-Z} 保存书签

小写的是文件书签,可以用(a-z)中的任何字母标记。

大写的是全局书签,用大写的(A-Z)中任意字母标记。
{a-zA-Z} 跳转到某个书签。 如果是全局书签,则会开启被书签标记的文件跳转至标记的行 0 跳转入现在编辑的文件中上次退出的位置 (go to last exit in file)

`` 跳转如最后一次跳转的位置

跳转至最后一次编辑的位置 复制代码
g`{mark} 跳转到书签
:delm {marks} 删除一个书签
:delm! 删除全部书签
:marks 显示系统全部书签
插件
easy-motion
<LEADER> <LEADER> s 进入跳转到字符模式

<LEADER> <LEADER> j/k 进入跳转到行模式

<LEADER> <LEADER> h/l 进入跳转到列模式
至标记的行
`0 跳转入现在编辑的文件中上次退出的位置 (go to last exit in file)
`` 跳转如最后一次跳转的位置
```跳转至最后一次编辑的位置
g`{mark} 跳转到书签
:delm {marks} 删除一个书签
:delm! 删除全部书签
:marks 显示系统全部书签
插件
easy-motion
<LEADER> <LEADER> s 进入跳转到字符模式

<LEADER> <LEADER> j/k 进入跳转到行模式

<LEADER> <LEADER> h/l 进入跳转到列模式



```json
{
    // 关闭本地历史记录功能
    "workbench.localHistory.enabled": false,
    // LICENSE文件设置 
    "files.readonlyInclude": {
        "LICENSE": true,
    },
    "files.associations": {
        "LICENSE": "plaintext"
    },
    // 自动保存
    "files.autoSave": "afterDelay",
    // 自动格式化的设置
    "editor.formatOnPaste": true,
    "editor.formatOnSave": true,
    // 字体设置
    "editor.fontSize": 18,
    "editor.fontFamily": "JetBrains Mono, 'Courier New', monospace",
    "editor.fontLigatures": true,
    // 主题设置
    "workbench.colorTheme": "One Dark Pro",
    // 启用自动猜测编码
    "files.autoGuessEncoding": true,
    // 平滑滚动和光标闪烁的设置
    "editor.smoothScrolling": true,
    "workbench.list.smoothScrolling": true,
    "editor.cursorBlinking": "smooth",
    "editor.cursorSmoothCaretAnimation": "on",
    // 自动换行功能(但还是同一行, 视觉上效果)
    "editor.wordWrap": "on",
    // 按下回车键时如何接受代码建议的行为
    "editor.acceptSuggestionOnEnter": "smart",
    // 建议列表中如何预先选择建议
    "editor.suggestSelection": "recentlyUsed",
    // 启用自定义对话框样式
    "window.dialogStyle": "custom",
    // 控制着是否在编辑器的概览标尺中显示断点标记
    "debug.showBreakpointsInOverviewRuler": true,
    // 显示匹配的括号对
    "editor.guides.bracketPairs": "active",
    // 新建文件时的默认语言类型
    "files.defaultLanguage": "${activeEditorLanguage}",
    // 禁用推荐安装扩展的功能
    "extensions.ignoreRecommendations": true,
    // 控制编辑器在键入一行后是否自动格式化该行。
    "editor.formatOnType": true,
    // 排除指定文件或文件夹的配置
    "files.exclude": {
        ".vscode": true
    },
    // 设置行号的显示格式
    "editor.lineNumbers": "relative",
    // 设置菜单栏的可见性
    "window.menuBarVisibility": "compact",
    // 设置活动栏(Activity Bar)的位置
    "workbench.activityBar.location": "bottom",
    // 禁止在资源管理器中删除文件时显示确认提示
    "explorer.confirmDelete": false,
    // 关闭欢迎页
    "workbench.startupEditor": "none",
    // Vim插件设置
    "vim.easymotion": true,
    "vim.incsearch": true,
    "vim.useSystemClipboard": true,
    "vim.useCtrlKeys": true,
    "vim.hlsearch": true,
    "vim.insertModeKeyBindings": [
        {
            "before": [
                "j",
                "k"
            ],
            "after": [
                "<Esc>"
            ]
        }
    ],
    "vim.normalModeKeyBindingsNonRecursive": [
        {
            "before": [
                "<leader>",
                "d"
            ],
            "after": [
                "d",
                "d"
            ]
        },
        {
            "before": [
                "<C-n>"
            ],
            "commands": [
                ":nohl"
            ]
        },
        {
            "before": [
                "K"
            ],
            "commands": [
                "lineBreakInsert"
            ],
            "silent": true
        }
    ],
    "vim.leader": "<space>",
    "vim.handleKeys": {
        "<C-a>": false,
        "<C-f>": false,
        "<C-p>": false,
        "<C-j>": false
    },
    // "// To improve performance",
    "extensions.experimental.affinity": {
        "vscodevim.vim": 1
    },
}

待定加入配置中

json 复制代码
"vim.normalModeKeyBindingsNonRecursive": [
    {
      "before": [";"],
      "after": ["$","a",";"]
    }
相关推荐
锅巴编程5 小时前
VsCode 插件推荐(个人常用)
ide·vscode·编辑器
做个爱笑的大男孩5 小时前
VScode clangd插件安装
ide·vscode·编辑器
ö Constancy8 小时前
Linux 使用gdb调试core文件
linux·c语言·vim
Morantkk12 小时前
Word和Excel使用有感
word·excel
躺平的花卷13 小时前
Python爬虫案例八:抓取597招聘网信息并用xlutils进行excel数据的保存
爬虫·excel
爱编程的小生13 小时前
Easyexcel(2-文件读取)
java·excel
程序员如山石13 小时前
Excel的图表使用和导出准备
excel
zhy81030215 小时前
.net6 使用 FreeSpire.XLS 实现 excel 转 pdf - docker 部署
pdf·.net·excel
傻啦嘿哟15 小时前
如何使用 Python 开发一个简单的文本数据转换为 Excel 工具
开发语言·python·excel
nbsaas-boot17 小时前
如何利用ChatGPT加速开发与学习:以BPMN编辑器为例
学习·chatgpt·编辑器