Linux系统vi命令快捷键汇总

2023-11-06

vi的基本概念

基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

  1. 命令行模式command mode)
      控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
  2. 插入模式(Insert mode)
      只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
  3. 底行模式(last line mode)
      将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。

命令行模式下的vi指令快捷键及释义:

h (向左移动一个字符)
j (向下移动一行)
k (向上移动一行)
l (向右移动一个字符)
i (插入)
I (插入行首)
a (追加)
A (追加行尾)
o (在光标下方新建一行)
O (在光标上方新建一行)
dd (删除当前行)
dw (删除一个单词)
x (删除一个字符)
u (撤销上一步操作)
Y (拷贝行)
y (拷贝)
P (粘贴在光标前)
p (粘贴在光标后)
g (跳到首行)
G (跳到末行)
dd (剪切)
U (撤销)
R (替换)

插入模式下的vi指令快捷键及释义:

Esc (退出插入模式)
Ctrl + h (删除前一个字符)
Ctrl + w (删除前一个单词)
Ctrl + u (删除当前行)
Ctrl + t (插入制表符)
Ctrl + d (向右缩进)
Ctrl + a (光标移到行首)
Ctrl + e (光标移到行尾)

底行模式下的快捷键和释义:

:w (保存当前文件)
:q (退出Vi)
:q! (强制退出Vi,不保存任何改动)
:wq (保存文件并退出Vi)
:wq! (强制保存文件并退出Vi)
:set nu (显示行号)
:set nonu (取消行号显示)
:set tabstop=n (设置Tab键的宽度为n个字符)
:set expandtab (将Tab键转换为等量的空格)
:set noexpandtab (取消Tab键转换为空格)
:set autoindent (自动缩进)
:set noautoindent (取消自动缩进)
:set syntax=xxx (设置语法高亮模式,xxx可以是各种语言的名称,如python、ruby、html等)
:set background=light/dark (设置配色方案,light为浅色,dark为深色)
:set mouse=a (启用鼠标)
:set nomouse (禁用鼠标)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux系统vi命令快捷键汇总 的相关文章

  • Vagrant 遇到问题 - “404 - 未找到”

    我正在尝试使用 Vagrant 制作一个 LAMP 盒子 有人告诉我它使用起来非常简单 我对网络和虚拟机完全陌生 对 Linux Ubuntu 的经验也很少 我目前已尝试按照官方文档页面上的教程进行操作 http docs vagrantu
  • 使用 systemctl 获取 systemd 进程的正常运行时间或停机时间?

    喜欢使用systemctl is active
  • 如何从 Bash 命令行在后台 Vim 打开另一个文件?

    我正在从使用 Gvim 过渡到使用控制台 Vim 我在 Vim 中打开一个文件 然后暂停 Vim 在命令行上运行一些命令 然后想返回到 Vim Ctrl Z 在正常模式下 暂停 Vim 并返回到控制台 fg可用于将焦点返回到 Vim job
  • 为什么 OS X 和 Linux 之间的 UTF-8 文本排序顺序不同?

    我有一个包含 UTF 8 编码文本行的文本文件 mac os x cat unsorted txt foo foo 津 如果它有助于重现问题 这里是文件中确切字节的校验和和转储 以及如何自己生成文件 在 Linux 上 使用base64 d
  • Linux shell 从用户输入中获取设备 ID

    我正在为一个程序编写安装脚本 该程序需要在其配置中使用 lsusb 的设备 ID 因此我正在考虑执行以下操作 usblist lsusb put the list into a array for each line use the arr
  • 如何在 Linux 和 C 中使用文件作为互斥体?

    我有不同的进程同时访问 Linux 中的命名管道 并且我想让此访问互斥 我知道可以使用放置在共享内存区域中的互斥体来实现这一点 但作为一种家庭作业 我有一些限制 于是 我想到的是对文件使用锁定原语来实现互斥 我做了一些尝试 但无法使其发挥作
  • Crontab 每 5 分钟一次 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我如何告诉 crontab 每 5 分钟运行一次 但从每小时的第二分钟开始 换句话说 我想在以下时间执行我的脚本minute 5 2 例如 我的脚本应
  • “git add”返回“致命:外部存储库”错误

    我刚刚进入 git 的奇妙世界 我必须提交我对程序所做的一系列更改 位于名为的目录中 var www myapp 我创建了一个新目录 home mylogin gitclone 从这个目录中 我做了一个git clone针对公共回购 我能够
  • GVIM可以有背景图片吗?

    我想知道是否可以将背景图像放入 gVim 中 这可以通过编程来完成吗 如果你必须的话 我建议你做以下几件事 使用合成窗口管理器 例如 Linux Windows Vista 和 Mac OS 上的 Compiz 可能有类似的工具 设置桌面背
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • VIM:使用 :normal 命令退出插入模式

    当我使用 normal 命令进入插入模式时 normal i 例如 如何退出插入模式 如果我按 或 VIM 会退出命令模式 并且我无法运行 normal 命令 I put imap
  • 为什么 fork 炸弹没有使 android 崩溃?

    这是最简单的叉子炸弹 我在许多 Linux 发行版上执行了它 但它们都崩溃了 但是当我在 android 终端中执行此操作时 即使授予后也没有效果超级用户权限 有什么解释为什么它没有使 Android 系统崩溃吗 一句话 ulimit Li
  • vmsplice() 和 TCP

    在原来的vmsplice 执行 有人建议 http lwn net Articles 181169 如果您的用户态缓冲区是管道中可容纳的最大页面数的 2 倍 则缓冲区后半部分成功的 vmsplice 将保证内核使用缓冲区的前半部分完成 但事
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 为什么 Linux 原始套接字的 RX 环大小限制为 4GB?

    背景 我试图mmap 我的原始套接字的 RX 环形缓冲区64 bitLinux 应用程序 我的环由 4096 个块组成 每个块大小为 1MB 总共 4GB 请注意 每个 1MB 块中可以有许多帧 如果您好奇 请参阅此文档了解背景信息 htt
  • 为什么 Linux 没有 DirectX API?

    在考虑现代显卡的 Windows 系统上 DirectX API 的驱动程序端实现时 我想知道为什么此实现在非 Windows 系统 尤其是 Linux 上不可用 由于明显缺乏此功能 我只能假设有一个我无视的充分理由 但在我的原始理解中 我
  • 调用 printf 系统子例程在汇编代码中输出整数错误[重复]

    这个问题在这里已经有答案了 来回 在windows7控制台窗口中运行gcc s2 asm 然后生成一个exe文件 运行a exe 然后崩溃 为什么 s2 asm 代码由以下源代码生成 int m m 1 iprint m s2 asm请参考
  • docker 非 root 绑定安装权限,WITH --userns-remap

    all 尝试让绑定安装权限正常工作 我的目标是在容器中绑定安装卷 以便 a 容器不以 root 用户身份运行入口点 二 docker daemon 配置了 userns remap 这样容器 主机上没有 root c 我可以绑定挂载和读 写
  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe

