当前位置: 首页 > news >正文

Vim 快捷键

本文翻译自:https://devhints.io/vim


文章目录

    • 1、Basic
      • Exiting
      • Exiting insert mode
    • 2、编辑
      • 编辑
      • 剪切板
      • Visual 模式
        • 在可视模式下
      • 查找和替换
    • 3、导航
      • 方向
      • 单词
      • 线
      • 性格
      • 文件
      • 窗口
      • 搜索
    • 4、操作符
      • 用法
      • 操作符列表
      • 例子
    • 5、文本对象
      • 用法
      • 文本对象
      • 例子
      • 差异
    • 6、杂项
      • 标签页
      • 折叠
      • 导航
      • 跳跃
      • 计数器
      • 窗口
      • 标签
      • 案例
      • Marks
      • 杂项
      • 命令行
      • 文本对齐
      • 计算器
      • 退出并出现错误
      • 拼写检查
    • Also see


1、Basic



Vim是一个非常高效的文本编辑器。

有关快捷方式表示法,请参见:help key-notation


Exiting

:q关闭文件
:qa关闭所有文件
:w保存
:wq / :x保存并关闭文件
ZZ保存并退出
ZQ退出而不检查更改

Exiting insert mode

Esc / <C-[>退出插入模式
<C-C>退出插入模式,并中止当前命令

2、编辑


编辑

a追加
A从行尾追加
i插入
o下一行
O上一行
s删除字符并插入
S删除行并插入
C删除直到行尾并插入
r替换一个字符
R进入替换模式
u撤消更改
<C-R>重做更改

剪切板

x删除字符
dd删除线(剪切)
yy扬线(复制)
p粘贴
P粘贴前
"*p / "+p粘贴从系统剪切板
"*y / "+y粘贴到系统剪切板

Visual 模式

v进入可视模式
V进入可视线模式
<C-V>进入可视屏蔽模式

在可视模式下
d / x删除选择
s替换选择
y扬基选择(复制)

有关您可以执行的其他操作,请参阅操作符。


查找和替换

:%s/foo/bar/g : 在整个文档中将foo替换为bar


3、导航


方向

h j k l箭头键
<C-U> / <C-D>半页 上/下
<C-B> / <C-F>页面 上/下

单词

b / w上一个/下一个单词
ge / e上一个/下一个单词结尾

线

0 (零)行首
^行首(空格后)
$行尾

性格

fc前进到字符c
Fc后向字符c

文件

gg第一行
G最后一行
:{number}Go to line{number}
{number}GGo to line{number}
{number}jGo down{number}
{number}kGo up{number}

窗口

zz居中此行
zt顶部此行
zb底部此行
H移动到屏幕顶部
M移动到屏幕中间
L移动到屏幕底部

搜索

n下一个匹配搜索模式
N上一个拟合
*光标下的下一个整词
#光标下的上一个整词

4、操作符


用法

运算符允许您在一系列文本(由运动定义)中进行操作。这些在正常模式下执行。

dw
运算符Motion

操作符列表

d删除
y扬克(复制)
c更改(删除然后插入)
>缩进右
<缩进左
=自动缩进
g~交换大小写
gU大写
gu小写
!滤波器通过外部程序

请参见 :help operator


例子

将运算符与动作结合使用。

dd(重复字母)删除当前行
dw删除到下一个单词
db删除到单词的开头
2dd删除2行
dip删除文本对象(段落内)
(在可视模式下) d删除选择

请参阅::help motion.txt


5、文本对象


用法

文本对象允许您在文本块(对象)中或周围进行操作(使用运算符)。

vip
运算符[i]nside or [a]round文本对象

文本对象

p段落
wWord
s句子
[ ( { <A [], (), 或{}屏蔽
' " `A引号字符串
bA block [(
BA block in [{
tA XML tag block

例子

vip选择段落
vipipipip选择更多
yipYank内部段落
yapYank段落(包括换行符)
dip删除内部段落
cip更改内部段落

有关您可以执行的其他操作,请参阅操作符。


差异

gvimdiff file1 file2 [file3] : 在HMI中查看文件之间的差异


6、杂项


标签页

:tabedit [file]在新标签页中编辑文件
:tabfind [file]打开文件如果存在于新标签页
:tabclose关闭当前标签
:tabs列出所有标签
:tabfirst转到第一个标签
:tablast转到最后一个标签
:tabn转到下一个标签
:tabp转到上一个标签

折叠

zo / zO打开
zc / zC关闭
za / zA切换
zv打开折叠
zM关闭所有
zR打开所有
zm折叠更多(foldlevel+=1)
zr折叠更少(foldlevel-=1)
zx更新折叠

大写的是递归的(例如,zO是递归打开的)。


导航

%最近/匹配{[()]}
[( [{ [<上一个({<
])下一个
[m上一个方法开始
[M上一个方法结束

跳跃

<C-O>返回到上一个位置
<C-I>前进
gf转到光标中的文件

计数器

<C-A>增量数
<C-X>递减

窗口

z{height}<Cr> : 将窗格调整为{height}行高


标签

:tag Classname跳转到Classname的第一个定义
<C-]>跳转到定义
g]查看所有定义
<C-T>返回到最后一个标签
<C-O> <C-I>后退/前进
:tselect Classname查找Classname的定义
:tjump Classname查找Classname的定义(自动选择第一个)

案例

~切换大小写(Case=>cASE)
gU大写
gu小写
gUU大写当前行(也gUgU
guu小写当前行(也gugu

在可视或普通模式下执行这些操作。


Marks

``^`插入模式下光标的最后位置
``.`当前缓冲区中的最后更改
``"`最后退出当前缓冲区
``0`在最后编辑的文件中
''返回当前缓冲区中从哪里跳转的行
``返回当前缓冲区中从哪里跳转的位置
``[`到先前更改或拉拽文本的开头
``]`到先前更改或拉拽文本的结束
``<`到最后一个视觉选择的开始
``>`到最后一个视觉选择的结束
ma将此光标位置标记为a
``a`跳转到光标位置a
'a跳转到位置a
d'a从当前行删除到标记行a
d`a从当前位置删除到标记a
c'a的位置将文本从当前行更改为a
y`a的行从当前位置扬克文本到a
:marks列出所有当前标记
:delm a删除标记a
:delm a-d删除标记abcd
:delm abc删除标记abc

杂项

.重复最后一个命令
]p粘贴到当前缩进级别下
:set ff=unix将Windows行尾转换为Unix行尾

命令行

<C-R><C-W>将当前字插入到命令行
<C-R>"从"寄存器 粘贴
<C-X><C-F>插入模式下路径的自动完成

文本对齐

:center [width]
:right [width]
:left

请参阅:help formatting


计算器

<C-R>=128/2 : 显示除法的结果:‘64’

在插入模式下执行此操作。


退出并出现错误

:cq
:cquit

类似于:qa,但抛出错误。非常适合中止Git命令。


拼写检查

:set spell spelllang=en_us打开美国英语拼写检查
]s移动到光标后的下一个拼写错误的单词
[s移动到光标前的前一个拼写错误的单词
z=建议在光标下/后的单词拼写
zg将单词添加到拼写列表
zw将单词标记为坏/拼写错误
zu/C-X (Insert Mode)从spellfile中为光标下的坏单词建议单词

请参阅:help spell


Also see

  • Vim cheatsheet (vim.rotrr.com)
  • Vim documentation (vimdoc.sourceforge.net)
  • Interactive Vim tutorial (openvim.com)

2024-06-05(三)

相关文章:

  • Java进阶_接口
  • MySQL周内训参照1、ER实体关系图与数据库模型图绘制
  • wma和mp3哪个音质好?让我告诉你哪个更胜一筹
  • CAN总线终端电阻作用
  • Redis基本操作介绍
  • CATIA入门操作案例——创成式曲面设计案例,吹风机的绘制,多截面曲面的绘制,曲面偏移和修剪
  • SQLserver前五讲课堂笔记
  • GaussDB的数种形态
  • 谷粒商城实战(033 业务-秒杀功能4-高并发问题解决方案sentinel 1)
  • idea如何使用git reset进行回退以及如何使用git stash将暂存区文件储藏,打包后重新恢复暂存区文件
  • 【EBS】通过SQL查找所有的定时请求
  • 【HarmonyOS】逻辑类中调用通用弹窗的处理
  • 旅游卡免费旅游的使用条件有哪些?
  • Python自动化测试框架:unittest与pytest的深度对比
  • Android ServiceManager和它的兄弟们
  • $translatePartialLoader加载失败及解决方式
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • CentOS6 编译安装 redis-3.2.3
  • ES6系列(二)变量的解构赋值
  • gitlab-ci配置详解(一)
  • HTML中设置input等文本框为不可操作
  • Kibana配置logstash,报表一体化
  • Python实现BT种子转化为磁力链接【实战】
  • ReactNativeweexDeviceOne对比
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • Spring-boot 启动时碰到的错误
  • Vue实战(四)登录/注册页的实现
  • 订阅Forge Viewer所有的事件
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 如何优雅地使用 Sublime Text
  • 学习使用ExpressJS 4.0中的新Router
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • #《AI中文版》V3 第 1 章 概述
  • #单片机(TB6600驱动42步进电机)
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (力扣)1314.矩阵区域和
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (转载)Google Chrome调试JS
  • .form文件_一篇文章学会文件上传
  • .NET 设计一套高性能的弱事件机制
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .netcore如何运行环境安装到Linux服务器
  • .NET企业级应用架构设计系列之开场白
  • .net中应用SQL缓存(实例使用)
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • @Resource和@Autowired的区别
  • @vue-office/excel 解决移动端预览excel文件触发软键盘
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [16/N]论得趣
  • [5] CUDA线程调用与存储器架构