【linux vim使用说明】

基本概念

提示:本文是网络资源整理

  • 模式: vim 有多种模式,每种模式都有不同的功能。
    • 普通模式 (Normal Mode): 默认模式,用于导航和执行命令。
    • 插入模式 (Insert Mode): 用于文本输入。可以通过按 i 进入。
    • 可视模式 (Visual Mode): 用于选择文本。可以通过按 v 进入。
    • 命令模式 (Command-Line Mode): 用于执行命令。可以通过按 : 进入。

启动和退出

  • 启动 vim: 在终端中输入 vim filename。
  • 退出 vim:
    • 保存并退出: :wq 或 :x
    • 仅保存: :w
    • 仅退出(不保存更改): :q!

基本操作

普通模式

  • 移动光标:

    • 左移: h
    • 右移: l
    • 上移: k
    • 下移: j
    • 到行首: 0
    • 到行尾: $
    • 跳到文件开头: gg
    • 跳到文件末尾: G
  • 文本操作:

    • 删除当前字符: x
    • 删除当前行: dd
    • 删除到行尾: d$
    • 复制当前行: yy
    • 粘贴: p
    • 撤销: u
    • 恢复: Ctrl+r
  • 查找和替换:

    • 查找文本: /pat 然后按 Enter
    • 查找下一个匹配: n
    • 查找上一个匹配: N
    • 替换当前行第一个匹配的文本: 😒/old/new/
    • 替换当前行所有匹配的文本: 😒/old/new/g
    • 替换整个文件所有匹配的文本: :%s/old/new/g

插入模式

  • 进入插入模式:

    • 在光标前插入: i
    • 在光标后插入: a
    • 在当前行前插入新行: O
    • 在当前行后插入新行: o
  • 退出插入模式: 按 Esc


可视模式

  • 选择文本:

    • 字符选择: v
    • 行选择: V
    • 块选择: Ctrl+v
  • 操作选择的文本:

    • 复制选择的文本: y
    • 删除选择的文本: d
    • 粘贴: p

  • 命令模式
    • 保存文件: :w
    • 退出 vim: :q
    • 保存并退出: :wq 或 :x
    • 撤销更改: :undo
    • 恢复更改: :redo

高级功能

窗口和标签

  • 分割窗口:

    • 横向分割: :split filename
    • 纵向分割: :vsplit filename
  • 在窗口之间切换: Ctrl+w 然后使用方向键

  • 关闭当前窗口: :q


宏和自动化

录制宏:

1、开始录制:

  • 按 q 进入录制模式,然后按一个寄存器键(如 q)。这个寄存器键会用来存储录制的宏。

  • 示例: 按 q 然后按 a 开始录制到寄存器 a 中。
    2、执行操作:

  • 执行你希望录制的操作。例如,移动光标、删除文本、插入文本等。
    3、停止录制:

-按 q 停止录制宏。此时,所有在录制期间执行的操作都会存储在你选择的寄存器中。

执行宏

1、执行宏:

  • 要执行录制的宏,按 @ 然后按寄存器键。
  • 示例: 按 @a 执行存储在寄存器 a 中的宏。
常见问题及解决方法

1、宏没有效果:

  • 确保你在正确的模式下运行宏。通常,宏在普通模式下执行。

  • 检查宏是否录制正确。可以通过执行 :registers 查看寄存器的内容,确认录制的宏是否存在。
    2、宏录制错误:

  • 如果录制的宏不如预期工作,可能是因为在录制过程中操作的不一致。尝试重新录制并确保操作的步骤一致。
    3、宏在不同上下文中执行:

  • 有些宏可能依赖于特定的光标位置或上下文。在不同的上下文中运行宏可能会产生不同的效果。

示例

假设你有一个文本文件,每一行都是一个需要删除的项目,并且你想要批量删除这些行的开头部分。

