Vim常用快捷键

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

0 或功能键[Home]这是数字『 0 』:移动到这一行的最前面字符处 (常用)
$ 或功能键[End]移动到这一行的最后面字符处(常用)
G移动到这个档案的最后一行(常用)
nGn 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行
gg移动到这个档案的第一行,相当于 1G 啊! (常用)
nn 为数字。光标向下移动 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},
}

待定加入配置中

"vim.normalModeKeyBindingsNonRecursive": [{"before": [";"],"after": ["$","a",";"]}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/10822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【QT】QT背景介绍

本专栏内容为&#xff1a;QT学习专栏 通过本专栏的深入学习&#xff0c;你可以了解并掌握QT。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;QT &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &#x1f339;&#x1f…

灰度图恢复(C++)

思路&#xff0c;数字出现的次数与要统计的行列向匹配&#xff0c;函数表达式为 sum row*mcol 1; 例如初始出现次数为255 2&#xff0c;即255出现2次&#xff0c;则{0&#xff0c;0}、{0&#xff0c;1}都为255 #include <iostream> #include <sstream> #include…

3D分子生成的定制扩散框架 MolDiff - 评测

MolDiff模型是一种考虑分子键生成的3D分子生成的新模型。MolDiff是清华大学智能产业研究院马剑竹课题组发表在PMLR 2023的工作&#xff0c;第一作者是Xingang Peng&#xff0c;文章题目为&#xff1a;《 Addressing the Atom-Bond Inconsistency Problem in 3D Molecule Genera…

Rust中的链式调用方法

在Rust编程语言中&#xff0c;链式调用是一种流行的编程模式&#xff0c;它允许开发者以流畅、连续的方式调用多个方法。这种风格不仅提高了代码的可读性&#xff0c;而且使得复杂的操作可以串联在一起&#xff0c;形成一个清晰、简洁的语句。在Rust中&#xff0c;链式调用主要…

【Android】Kotlin学习之数据容器 -- 集合

一. 定义 List : 是一个有序列表, 可通过下标访问元素. 元素可以在list中出现多次, 元素可重复 Set : 是元素唯一的集合, 一般来说Set中元素的顺序并不重要, 无序集合. Map : 是一组键值对, 键是唯一的, 每个键刚好映射到一个值, 值可以重复 二. 集合创建 三. 示例 mutabl…

OSTE-Web-Log-Analyzer:基于Python的Web服务器日志自动化分析工具

关于OSTE-Web-Log-Analyzer OSTE-Web-Log-Analyzer是一款功能强大的Web服务器日志自动化分析工具&#xff0c;该工具专为安全研究人员设计&#xff0c;能够使用Python Web日志分析工具&#xff08;Python Web Log Analyzer&#xff09;帮助广大研究人员以自动化的形式实现Web服…

推导 模型矩阵的逆转置矩阵求运动物体的法向量

一个物体表面的法向量如何随着物体的坐标变换而改变&#xff0c;取决于变换的类型。使用逆转置矩阵&#xff0c;可以安全地解决该问题&#xff0c;而无须陷入过度复杂的计算中。 法向量变化规律 平移变换不会改变法向量&#xff0c;因为平移不会改变物体的方向。 旋转变换会改…

栈和队列的相互实现

1. 两个队列实现栈. - 力扣&#xff08;LeetCode&#xff09; 队列的特点是先进先出&#xff0c;而栈的特点是后进先出&#xff08;先进后出&#xff09;&#xff0c;也就是说重点在于利用两个队列来改变“出”的顺序。 假设我们在进行入栈操作的时候将数据依次入到一个队列中…

python如何单步调试

Python怎么单步调试&#xff1f;下面给大家介绍一下单步调试&#xff1a; 方法一&#xff1a;执行 python -m pdb myscript.py (Pdb) 会自己主动停在第一行。等待调试&#xff0c;这时你能够看看帮助。 方法二&#xff1a;在所调试程序的开头中&#xff1a;import pdb 并在你…

多线程编程中的隐形杀手:volatile关键字

概述 C中std::mutex本身是一个非volatile类型的对象&#xff0c;但是它保护的共享资源可能需要被volatile修饰&#xff0c;以确保对该资源的修改在不同线程之间的可见性。这种情况通常发生在多线程访问共享数据时&#xff0c;这些数据可能被异步修改&#xff0c;且修改的发生时…

【Vue3笔记03】Vue3项目工程中使用vue-router路由

这篇文章,主要介绍Vue3项目工程中如何使用vue-router路由。 目录 一、vue-router路由 1.1、下载vue-router路由 1.2、创建router.js文件 1.3、main.js配置路由

民航电子数据库:数据库的备份与恢复

目录 前言备份库级逻辑备份示例 恢复库级的逻辑恢复示例 前言 民航电子数据库的备份与恢复 备份 库级逻辑备份 备份目标库下所有的对象 。 因此 &#xff0c;库级逻辑备份需要由备份库的管理员&#xff08;SYSDBA&#xff09;登录至备份目标库进行操作。 语法格式 &#xff1…

商家转账到零钱怎么开通?一步步教你玩转微信营销新利器

在数字化营销日新月异的今天&#xff0c;微信支付凭借其便捷、安全的特点&#xff0c;成为了商家不可或缺的支付工具。而其中的“商家转账到零钱”功能&#xff0c;更是为商家提供了一个全新的营销利器。今天&#xff0c;我们就来详细解读一下如何开通这一功能&#xff08;我处…

怎么制作流程图?介绍制作方法

怎么制作流程图&#xff1f;在日常生活和工作中&#xff0c;流程图已经成为我们不可或缺的工具。无论是项目规划、流程优化&#xff0c;还是学习理解复杂系统&#xff0c;流程图都能帮助我们更直观地理解和表达信息。然而&#xff0c;很多人可能并不清楚&#xff0c;其实制作流…

通过 Java 操作 redis -- zset 有序集合基本命令

目录 使用命令 zadd&#xff0c;zrange 使用命令 zcard 使用命令 zrem 使用命令 zscore 使用命令 zrank 关于 redis zset 有序集合类型的相关命令推荐看Redis - Zset 有序集合 要想通过 Java 操作 redis&#xff0c;首先要连接上 redis 服务器&#xff0c;推荐看通过 Jav…

出租车在线教育系统,教育机构有哪些岗位,他们的职责是什么?

教育机构成立初期并不需要多少部门多少员工&#xff0c;形成一定规模之后&#xff0c;就要设立以下部门市场部销售部、.教学部、客服部、行政人事部、教务部、客服部&#xff0c;接下来我们看看各部门都有哪些岗位。 一、市场部&#xff1a; A 、经理主管岗位职责 1. 管理深圳区…

探索智慧推理:线上剧本杀小程序引领新潮流

随着科技的飞速发展&#xff0c;线上剧本杀小程序作为一种新兴的数字娱乐形式&#xff0c;正以其独特的魅力引领着新潮流&#xff0c;并在内容创造上展现出无限的潜力。这种融合了角色扮演、推理解谜和社交互动的游戏模式&#xff0c;不仅为用户带来了沉浸式的体验&#xff0c;…

iOS 沙盒图片的存取

简介&#xff1a; 图片的沙盒读存操作主要是增、删、查&#xff0c;一般不涉及改的操作&#xff0c;这里直接以代码演示 常用代码&#xff1a; 增 /*** 存储缩略图到沙盒中*/ (BOOL)saveImageToPath:(NSString *)imageFilePath image:(UIImage *)image{return [UIImageJPEG…

sqlite3报错:database is locked

问题描述&#xff1a; 使用visual studio2022创建动态库&#xff0c;动态库中包含向sqlite3数据库插入数据的函数&#xff0c;在测试函数时偶尔出现database is locked的错误提示。 思路&#xff1a; 1、最开始以为是代码写的有问题&#xff0c;可能对于某些资源没有释放&am…

物流单打印机怎么调格式距离,佳易王物流托运单管理系统软件打印单据左边距调节教程

物流单打印机怎么调格式距离&#xff0c;佳易王物流托运单管理系统软件打印单据左边距调节教程 一、前言 以下软件操作教程以&#xff0c;佳易王物流单打印管理软件为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、佳易王物流单管理系统打印…