IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 编辑器之神——Vim之常用快捷键分类整理 -> 正文阅读

[开发工具]编辑器之神——Vim之常用快捷键分类整理

Vim起源

??Vim是从vi发展出来的一个文本编辑器,vi(visual editor)是unix/linux操作系统中最经典的文本编辑器,vim原来的名字叫做vi imitation(vi模拟器),目的是完全复制vi的功能,为开源和在类unix系统中移植而生,在成功被移植到unix之后名字变成了vi improved(vi改进版)。
??Vim创造了开源世界“协作精神”和“自由软件持续改进”的奇迹。成为了自由软件历史上不朽的“丰碑”。后世为了纪念这场伟大的编辑器开源运动,给vim封了神——“编辑器之神”。

有一款与Vim并称的编辑器Emacs,远古时代诞生的始祖软件很多都是用Emacs编辑器创造的,Emacs被称作“神之编辑器”,为了纪念使用Emacs写C的大神们。

??最近涉及了很多Linux下的工作,使用了一段时间的Vim,虽然Vim的学习曲线陡峭,但是古怪的操作方式在熟悉了之后用起来还是很带感的,虽然快捷键非常多,但很有逻辑性,理解了之后要在Vim下存活并不是很困难,之后就是日常使用增加熟练度。
??整理了常用的Vim快捷键分类如下。

1 模式切换

  • esc:normal常规模式;
  • i:insert插入模式;
  • v:visual可视模式;
  • : ——command命令模式;
  • r:replace替换模式。

2 启动vim

  • vim + file: 打开文件,从文件的末尾开始;
  • vim +num file: 打开文件,从第num行开始;
  • vim +/string file: 打开file,并将光标停留在第一个找到的string上。
  • vim -c cmd file: 在打开文件前,先执行指定的命令;
  • vim -R file: 以只读的方式打开文件,但可以强制保存;
  • vim -M file: 以只读的方式打开文件,不可以强制保存;
  • vim -r file: 恢复上次异常退出的文件;

3 文档操作

  • :——进入命令模式

  • :!——调用shell命令的前缀“!”,比如:!pwd可以显示当前路径

  • :w ——保存修改;

  • :q[uit] ——退出当前窗口(CTRL-w q);

  • :q!——强制退出(可在不保存的情况下退出)

  • :wq ——保存并退出(ZZ或:x);

  • :saveas newfilename ——另存为;

  • :e ——重新加载当前文档;

  • :f或ctrl+g ——显示文档名,是否修改,和光标位置。

  • :help ——查看帮助

4 移动光标

4.1 基本移动(文档方向=文字输入方向:后->前)

  • h,j,k,l:左(退格),上,下,右(空格)移动光标
    ?
  • b:移动到上一个单词的开头;
  • B:移动到上一个单词的开头(忽略标点);
  • w:移动到下一个单词的开头;
  • W:移动到下一个单词的开头(忽略标点);
    ?
  • e:移动到单词结尾(如果已在结尾则移动到下一单词结尾);
  • E:移动到单词结尾(忽略标点);
  • ge:移动到上一个单词结尾;
  • gE:移动到上一个单词结尾(忽略标点);
    ?
  • %:移动到配对的括号
    ?
  • (:上移一句;
  • ):下移一句;
  • {:移动到上一个空行,段落以空行为间隔;
  • }:移动到下一个空行;
  • [[:将光标移动到上一个代码段(或函数)的行首;
  • ]]:将光标移动到下一个代码段(或函数)的行首;
    ?
  • +或Enter: 把光标移至下一行第一个非空白字符;
  • -: 把光标移至上一行第一个非空白字符;
    ?
  • f+“单字符”:行内移动到下一个目标,使用“,”和“;”可以沿上下继续搜索;
  • F+“单字符”:行内移动到上一个目标,使用“,”和“;”可以沿上下继续搜索;
  • t+“单字符”:行内移动到下一个目标前,使用“,”和“;”可以沿上下继续搜索;
  • T+“单字符”:行内移动到上一个目标后,使用“,”和“;”可以沿上下继续搜索;