1、录制宏:

  • 按 qa 开始录制到寄存器 a。

  • 移动光标到行首: 0

  • 删除到第一个空格: d

  • 移动到下一行: j

  • 停止录制: 按 q
    2、执行宏:

  • 在文件中移动光标到你想开始的行,然后按 @a 执行宏。

  • 如果你想在多行上重复宏,可以按 n@a,其中 n 是重复的次数。


插件和扩展

vim 支持插件,通过插件可以增强编辑功能。一些常用插件管理工具包括:

  • Vundle: https://github.com/VundleVim/Vundle.vim
  • Pathogen: https://github.com/tpope/vim-pathogen
  • vim-plug: https://github.com/junegunn/vim-plug

安装插件:

1、将插件 URL 添加到 ~/.vimrc 文件中。
2、运行 :PluginInstall(对于 Vundle)或 :PlugInstall(对于 vim-plug)。


示例配置

在 ~/.vimrc 文件中,你可以添加一些自定义配置来增强 vim 的使用体验:

" 设置行号
set number" 高亮当前行
set cursorline" 自动缩进
set autoindent
set smartindent" 启用语法高亮
syntax on" 设置制表符宽度
set tabstop=4
set shiftwidth=4
set expandtab

参考文献

Vim 官方文档
Vim 用户手册

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/48528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字典树(前缀树)数组实现(只能查26个单词)

这段代码实现了一个基于 Trie 树的字典树(Trie)数据结构,用于存储和检索字符串。其中包含以下几个方法. insert(String word): 向 Trie 树中插入一个单词。首先将单词转换为字符数组,然后遍历字符数组,逐个字符在 Trie…

解决STM32开启定时器时立即进入一次中断程序问题

转自 解决STM32开启定时器时立即进入一次中断程序问题_stm32f407定时器初始化自动进入一次-CSDN博客 配置STM32定时器时,定时器中断使能、定时器使能、清除更新中断标志位,三者不同顺序程序执行时有不同效果,具体如下: TIM_Clea…

Android4.4.4双声卡同时出声

在调试RK3288 Android4.4.4,该方案默认配置上SPDIF时HDMI就没声音,但客户需求是同时要有声音的,于是驱动配置上后,呈现两个声卡状态,此时需要通过修改HAL层来处理(RK3288 Android4.4.4对应的HAL层源码为hardware/rk29/audio目录),修改如下: 1.修改AudioHardware.cpp文…

【07】LLaMA-Factory微调大模型——微调模型导出与微调参数分析

上文介绍了如何对微调后的模型进行使用与简单评估。本文将介绍对微调后的模型进行导出的过程。 一、llama-3微调后的模型导出 首先进入虚拟环境,打开LLaMA-Factory的webui页面 conda activate GLM cd LLaMA-Factory llamafactory-cli webui 之后,选择…

C#开发:PowerDesigner建表和Navicat导入数据

一、打开Powerdesigner,新建一个模型,点击ok 二、用工具面板拖拽出一个数据表 (如果没有工具面板,请在如下操作中开启) 三、双击刚刚的拖拽出来的表,设计表的字段,可以添加注释说明 【备注】…

《Windwos API每日一练》12.1 剪贴板的简单用法

本节我们讲述剪贴板的简单实现方法。 本节必须掌握的知识点: 剪贴板数据的标准格式 内存分配 把文本传到剪贴板 从剪贴板中取得文本 打开和关闭剪贴板 第76练:剪贴板的简单用法 12.1.1 剪贴板数据的标准格式 Windows支持各种预定义的剪贴板格式&#…

Google Chrome 浏览器在链接上点右键的快捷键

如今,越来越多的软件都懒得设个快捷键,就算设置了连个下划线也懒得加了。 谷歌浏览器右键 > 链接另存为... 和 复制链接地址 的快捷键 (如图)

LeetCode 常见题型汇总

前30 22 生成括号 剪枝 51 N皇后 37 解数独 二分查找 69 求平方根 字典树 位运算 191 求1的个数 231 2的N次方 338 求0到N的比特位为1的个数 动态规划 并查集 LRU缓存 布隆过滤器

