vim的超详细使用方法

2023-10-30


vim是史上最难编辑器,但也同时是最牛逼的编辑器!

vim的四种模式

命令模式

使用vim进行编辑时,默认就处于命令模式。在该模式下,无法输入文本内容,只能使用快捷键对文本内容进行复制、粘贴、删除、快速定位等操作。

编辑模式

在该模式下,可以直接对文本内容进行编辑:输入文本、删除文本等操作。

底行模式

在该模式下,对文件内容进行查找、替换、保存、退出等操作。

可视化模式

在该模式下,可以做一些列选操作(通过移动键选中区域,对区域进行操作)。

命令模式详解

移动光标

(无视大小写)H向左移动、J向下移动、K向右移动、L向上移动、w以单词为单位向后移动、b以单词为单位向前移动

快速定位光标

$定位到光标所在行的行末

^定位到光标所在行的行首

gg定位到文件的首行

G定位到文件的末行

ngg或者``nG`定位到第n行

复制

yy复制光标所在行

nyy复制n行(从光标所在行开始)

粘贴

p粘贴到光标所在行的下一行

np粘贴n行,从光标所在行下一行开始

P粘贴到光标所在行,原来内容下移

nP粘贴n行,从光标所在行开始,原来内容下移

剪切和删除

vim中剪切和删除其实是同一个操作dd

如果剪切(dd)了,但没有粘贴§就是删除;

如果剪切(dd)了,并且粘贴了§就是剪切。

dd删除光标所在行

ndd删除n行(从光标所在行开始)

D删除光标所在行,使之变为空白行

x删除光标所在位置字符

nx删除n个字符,从光标开始向后

X删除光标前一个字符

nX删除光标前n个字符

撤销和恢复

u就是撤销之前的操作

ctrl+r就是恢复(取消)撤销的动作

编辑模式详解

必须在命令模式下才能够进入编辑模式!!!

ESC退出编辑模式,进入命令模式

i进入编辑模式,可以在光标之前插入内容

a进入编辑模式,可以在光标之后插入内容

o进入编辑模式,可以在光标的下一行插入内容

底行模式详解

必须在命令模式下才能够进入底行模式!!!

ESC退出底行模式,进入命令模式

保存和退出

第一步::进入底行模式

第二步:

w保存文件内容

w!强制保存文件内容

q退出文件

q!强制退出文件

wq保存退出

文件内容的替换

第一步::进入底行模式

第二步:

s/要替换的关键字/替换后的关键字 + 回车替换光标所在行的第一个(从左到右)满足条件的关键字

s/要替换的关键字/替换后的关键字g + 回车替换光标所在行的所有满足条件的关键字

%s/要替换的关键字/替换后的关键字 + 回车针对文件的所有行进行替换(每行满足条件的第一个关键字)

%s/要替换的关键字/替换后的关键字g + 回车 针对文件的所有行进行替换(每行所有满足条件的关键字)

显示行号

第一步::进入底行模式

第二步:

set nu显示行号

set nonu取消显示行号

paste

当我们从别的地方复制代码然后在vim模式中粘贴时,vim会把这些内容当作时是用户键盘输入的,所以就会导致如果vim开启了自动缩进,那么在遇到换行符的时候vim会自动换行,导致代码变乱。

如果开启paste之后再粘贴代码时即可无视这个问题。

第一步::进入底行模式

第二步:

set paste开启paste模式

set nopaste关闭paste模式

查找和搜索

第一步:/进入底行模式,或者:/

第二步:

​ 输入要查找和搜索的关键字,按回车。

​ 如果有多个结果,n找下一个结果,N找上一个结果

可视化模式

必须在命令模式下才能够进入可视化模式!!!

ESC退出可视化模式,进入命令模式

v进入可视模式,V进入可视行模式,ctrl+v进入可视块模式。

在以上模式下,可用HJKL(无视大小写)进行区域选择,对于区域可用y复制、p粘贴、d剪切等。

批量注释

第一步:ctrl+v进入可视块模式

第二步:进行区域选择

第三步:I进入编辑模式(大写)

第四步:输入//注释符

第五步:按两下ESC

批量去注释

第一步:ctrl+v进入可视块模式

第二步:进行区域选择(选中注释符//

第三步:按d

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

vim的超详细使用方法 的相关文章

  • 从c调用汇编函数

    我试图从 c 调用汇编函数 但我不断收到错误 text globl integrate type integrate function integrate push ebp mov esp ebp mov 0 edi start loop
  • 从 Python 访问 802.11 无线管理帧

    我想从 Linux 上的 Python 嗅探 802 11 管理 探测请求 帧 这可以从 Scapy 中实现 如下所示 coding utf 8 from scapy all import def proc p if p haslayer
  • Linux“屏幕”的 Windows 等效项还是其他替代方案?

    我正在寻找一种在 Windows 环境中控制程序的方法 我希望它与 Linux 软件有点相似 screen 我搜索的原因是我需要使用标识符启动一个程序 在 Windows 上 这样我以后就能够关闭该特定程序 而无需关闭其他任何程序 即使实际
  • 从 php/linux 获取 pdf 的布局模式(横向或纵向)

    给定一个 PDF 如何使用 PHP lib 或 Linux 命令行工具获取 PDF 的布局模式 或相对宽度 高度 Using http www tecnick com public code cp dpage php aiocp dp tc
  • 如何在gnuplot中将字符串转换为数字

    有没有办法将表示数字 以科学格式 的字符串转换为 gnuplot 中的数字 IE stringnumber 1 0e0 number myconvert stringnumber plot 1 1 number 我可能使用 shell 命令
  • 未找到 Gem 命令

    我已经在 Ubuntu 10 10 32 位上安装了 gem apt get install gem y 但当我尝试跑步时 gem install something gem 我收到未找到命令的错误 bash gem command not
  • 在 Docker 容器中以主机用户身份运行

    在我的团队中 我们在进行开发时使用 Docker 容器在本地运行我们的网站应用程序 假设我正在开发 Flask 应用程序app py具有依赖关系requirements txt 工作流程大致如下 I am robin and I am in
  • 如何重命名 .tar.gz 文件而不提取内容并在 UBUNTU 中创建新的 .tar.gz 文件?

    我有一个命令将创建一个新的 tar gz现有文件中的文件 sudo tar zcvf Existing tar gz New tar gz 该命令将创建一个新的New tar gz从现有的文件Existing tar gz file 谁能告
  • 如何从远程 ssh 连接上运行的 tmux(复制模式)复制到本地剪贴板

    我通过 OS X 上的 VirtualBox 运行 Linux 我通过在无头状态下运行虚拟机 然后使用端口转发 sshing 到 Linux 机器来实现这一点 现在 无论复制到我的虚拟机上的剪贴板 我都可以粘贴到我的远程 ssh 会话上 但
  • 使用 ProcessBuilder 运行 shell 脚本

    我正在尝试使用 Java 和 ProcessBuilder 运行脚本 当我尝试运行时 我收到以下消息 error 2 没有这样的文件或目录 我不知道我做错了什么 但这是我的代码 ps 我尝试只执行不带参数的脚本 错误是相同的 String
  • Python将文件从Linux复制到WIndows

    我正在构建一个网站 该网站有一个表单 可以捕获用户数据并在用户数据上运行一些cgi cgi 的第一步是需要将文件从 Linux Web 服务器复制到 Windows 计算机 服务器将使用 Active Directory 角色帐户作为复制凭
  • 如何反汇编、修改然后重新组装 Linux 可执行文件?

    无论如何 这可以做到吗 我使用过 objdump 但它不会产生我所知道的任何汇编器都可以接受的汇编输出 我希望能够更改可执行文件中的指令 然后对其进行测试 我认为没有任何可靠的方法可以做到这一点 机器代码格式非常复杂 比汇编文件还要复杂 实
  • 比较linux中的两个未排序列表,列出第二个文件中的唯一项

    我有 2 个包含号码列表 电话号码 的文件 我正在寻找一种列出第二个文件中第一个文件中不存在的数字的方法 我尝试过各种方法 comm getting some weird sorting errors fgrep v x f second
  • 用于获取特定用户 ID 和进程数的 Bash 脚本

    我需要 bash 脚本来计算特定用户或所有用户的进程 我们可以输入 0 1 或更多参数 例如 myScript sh root deamon 应该像这样执行 root 92 deamon 8 2 users has total proces
  • Linux/Ubuntu 目录位置 ~/.vim/syntax/

    文件夹的默认位置在哪里 vim syntax 在Linux系统上 我正在尝试添加一个 Python 插件 您正在寻找 runtimepath 选项 该文档非常详细 使用 help runtimepath 但我会尝试在这里总结一下 The 运
  • 为什么使用 键取消搜索时 vim incsearch 会暂停?

    在 vim 中 如果你set incsearch然后它将滚动到当前搜索词的下一个匹配项 而无需移动光标 我经常用它来阅读一段代码而不用将光标移动到那里 因为我可以点击
  • 在用户程序中使用 或在驱动程序模块代码中使用 ...这有关系吗?

    我正在开发一个设备驱动程序模块和关联的用户库来处理ioctl 来电 该库获取相关信息并将其放入一个结构中 该结构被传递到驱动程序模块中并在那里解压 然后进行处理 我省略了很多步骤 但这就是总体思路 一些数据通过结构体传递ioctl is u
  • 使用 --prof 选项创建多个日志文件而不是一个 v8.log 的节点

    我正在尝试使用 prof 选项来分析我的 Node 应用程序 但我发现不是一个单一的 v8 log 文件 而是使用诸如isolate 0x9582b40 v8 log isolate 0xa1cab78 v8 6049 等前缀创建的多个文件
  • 从哪里获取 iostream.h

    我正在尝试在 Linux 中做一些事情 但它抱怨找不到 iostream h 我需要安装什么才能获取此文件 这个标准头的正确名称是iostream没有扩展名 如果您的编译器仍然找不到它 请尝试以下操作 find usr include na
  • 如何通过不同的接口路由 TCP/IP 响应?

    我有两台机器 每台机器都有两个有效的网络接口 一个以太网接口eth0和 tun tap 接口gr0 目标是使用接口在机器 A 上启动 TCP 连接gr0但然后让机器 B 的响应 ACK 等 通过以太网接口返回 eth0 因此 机器 A 发出

随机推荐

  • ARM Linux下安装CH341串口驱动

    在arm Linux环境下安装CH341串口驱动需要单独编译串口的驱动 本人编译环境Ubuntu 14 04 gcc编译工具arm linux gnueabihf gcc 1 代码检查 查看内核目录下 kernel drivers usb
  • Python中的logging模块解析

    前言 在自动化测试中 为了定位问题 调试框架代码 需要使用日志模块 今天我们重点讲解Python中的logging模块 在学习使用logging模块前 我们先要了解logging模块的四大天王 logger handler filter f
  • 《认识k8s》学习笔记Day01

    一 传统的部署方式 将三个应用部署到一台机器上 如果其中一台机器崩溃 会导致其他的机器受到影响 严重的会导致其他应用下线并不安全 二 虚拟化的部署方式 在物理机上开通几个虚拟机 将应用部署到虚拟机上 就算某个应用崩溃了 也只在这个虚拟机内崩
  • 怎样用计算机绘制幂函数图像,几何画板如何画幂函数的图像

    在学习了一些基本初等函数后 会接触 幂函数 概念 其实幂函数并不是陌生的 之前学过的依次函数 二次函数和反比例函数都是幂函数 幂函数其实同指数函数 对数函数一样 都是函数中的一类特殊函数 利用几何画板探究幂函数的性质 可以克服黑板作图的不精
  • 顺序表的基本操作(1)——插入操作

    顺序表的插入运算 线性表的插入运算是指在表的第i 1 i n 1 个位置 插入一个新元素x 使长度为n的线性表 a1 ai 1 ai an 变成长度为n 1的线性表 a1 ai 1 x ai 1 an 算法思想 用顺序表作为线性表的存储结构
  • 黄金矿工--回溯算法

    LeetCode 1219 黄金矿工 你要开发一座金矿 地质勘测学家已经探明了这座金矿中的资源分布 并用大小为 m n 的网格 grid 进行了标注 每个单元格中的整数就表示这一单元格中的黄金数量 如果该单元格是空的 那么就是 0 为了使收
  • CloudQuery到底是一款什么样的数据库管理工具

    前言 随着时代和企业的发展 单一或少数的数据库 繁杂错乱的操作工具已无法满足开发者对数据获取和操作的新要求 那么 有没有一款工具可以将所有数据库归纳到一个平台中 有没有办法让开发者操作数据更加高效便捷 我们曾在市面上找了很久 但仍没有找到一
  • pytorch:把图片数据转化成tensor

    摘要 在图像识别当中 一般步骤是先读取图片 然后把图片数据转化成tensor格式 再输送到网络中去 本文将介绍如何把图片转换成tensor 一 数据转换 把图片转成成torch的tensor数据 一般采用函数 torchvision tra
  • 让人抓狂的 URL 重定向的 Cookie 问题

    想象下面两行伪代码 1 setCookie 2 redirect new web url 首先设置一个Cookie 然后重定向到另外一个网址 这个网址跟当前网站的域名不同 在多数情况下这两行代码执行毫无问题 cookie 正确保存到浏览器
  • SHELL 基础 入门(三) Bash 快捷键 命令执行顺序,详解通配符

    目录 Bash 常用快捷键 输入输出重定向 lt lt 用法 输出重定向 命令执行顺序 分号 通配符 传统通配符 常用字符 强调 生成序列 Bash 常用快捷键 Ctrl A 把光标移动到命令行开头 Ctrl E 把光标移动到命令行尾 Ct
  • 国产FPGA芯片,机遇与挑战并存

    FPGA是可以先购买再设计的 万能 芯片 FPGA Field Programmable Gate Array 现场可编程门阵列 是在硅片上预先设计实现的具有可编程特性的集成电路 它能够按照设计人员的需求配置为指定的电路结构 让客户不必依赖
  • 数据结构中缀表达式转换为后缀表达式并求值,pta试题,小白心酸史

    数据结构中缀表达式转换为后缀表达式并求值 1 中缀表达式转换为后缀表达式并求值 100分 把题目给出中缀表达式转换为后缀表达式输出 并求后缀表达式的值 为简单起见 我们约定 1 输入的中缀表达式一定是合法的 并且只含数字 四种运算符 和小括
  • 我的opencv3.1+vs2015配置

    opencv下载地址 www opencv org 下载opencv3 1版本 其实是个压缩文件zip 然后解压 解压文件说明 build 里是各平台的jar dll sources 是源文件 头文件 框架等等 设置环境变量 右键我的电脑
  • R语言介绍

    1 R的统计计算和绘图功能十分强大 2 R是一种区分大小写的解释型语言 R的赋值符号是 lt 而不是传统的 号 3 x lt rnorm 5 表示了一个名为x的向量对象 它包含5个来自标准正态分布的随机偏差 4 注释是有 开头 再 之后的任
  • 使用canvas进行图片压缩(前端图片压缩核心处理)

    一 原理 实际上就是利用canvas进行重新绘制 1 先将图片的file文件转成baseURL 2 创建一个image标签去接收文件获取图片的宽高和比例 3 创建canvas画布设置画布的大小 4 将图片绘制到canvas上面 5 对can
  • vue-json-viewer展示JSON内容

    文章目录 01 前言 02 接口内容预处理 03 json viewer使用 01 前言 最近写的一个小案例 需要将接口返回的JSON内容显示在页面上 要求是要和控制台返回的JSON内容一样能点击展开显示或者关闭 当时只知道处理内容格式 后
  • [AHK]输入法状态提示,中文状态提示“中”,英文状态提示“EN”

    输入法状态提示 中文状态提示 中 英文状态提示 EN 切换中英文状态的时候 或者用鼠标切换到另一个编辑窗口的时候再次提示 循环如此 功能 输入法状态提示 环境 win10 搜狗输入法 输入法状态切换用默认的shift键 作者 sunwind
  • 【100天精通Python】Day52:Python 数据分析_Numpy入门基础与数组操作

    目录 1 NumPy 基础概述 1 1 NumPy的主要特点和功能 1 2 NumPy 安装和导入 2 Numpy 数组 2 1 创建NumPy数组 2 2 数组的形状和维度 2 3 数组的数据类型 2 4 访问和修改数组元素 3 数组操作
  • s7300的db块详细说明_s7-300与s7-200的mpi通信中db块的详细使用

    哪位有s7 300与s7 200的mpi通信中db块与v区对应详细资料 另外我想问一下想用组态软件与s7 300做mpi通信 然后用e277模块与s7 300做dp通信同时组态软件也能访问s 200不知道可不可以 硬 软件组态方面应该怎样连
  • vim的超详细使用方法

    文章目录 vim的四种模式 命令模式详解 移动光标 快速定位光标 复制 粘贴 剪切和删除 撤销和恢复 编辑模式详解 底行模式详解 保存和退出 文件内容的替换 显示行号 paste 查找和搜索 可视化模式 批量注释 批量去注释 vim是史上最