可以在操作前加上数字,表示操作的重复次数:
[n]+“移动操作”——操作前加上“数字”表示重复次数,3h表示左移三次,3fx表示移到后续的第3个x的位置;
[n]+“i”+“输入”——重复多次输入,3igo表示输入gogogo。

  • 0:移动到行首
  • ^:移动到行首(非空白字符)
  • $:移动到行尾
    ?
  • H:移动到屏幕上方(high)
  • M:移动到屏幕中间(middle)
  • L:移动到屏幕下方(low)
    ?
  • gg:移动到文件开头
  • G:移动到文件结尾
    ?
  • n| ——移动到第n列
  • nG或:n ——移动到第n行

4.2 翻屏(不修改代码)

  • ctrl+b: 向上翻一屏;
  • ctrl+f:向下翻一屏;
    ?
  • ctrl+u:向上翻半屏;
  • ctrl+d:向下翻半屏;
    ?
  • ctrl+e:向下滚动一行;
  • ctrl+y:向上滚动一行;
    ?
  • zz:将当前光标所在行居中;
  • zt:将当前光标所在行置顶;
  • zb:将当前光标所在行置底;

4.3 标记(导航)

可以用Ctrl+oCtrl+i进行后退和前进。

m{a-z}: 标记光标所在位置,局部标记,只用于当前文件;
m{A-Z}: 标记光标所在位置,全局标记,标记后,退出Vim, 重新启动,标记仍有效;
`{a-z}: 移动到标记位置;
`{0-9}:回到上[1-10]次关闭vim时最后离开的位置;

``: 移动到上次编辑的位置;
`": 移动到上次离开的地方;
`.: 移动到最后改动的地方;

:marks ——显示所有标记;
:delmarks a b ——删除标记a和b;
:delmarks a-c ——删除标记a、b和c;
:delmarks a c-f ——删除标记a、c、d、e、f;
:delmarks! ——删除当前缓冲区的所有标记;

:help mark-motions ——查看更多关于mark的知识。