【软考-架构师】一、结构设计基础

一、计算机系统基础知识 1、计算机系统概述 定义:计算机系统是指用于数据管理的计算机硬件、软件及网络组成的系统。它是按人的要求接收和存储信息,自动进行数据处理和计算,并输出结果信息的机器系统。分类:计算机系统可划分为硬…

爬虫自己做的

1.urllib 1.1基本使用 1.2 下载(图片,页面,视频) 1.3 get 1.3.1 quote 中文变成对应uncode编码 当url 的wd中文时 quote是将中文变成对应uncode编码 然后拼接成完整的url 1.3.2urlencode方法 wd有多个参数 1.3.3ajas get实例 …

Connecting weaviate with langflow across docker containers

题意:在Docker容器之间连接Weaviate与Langflow 问题背景: I am trying to build a local RAG application using Langflow. For my vectore store, I want to use a local Weaviate instance, hosted in a separate docker container on the same netwo…

KAFKA搭建教程

KAFKA搭建教程 期待您的关注 KAFKA学习笔记 帮助更多人 目录 KAFKA搭建教程 1.下载Kafka并解压 2.添加环境变量 3.修改 server.properties 文件 4.将kafka复制到其它节点 5.修改node1、node2节点的broker.id 6.将master的环境变量同步到node1、 node2 7.启动zookeeper…

SQL中的游标是什么?

在 SQL 中,游标(Cursor)是一种用于遍历结果集的数据库对象。它允许开发者在 SQL 查询的结果集中逐行或逐批处理数据。 具体来说,SQL 中的游标通常用于以下目的: 遍历结果集:当一个 SQL 查询返回多行结果时…

BDD实践指南:Xcode中的行为驱动开发之道

BDD实践指南:Xcode中的行为驱动开发之道 在软件开发领域,行为驱动开发(Behavior Driven Development, BDD)是一种鼓励协作和需求理解的敏捷开发方法。BDD专注于用户行为和期望结果,通过具体的用例来指导开发过程。Xco…

Python 热门面试题(七)

Python中如何拷贝对象?浅拷贝和深拷贝的区别是什么? 在Python中,拷贝对象是一个常见的需求,尤其是当你需要修改一个对象但又不想影响原始对象时。Python提供了几种拷贝对象的方法,其中最重要的是浅拷贝(sh…

昇思25天学习打卡营第21天|RNN实现情感分类

Mindspore框架循环神经网络RNN模型实现情感分类 Mindspore框架循环神经网络RNN模型实现情感分类|(一)数据集准备 Mindspore框架循环神经网络RNN模型实现情感分类|(二)RNN模型 Mindspore框架循环神经网络RNN模型实现情感分类|&…

C++ versions less than C++14/11 are not supported.报错

点个关注吧! 安装TFHE遇见以下报错 TFHE报错C versions less than C14 are not supported. 1.进入TFHE文件夹 2.找到并进入src文件夹 3.打开CMAKELists.txt 4.在文件中添加以下两条命令 set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON)

PostgreSQL 中如何解决因大量并发删除和插入操作导致的索引抖动?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中如何解决因大量并发删除和插入操作导致的索引抖动一、理解索引抖动二、索引抖动的影响三…

js之深入对象和内置构造函数

这里写目录标题 一级目录二级目录三级目录 一、深入对象1.创建对象三种方式2.构造函数3.实例成员4.静态成员 二、内置构造函数1.Object2.Array3.String4.Number 一级目录 二级目录 三级目录 一、深入对象 1.创建对象三种方式 利用对象字面量创建对象 利用new Object创建对…

obj导入u3d

导入OBJ模型到‌Unity步骤 将无人机/船扫描的模型,生成obj格式; 将文件直接拷贝到asset文件夹,为了后期方便管理,最好起个名字 通过模型直接拖拽到场景即可;坐标系可能不一样,需要特殊处理