热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Vim命令初学者指南

我认为可能是时候记住vim命令了。在我的高中时,我们所有的CS课程都要求我们学习emacs和终端命令。虽然我确实对vim有粗略的了解(足以保存gitco

我认为可能是时候记住vim命令了。 在我的高中时,我们所有的CS课程都要求我们学习emacs和终端命令 。 虽然我确实对vim有粗略的了解(足以保存git commits并退出窗口),但我并不一定具有足够的知识来完全忽略键绑定。

最近,我偶然发现了以模仿《塞尔达传说》为原型的可爱的基于文本的游戏Vim Adventures。 它教了一些更基本的vim命令,并大大降低了学习曲线(特别是vi和vi以其界面极其简约而著称,但其中包含许多通常对于常规使用至关重要的快捷方式-有点像街头霸王和VSCO)。

无论如何,随着我在游戏中的进展,我意识到拥有某种速查表可能会有所帮助。 游戏以特定顺序列出了您需要了解的所有主要命令。

这是我的词汇表版本,但有更多的顺序:

一般

[count]:指定命令将被迭代的次数,默认为1

:删除光标后面的最后一个字符

yank:存储文本,但不修改文本(复制文本)

标记:为导航目的在文件内设置的隐藏位置

  • `:将光标直接放在标记上
  • ':将光标置于标记行的第一个非空白字符上

寄存器:指定存储在内存中的文本。 有九种类型:

  • 未命名的寄存器“”
  • 编号寄存器“ 0-” 9
  • 小删除寄存器“-
  • 命名寄存器“ a-” z
  • 黑洞寄存器“ _
  • 四个只读寄存器“; /”,/“%/”#
  • 表达式寄存器“ =
  • 选择和下降寄存器“ * /” + /”〜
  • 最后搜索模式“ /

nu,nonu:在文本的每行前面显示行号

  • :set nu:显示行号
  • :set nonu:隐藏行号
  • :set nu !:切换行号
  • :set nonu !:切换行号。

主要

Esc:退出键-将当前模式退出到“命令模式”

i:用于插入文本的插入模式

::用于插入命令的最后一行模式(保存文档,帮助)

q:允许您退出或退出vi

  • q !:强制退出
  • wq:退出,将修改后的文件写到原始文件

卷动

[count] h:将光标向左移动一个空格

[count] j:将光标向下移动一个空格

[count] k:将光标向上移动一个空格

[count] l:将光标向右移动一个空格

[count] w:将光标移至下一个单词的开头(标点符号视为单个单词)

[count] W:将光标移动到下一个单词的开头(单词是由空格分隔的字符/标点的序列)

e:将光标移至下一个单词的末尾(标点符号视为单个单词)

E:将光标移至下一个单词的末尾(单词是由空格分隔的字符/标点的序列)

[count] b:将光标移至上一个单词的开头(标点符号视为单个单词)

[count] B:将光标移至上一个单词的开头(单词是由空格分隔的字符/标点的序列)

0:将光标移至行首

^:将光标移动到该行的第一个非空白字符

[count] $:移至行尾或[count] -1行

[count] f {char}:将光标移到右侧第[count]个{char}

[count] F {char}:将光标移到左侧第{count}个第[count]次

[count] t {char}:将光标{char}的第[count]次出现之前向右移动一个空格

[count] T {char}:将{char}的第[count]次出现后向左移动光标一格

[count] ;:重复最后一个f / F / t / T命令

[count] ,:沿相反方向重复最后一个f / F / t / T命令

导航(围绕文档)

[count](:导航到上一个句子的开头(一个句子以'。','!'或'?'结尾,后跟一个空格或换行符)

[count]):导航到下一个句子的开头(一个句子以'。','!'或'?'结尾,后跟一个空格或换行符)

[count] {:将光标移到当前段落之前的空白行

[count]}:将光标移至下一段之前的空白行

[count] gg:导航到文档的第[count]行,默认情况下转到第一行

[count] G:导航到文档第[count]行上的第一个非空白字符,默认情况下转到最后一行的开头

[count] [{,[(,]),]}:转到上一个(或下一个)不匹配的'{'')',从但不包括当前光标位置开始

[count] |:将光标移动到当前行的第[count]列

导航(在窗口周围)

z:将光标线重画到:

  • zt:窗口顶部
  • zz:窗口中间
  • zb:窗口底部

[count] H:从窗口的第一行到第[count]行的第一个非空白字符,无需滚动屏幕

M:到窗口中线的第一个非空白字符

[count] L:从窗口的最后一行到第[count]行的第一个非空白字符

搜索

*:向前搜索当前行中最接近光标的单词的第[count]个出现。 搜索的单词是第一个

  • 光标下方的关键字(AZ,az,0–9,_,@)
  • 光标后的第一个关键字
  • 光标下的非空白单词
  • 光标后的第一个非空白单词

#:与*相同,但向后搜索

[count] / {pattern}:向前搜索图案,默认为最后一个图案

[count]?{pattern}:向后搜索图案,默认为最后一个图案

[count] n:重复最后一个“ /”或“?” 搜索

[count] N:重复最后一个“ /”或“?” 反向搜索

%:在该行上或此行之后找到下一个项目,然后跳转到其匹配项(包括([{{}])/ * * / #if #ifdef #else #elif #endif)

选拔

注意:节略,请参阅文本对象以获取更多详细信息

[count] aw:选择一个单词及其后的空白,除非光标位于一个单词前的空白中(然后包括之前的空白)

[count] aW:选择一个WORD及其后的空白,除非光标位于WORD之前的空白中(然后包括之前的空白)

[count] iw:选择一个单词(空格算作单词)

[count] iW:选择一个WORD(空格作为WORD计数)

[count] as:选择一个句子及其后的空白,除非光标位于该空白之前(然后包括之前的空白)

[count]是:选择一个句子(空格作为句子计数)

[count] ap:选择一个段落及其后的空白,除非光标位于该空白之前(然后包括之前的空白)

[count] ip:选择一个段落(空格算作段落)

删除中

[count] x:删除当前行中光标下方和之后的字符

[count] X:删除当前行中光标之前的字符

[count] r {char}:将光标下方的字符替换为{char}

d {motion}:删除{motion}移过的字符/单词

[count] dd:删除整行,无论光标在行中的位置如何

[count] D:删除光标下方的字符,直到该行的末尾,再增加[count] -1行

[count]〜:切换光标下方字符的大小写并将光标向右移动

:delm {args},:delmarks {args},:delm !,:delmarks !:删除指定的标记,包括az,AZ; 对于!,将删除所有现有的az标记

文字修改

[count] p:将来自指定寄存器的文本放在光标之后。 如果未指定寄存器,请使用未命名的寄存器(“),其中包含最后一个被删除,更改或删除的文本

[count] P:将来自指定寄存器的文本放在光标之前。 如果未指定寄存器,请使用未命名的寄存器(“),其中包含最后一个被删除,更改或删除的文本

[count] .:重复最后一次简单的更改,默认为最后一次更改的计数(如果最后一次更改包含编号的寄存器,则寄存器编号将递增)

插入模式命令

注意:Esc退出插入模式

[count] i {text}:在光标之前插入文本

[count] I {text}:在该行的第一个非空白字符之前插入文本

[count] a {text}:在光标后附加文本,如果光标在空行的第一列,则从此处开始插入

[count] A {text}:将文本附加到行尾

[register] c {motion}:删除运动

[register] [count] cc:将行删除到寄存器中并开始插入(逐行)

[register] [count] C:从光标位置删除到该行的末尾,再将[count] -1个行插入寄存器并开始插入

[register] [count] s:删除或替换字符到指定的寄存器中,然后开始插入(不是逐行),“ cl”的同义词

[register] [count] S:cc的同义词

[count] o {text}:在光标下方开始新行并插入文本

[count] O {text}:在光标上方换行并插入文本

扬京

[register] y {motion}:将{motion}文本插入寄存器,默认情况下存储在“ 0 register”中

[register] [count] yy:将行拖入寄存器,该行中的光标位置无关紧要

[register] [count] Y:yy的同义词

撤销重做

[count] CTRL + R,:redo:重做撤消的更改

[count] u,:undo:撤消更改

寄存器

:reg {arg}:显示{arg}指定的编号和命名寄存器的内容,或默认列出所有内容

文字对象

单词:由空格,空格,制表符,分隔的字母/数字/下划线或非空白字符序列,包括空行

WORD:一系列由空格(空格,制表符,)隔开的非空白字符,包括一个空行

句子:以“。”,“!”或“?”结尾的一系列单词 跟一个空格或换行符

段落:以换行符结尾的一系列句子

文本对象:操作后使用两个字符来指定操作范围。 第一个字符是“ a”(一个对象,包括空白)或“ i”(内部对象,没有空白或只有空白)。 第二个字符确定对象类型

  • w,W,s,p(单词,单词,句子,段落)
  • “,”,“(带引号的字符串)
  • {,},B({}块)
  • (,),b(()块)
  • [,]([]块)
  • <&#xff0c;>&#xff08;<>块&#xff09;
  • t&#xff08;HTML / XML标签块&#xff09;

有兴趣了解更多吗&#xff1f;

幸运的是&#xff0c;在线上有大量资源可以帮助您适应vi / vim环境。 这些站点的范围可帮助您记住基本的键绑定和快捷方式&#xff0c;以设置自己的宏并自定义工作环境。 您很快就会发现&#xff0c;vi / vim比简单的文本编辑器具有更多的实用性&#xff01;

  • Vim历险记
  • 打开Vim
  • Linux Vim指南

您觉得本指南有帮助吗&#xff1f; 如果是这样&#xff0c;给它“拍手”和分享&#xff01;

随时在网上其他地方找到我&#xff1a;

推特 &#64;sharontlin

脸书 &#64;sharonlinnyc

GitHub &#64; sharon-lin

From: https://hackernoon.com/a-glossary-of-vi-commands-e17cbc5b12f1



推荐阅读
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 本文将详细介绍如何在没有显示器的情况下,使用Raspberry Pi Imager为树莓派4B安装操作系统,并进行基本配置,包括设置SSH、WiFi连接以及更新软件源。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 探讨如何真正掌握Java EE,包括所需技能、工具和实践经验。资深软件教学总监李刚分享了对毕业生简历中常见问题的看法,并提供了详尽的标准。 ... [详细]
author-avatar
sddfdffwfefe_863
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有