随机推荐

  • 分布式发展过程

    目录 1 分布式的演变过程 1 分布式的演变过程 框架的演变过程 友情链接 分布式的演变过程 友情链接 2 分布式架构的演进 初始阶段架构 初始阶段 的小型系统 应用程序 数据库 文件等所有的资源都在一台服务器上通俗称为LAMP 特征 应用
  • opencv基础-环境配置&官方文档&源码编译

    opencv环境配置 官方文档 源码编译 前言 一 官方下载网址 二 官方文档地址 三 安装教程 1 包下载 2 环境配置 1 为什么要配置环境 2 环境变量 3 系统环境 四 配置vs工程环境 vs2019 opencv4 6 0 1 v
  • Kubernetes学习笔记之Deployment篇(六)

    Deployment概念 Kubernetes Deployment是Kubernetes中的一个控制器对象 用于管理应用程序的部署 它管理和自动更新应用程序的ReplicaSets 并确保应用程序在任何时候都有一定数量的可用实例 Depl
  • IP3 三阶交调截取点测试(转帖)

    放大器 混频器和振荡器的通用规范 本文介绍并定义了在混频器 放大器和振荡器的数据资料中用到的RF术语 包括增益 变频增益 相位噪声 三阶截取点 P1dB 插入损耗 输出功率 调谐增益和调谐范围 另外还给出了图形和图像以阐明关键的概念 这些在
  • Grouped Query Attention论文阅读

    论文 GQA Training Generalized Multi Query Transformer Models from Multi Head Checkpoints 1 背景介绍 Google在2023年发表的一篇关于Transfo
  • MATLAB求解矩阵特征值的六种方法

    MATLAB求解矩阵特征值的六种方法 关于这个特征值的求解一共六种方法 幂法 反幂法 QR方法 对称QR方法 jacobi方法 二分法 接下来就着重讲解这些算法的是如何使用的 幂法 算法如下 输入 矩阵A 非零矢量x0 maxit 2000
  • openGL之API学习(二十七)glEnable

    开启服务器端的opengl功能 void glEnable GLenum cap GL BLEND If enabled blend the computed fragment color values with the values in
  • LeetCode416-分割等和子集(经典01背包问题—动态规划)

    目录 思路 什么是01背包问题 01背包问题空间复杂度优化 滚动数组 本题代码 本题空间复杂度优化 滚动数组 给你一个 只包含正整数 的 非空 数组 nums 请你判断是否可以将这个数组分割成两个子集 使得两个子集的元素和相等 示例 1 输
  • RPC 设计与实现

    RPC 设计与实现 互联网架构演变 微观 单一架构 以实现功能为目的 扩展性差 数据访问层问题 垂直架构 业务拆分 各司其职 控制层 M V解耦 分布式服务 服务间的相互调度 RPCremote process call 流动式计算 伸缩性
  • 如何判断用户有没有关注订阅号

    收集整理的方法如下 微信用户访问微信公众号 订阅号 的网页时判断用户有没有关注公众号 订阅号 1 前提 微信公众号分为服务号和订阅号 它们的接口权限各不相同 服务号可以通过网页授权接口 用户授权后获取用户的openid 通过用户的openi
  • 如何解决过拟合与欠拟合

    如何解决过拟合与欠拟合 根据不同的坐标方式 欠拟合与过拟合图解不同 1 横轴为训练样本数量 纵轴为误差 如上图所示 我们可以直观看出欠拟合和过拟合的区别 模型欠拟合 在训练集以及测试集上同时具有较高的误差 此时模型的偏差较大 模型过拟合 在
  • GLSL 数据精度

    1 默认精度 顶点着色器中默认精度 precision highp float precision highp int precision lowp sampler2D precision lowp samplerCube 像素着色器中默认
  • 【待完善另一种情况】tensorflow 使用CPU而不使用GPU的问题解决

    文章目录 1 问题 2 Solution 3 other 4 更新 5 参考 1 问题 今天运行代码时发现一个怪现象 在使用TensorFlow时 通过os environ CUDA VISIBLE DEVICES 0 指定使用GPU 0
  • TLB的作用与机制

    TLB Translation Lookaside Buffer 转换检测缓冲区 是用来帮助CPU中的MMU进行地址转换的 在可分页系统中 每个进程都有自己虚拟地址空间和虚拟页面 当CPU执行进程代码读到虚拟地址时 不是直接将该虚拟地址送到
  • 泰勒图(Taylor diagram)绘制方法大汇总

    泰勒图 Taylor diagram 的基本介绍 R 绘制泰勒图 Taylor diagram Python 绘制泰勒图 Taylor diagram 泰勒图 Taylor diagram 的基本介绍 泰勒图 Taylor diagram
  • GEO2R数据下载速度慢、基因注释、差异分析、火山图、热图及后续处理

    GEO2R数据分析 首先感谢生信技能树大神jmzeng1314提供的github包 由于我这边访问github比较困难 因此我已经导入到我的 gitee 托管平台 https gitee com swcyo 特别声明 正版托管地址是http
  • java 工具类实现驼峰和下划线的互相转换

    下划线转驼峰 如果是下划线转驼峰 那么ch就是 public static String toCamel String str String ch if str indexOf ch 1 return str String strings
  • Git下载安装及常用命令

    背景 Git是一个开源的分布式版本控制系统 可以有效 高速的处理从很小到非常大的项目版本管理 安装 在你开始使用 Git 前 需要将它安装在你的计算机上 即便已经安装 最好将它升级到最新的版本 你可以通过软件包或者其它安装程序来安装 或者下
  • shu_1241 邮局位置问题

    http 202 121 199 212 JudgeOnline problem php cid 1078 pid 5 分析 由于题目中的距离是折线距离 所以能够分别考虑两个方向 又x方向与y方向实质是一样的 所以以下 用x方向来分析 如图
  • Linux系统vi命令快捷键汇总

    vi的基本概念 基本上vi可以分为三种状态 分别是命令模式 command mode 插入模式 Insert mode 和底行模式 last line mode 各模式的功能区分如下 命令行模式command mode 控制屏幕光标的移动