上述操作中,出现`(点号)的地方也可以使用’(单引号),使用点号可以精确到列,使用单引号只精确到行

5 插入

所有的插入操作都会自动进入i插入模式

5.1 基本插入

  • i:光标前插入;
  • I:当前行第一个非空字符前插入
  • a: 在光标后插入;
  • A: 在当前行最后插入;
  • o: 在下面新建一行插入;
  • O: 在上面新建一行插入;
    ?
  • :r filename在当前位置插入另一个文件的内容;
  • :[n]r filename在第n行插入另一个文件的内容;
    ?
  • :r !date ——在光标处插入当前日期与时间;
  • :r !command ——同理,可以将其它shell命令的输出插入当前文档。

5.2 改写插入

  • [n]cc:改写光标所在行;
  • [n]s: 以输入的文本替代光标之后1(n)个字符,相当于c[n]l;
  • [n]S: 删除指定数目的行,并以所输入文本代替之,相当于[n]cc;

c[n]+移动操作:改写对应范围的内容([n]+操作——在第4节的移动操作里已经介绍过了):

  • c[n]h:改写光标左边1(n)个字符;
  • c[n]l: 改写光标右边1(n)个字符。
  • c[n]k: 改写光标上n行(包含当前行)的内容;
  • c[n]j:改写光标下n行(包含当前行)的内容;
  • c[n]b:改写光标位置到上n个单词的开头位置的内容;
  • c[n]w:改写光标位置到下n个单词的开头位置的内容;
  • c[n]e:改写光标位置到下n个单词的结尾位置的内容;
  • c$: 改写从光标当前位置到行尾;
  • c0: 改写从光标当前位置到行首;
  • cgg: 改写光标以上的所有行;
  • cG: 改写光标以下的所有行。
    ?
  • r+“字符”:替换当前位置的字符
  • R:进入replace模式,输入的内容会覆盖当前位置

5.3 拼接行

  • J:将下一行拼接到当前行末尾

6 删除

  • [n]dd:删除1(n)行;

d[n]+移动操作:删除对应范围的内容,d操作删除的内容会保存到vim寄存器,相当于剪切:

  • d[n]h: 删除光标左边1(n)个字符。
  • d[n]l: 删除光标右边1(n)个字符。
  • d[n]k: 删除光标上n行(包含当前行)的内容;
  • d[n]j: 删除光标下n行(包含当前行)的内容;
  • d[n]b:删除光标位置到上n个单词的开头位置的内容;
  • d[n]w:删除光标位置到下n个单词的开头位置的内容;
  • d[n]e:删除光标位置到下n个单词的结尾位置的内容;
  • d$或D: 删除从光标当前位置到行尾的内容;
  • d0: 删除从光标当前位置到行首的内容。
  • dgg: 删除光标以上的所有行;
  • dG: 删除光标以下的所有行;
  • :m,nd ——删除m行到n行的内容。

7 剪切

  • [n]x: 剪切光标右边n个字符,相当于d[n]l;
  • [n]X: 剪切光标左边n个字符,相当于d[n]h。

8 复制

  • y: 复制在可视模式下选中的文本;
  • yy或Y: 复制整行文本;

y[n]+移动操作:复制对应范围的内容:

  • y[n]h: 复制光标左边1(n)个字符。
  • y[n]l: 复制光标右边1(n)个字符。
  • y[n]k: 复制光标上n行(包含当前行)的内容;
  • y[n]j: 复制光标下n行(包含当前行)的内容;
  • y[n]b:复制光标位置到上n个单词的开头位置的内容;
  • y[n]w:复制光标位置到下n个单词的开头位置的内容;
  • y[n]e:复制光标位置到下n个单词的结尾位置的内容;
  • y$: 复制从光标当前位置到行尾的内容;
  • y0: 复制从光标当前位置到行首的内容;
  • ygg: 复制光标以上的所有行;
  • yG: 复制光标以下的所有行;
  • :m,ny ——复制m行到n行的内容。

9 粘贴

  • p: 在光标之后粘贴;
  • P: 在光标之前粘贴。

10 选择

  • v:进入visual模式,可以执行选择操作
  • e+“移动操作”:选择范围,选择完成后可以执行c、d、y、p等操作

11 寄存器

复制粘贴功能需要用到寄存器,使用的是vim自身的寄存器,所有只能在vim中使用
要关联系统剪贴板,需要vim的clipboard功能的支持
使用“vim --version | grep clipboard”查看
clipboard之前是+表示支持,-表示不支持
安装gvim或者vim-gnome可以支持剪贴板

:reg 显示所有寄存器的内容
"" ——不加寄存器索引时,默认使用的寄存器,""yy把当前行的内容放入默认寄存器。
"+ ——系统剪贴板,"+yy把当前行的内容放入系统剪贴板,"+p从系统剪贴板复制到vim。

12 查找与替换

12.1 查找

*——向下查找当前光标所在单词,可继续使用n向后查,N向前查
#——向上查找当前光标所在单词,可继续使用n向后查,N向前查
/+“字符串”:向下查找字符串,可继续使用n向后查,N向前查
?+“字符串”:向上查找字符串,可继续使用n向后查,N向前查

12.2 替换

:s/old/new ———用new替换当前行第一个old。
:s/old/new/g ——用new替换当前行所有的old。
:n1,n2s/old/new/g - 用new替换文件n1行到n2行所有的old。
:%s/old/new/g - 用new替换文件中所有的old。
:%s/^/xxx/g - 在每一行的行首插入xxx,^表示行首。
:%s/$/xxx/g - 在每一行的行尾插入xxx,$表示行尾。

所有替换命令末尾加上c,每个替换都将需要用户确认。 
如:%s/old/new/gc,加上i则忽略大小写(ignore)。

13 重复操作

. ————(英文句号)重复执行上一次的操作

例如你想手动将文件中所有的old转换为new,只需要:

进入普通模式,将光标移到old下

  1. 敲击*查找old
  2. 敲击cw替换old,输入new
  3. 按ESC继续进入普通模式
  4. 敲击n查找下一个old
  5. 敲击.重复执行替换(重复执行的是步骤2中的输入new操作)
  6. 重复步骤4、5即可

14 撤销、重做

  • u:撤销
  • ctrl+r:重做
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-11-11 12:55:00  更:2021-11-11 12:55:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:32:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码