常用vim命令行-linux008

Vim 是一款功能强大的文本编辑器,广泛应用于编程、配置文件编辑以及日常文本处理。Vim 在其命令行模式下提供了丰富的操作命令,这些命令能够大幅提升编辑效率。以下是 Vim 中常用的命令及操作的总结,覆盖了 Vim 中的基本操作、查找、替换、文件操作、窗口管理、宏操作等多个方面。

一、Vim 模式

Vim 的操作方式基于多种模式,最常见的包括:

  • 普通模式(Normal Mode):用于浏览、删除、复制和粘贴等操作。

  • 插入模式(Insert Mode):用于文本的输入。

  • 命令模式(Command-line Mode):用于输入执行命令,如保存、退出等。

  • 可视模式(Visual Mode):用于文本选择和操作。

二、基本操作命令

1. 启动和退出

  • 启动 Vim:vim filenamevi filename

  • 退出 Vim:

    • :q:退出当前文件(如果文件已保存)。

    • :q!:强制退出当前文件,不保存更改。

    • :wqZZ:保存并退出。

    • :x:保存并退出(类似 :wq)。

    • :w filename:保存文件为新名称。

2. 模式切换

  • 从普通模式切换到插入模式:i(当前光标位置),I(行首),a(光标后),A(行尾)。

  • 从插入模式切换到普通模式:Esc

  • 从普通模式切换到可视模式:v(字符选择),V(行选择),Ctrl+v(块选择)。

3. 移动光标

1. 按字符、单词、行和页面移动
  • 左、右、上、下移动:hjkl

  • 移动单词:w(跳到下一个单词的开头),b(跳到上一个单词的开头),e(跳到单词的结尾)。

  • 移动到行首或行尾:0(行首),$(行尾)。

  • 移动到特定行:<number>G(跳转到第 number 行),gg(跳到文件开头),G(跳到文件末尾)。

2. 页面操作
  • 向上/向下滚动页面:Ctrl+u(向上),Ctrl+d(向下)。

  • 跳转到屏幕顶部/底部:H(顶部),M(中部),L(底部)。

4. 文本插入和删除

  • 删除单个字符:x(删除光标处字符)。

  • 删除单词:dw(删除光标所在单词),daw(删除光标所在单词及前后的空格)。

  • 删除行:dd(删除当前行)。

  • 删除直到行尾:D(删除光标到行尾的内容)。

  • 删除到指定字符:d<char>(删除到指定字符 <char> 为止)。

  • 删除到指定位置:d<number>G(删除到指定行)。

5. 剪切、复制和粘贴

  • 剪切:d + 移动命令(例如 dwdd)。

  • 复制:y(复制) + 移动命令(例如 ywyy)。

  • 粘贴:p(光标后粘贴),P(光标前粘贴)。

6. 撤销与重做

  • 撤销:u(撤销上一个操作),Ctrl+r(重做)。

三、查找和替换

1. 查找

  • 查找字符串:/pattern(查找下一个匹配 pattern 的字符串),?pattern(向上查找)。

  • 查找下一个:n(查找下一个匹配的字符串)。

  • 查找上一个:N(查找上一个匹配的字符串)。

2. 替换

  • 替换当前行的第一个匹配项::s/old/new/

  • 替换当前行所有匹配项::s/old/new/g

  • 替换全文件范围::%s/old/new/g

  • 在替换时确认::%s/old/new/gcc 表示每次替换时询问确认)。

3. 高级查找和替换

  • 使用正则表达式:/pattern:s/old/new/g 支持基本的正则表达式,可以使用如 \d\w 等。

  • 查找并替换区间::'<,'>s/old/new/g(区间替换)。

四、文件操作

1. 打开和切换文件

  • 打开新文件::e filename

  • 保存文件::w

  • 保存并退出::wq

  • 切换到最近编辑的文件::e #

  • 切换文件标签::bnext(下一个文件),:bprev(上一个文件)。

2. 文件浏览

  • 查看文件信息::ls(列出缓冲区中的所有文件),:file(显示当前文件的路径和状态)。

  • 切换文件::b <buffer number>(切换到指定编号的缓冲区)。

五、窗口和标签页管理

1. 分屏显示

  • 垂直分屏::vsp filename(垂直分屏打开文件)。

  • 水平分屏::sp filename(水平分屏打开文件)。

  • 切换分屏:Ctrl+w + h(左侧分屏),Ctrl+w + j(下侧分屏),Ctrl+w + k(上侧分屏),Ctrl+w + l(右侧分屏)。

  • 关闭分屏::q(关闭当前分屏)。

2. 标签页管理

  • 新建标签页::tabnew

  • 切换标签页::tabnext(下一个标签页),:tabprev(上一个标签页)。

  • 关闭标签页::tabclose

六、宏操作

1. 录制宏

  • 开始录制宏:q<char>(开始录制到寄存器 char)。

  • 执行宏:@char(执行寄存器 char 中的宏命令)。

  • 以指定次数重复执行宏:<number>@char

2. 退出宏录制

  • 停止录制宏:q(停止录制并退出)。

七、文本操作和格式化

1. 缩进

  • 增加缩进:>>(增加当前行缩进),3>>(增加接下来的三行缩进)。

  • 减少缩进:<<(减少当前行缩进),3<<(减少接下来的三行缩进)。

2. 复制与移动

  • 复制到系统剪贴板:"+y(复制),"+p(粘贴)。

  • 剪切到系统剪贴板:"+d(剪切)。

  • 从剪贴板粘贴:"+p(粘贴内容)。

3. 自动缩进

  • 启用自动缩进::set autoindent:set smartindent:set tabstop=4(设置制表符宽度为4)。

  • 禁用自动缩进::set noautoindent

八、Vim 高级操作

1. 跳转和标记

  • 设置标记:m<char>(设置标记 char,例如 ma)。

  • 跳转到标记:'<char>(跳转到标记位置)。

2. 自定义快捷键

  • 映射快捷键::map(映射一个快捷键),nmap(普通模式映射),imap(插入模式映射)。

  • 示例::nmap <F5> :w<CR>(将 F5 键映射为保存文件)。

九、Vim 插件管理

1. 使用插件管理器

  • 使用 Vundle 安装插件:

    • 安装插件管理器:git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

    • 配置插件:在 .vimrc 文件中添加插件,例如:Plugin 'tpope/vim-fugitive'

    • 安装插件::PluginInstall

2. 使用其他插件管理器

  • vim-plugPlug 'junegunn/fzf.vim'

  • 安装插件:PlugInstall

总结

Vim 提供了非常丰富的命令和操作方式,掌握这些命令可以极大地提高编辑效率。对于日常的编辑任务,了解基本的移动、复制、粘贴、查找和替换命令是必不可少的;而对于高级用户,掌握窗口管理、宏录制以及插件管理等功能,将能更好地发挥 Vim 的强大功能。

当然也可传输到本地用typora或者其他txt工具

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

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

相关文章

xshell连接虚拟机,更换网络模式:NAT->桥接模式

NAT模式&#xff1a;虚拟机通过宿主机的网络访问外网。优点在于不需要手动配置IP地址和子网掩码&#xff0c;只要宿主机能够访问网络&#xff0c;虚拟机也能够访问。对外部网络而言&#xff0c;它看到的是宿主机的IP地址&#xff0c;而不是虚拟机的IP。但是&#xff0c;宿主机可…

【Spring Boot集成Shiro指南】

Spring Boot集成Shiro指南 一、添加Maven依赖 首先&#xff0c;需要在Spring Boot项目的pom.xml文件中添加Shiro相关的依赖。例如&#xff1a; <dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><ve…

SpringBoot使用Nacos进行application.yml配置管理

Nacos是阿里巴巴开源的一个微服务配置管理和服务发现的解决方案。它提供了动态服务发现、配置管理和 服务管理平台。Nacos的核心功能包括服务发现、配置管理和动态服务管理&#xff0c;使得微服务架构下的服务治理 变得简单高效。 Nacos的设计基于服务注册与发现、配置管理、动…

Electron-Vite 项目搭建(Vue)

前提条件 Node.js: 确保已安装 Node.js 版本 18 或更高版本 (推荐使用最新稳定版)。Vite: 确保 Vite 版本为 4.0 或以上。包管理工具: 推荐使用 pnpm&#xff0c;但也可以使用 npm 或 yarn。 安装 Electron-Vite 首先&#xff0c;在项目中安装 electron-vite 作为开发依赖&a…

STM32F103单片机HAL库串口通信卡死问题解决方法

在上篇文章 STM32F103单片机使用STM32CubeMX创建IAR串口工程 中分享了使用cubeMX直接生成串口代码的方法&#xff0c;在测试的过程中无意间发现&#xff0c;串口会出现卡死的问题。 当串口一次性发送十几个数据的时候&#xff0c;串口感觉像卡死了一样&#xff0c;不再接收数据…

【Neo4J】neo4j docker容器下的备份与恢复

文章目录 一. 官网说明1. 操作说明2. 注意事项 二. docker 容器化操作1. 导出&#xff08;备份&#xff09;停止容器执行备份 2. 导入&#xff08;恢复&#xff09;停止容器(如果未停止)执行导入 3. 启动容器 一. 官网说明 https://neo4j.com/docs/operations-manual/current/…

selenium自动爬虫工具

一、介绍selenium爬虫工具 selenium 是一个自动化测试工具&#xff0c;可以用来进行 web 自动化测试、爬虫 selenium 本质是通过驱动浏览器&#xff0c;完全模拟浏览器的操作&#xff0c;比如跳转、输入、点击、下拉等&#xff0c;来拿到网页渲染之后的结果&#xff0c;可支持…

Unity开发数字孪生项目

前言&#xff1a;记录下自己用Unity开发数字孪生项目&#xff0c;所用到的知识点、功能点以及对项目认知总结&#xff0c;当然还有开发过程中所遇到的坑。此篇博客也是会随时进行更新。 &#x1f60a;屏幕前看到此片文章的开发者们在此类项目开发过程中少走些弯路&#xff0c;希…

node利用路由搭建web实例

npm init npm i express body-parser cookie-parser 封装web实例 搭建路由 导出web 应用实例注册

量化交易系统开发-实时行情自动化交易-8.25.真格(澎博财经旗下)平台

19年创业做过一年的量化交易但没有成功&#xff0c;作为交易系统的开发人员积累了一些经验&#xff0c;最近想重新研究交易系统&#xff0c;一边整理一边写出来一些思考供大家参考&#xff0c;也希望跟做量化的朋友有更多的交流和合作。 接下来会对于真格&#xff08;澎博财经…

QT JSON文件解析

参考博客 https://blog.csdn.net/cpp_learner/article/details/118421096 1 打开文件&#xff0c;读取全部内容 QFile file("../Json/js.json"); if (!file.open(QFile::ReadOnly | QFile::Text)) {qDebug() << "cant open error!";return; }// 读…

面试常见-Java 原生实现常见数据结构

Java 原生实现常见数据结构 文章目录 Java 原生实现常见数据结构一、引言二、数组&#xff08;Array&#xff09;&#xff08;一&#xff09;概念&#xff08;二&#xff09;代码实现 三、链表&#xff08;Linked List&#xff09;&#xff08;一&#xff09;概念&#xff08;二…

1. 机器学习基本知识(5)——练习题(参考答案)

20.&#x1f517;本章代码笔记&#x1f4d3;链接&#xff08;需要&#x1fa9c;&#xff09;&#xff1a;&#xff08;01_the_machine_learning_landscape.ipynb - Colab (google.com)&#xff09; 如果你不想通过上面的官方网址下载本章的笔记&#xff0c;还可以在本篇博文的…

通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应, 请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法, 参数不同时,方法能重载吗?

Dao 接口 即 Mapper 接口 。接口 的 全 限 名 &#xff0c;就是 映 射 文 件 中 的 namespace 的值 &#xff1b; 接口 的 方 法 名 &#xff0c; 就 是 映 射 文 件 中 Mapper 的 Statement 的 id 值&#xff1b; 接 口 方 法 内 的 参数 &#xff0c; 就 是 传 递 给 sql 的参…

硬件设计 | Altium Designer软件PCB规则设置

基于Altium Designer&#xff08;24.9.1&#xff09;版本 嘉立创PCB工艺加工能力范围说明-嘉立创PCB打样专业工厂-线路板打样 规则参考-嘉立创 注意事项 1.每次设置完规则参数都要点击应用保存 2.每次创建PCB&#xff0c;都要设置好参数 3.可以设置默认规则&#xff0c;将…

WebDAV服务不能上传大文件,文件超过50M报错[0x800700DF]怎么办?

这个问题需要分别从服务端和客户端解决。 1.Windows客户端 解除50M文件限制&#xff0c;Windows访问Webdav服务时&#xff0c;大于50M文件提示错误[错误:0x800700DF] 部署了webdav&#xff0c;Windows10映射网络磁盘&#xff0c;传输文件超过大约50MB的文件会弹出“0x800700…

安全基础学习-keil调试汇编代码

初始目的是为了通过汇编编写CRC功能。 但是基础为0&#xff0c;所以目前从搭建工程开始记录。 大佬绕路。 &#xff08;一&#xff09;创建项目 1. 新建项目 打开 Keil uVision。选择 Project -> New uVision Project 创建一个新项目。选择你的目标设备&#xff08;如 AR…

安装qt 5.15.2笔记

撰文是2024年12月 最终实现了 1、用梯子下载了离线包5.14.2&#xff0c;最后没用 2、用内地镜像在线安装5.15.2&#xff0c;3分钟装完 正文开始&#xff0c;qt官方简称官方。 官方包官方自5.15.X起&#xff0c;不再提供的exe/run安装包https://download.qt.io/archive/qt/ …

Redis Java 集成到 Spring Boot

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;Redis &#x1f4da;本系列文章为个人学习笔…

【Syncfusion系列】Diagram 杂谈 第三篇 序列化和反序列化

目录 序列化保存C# 代码示例&#xff0c; 方式1 &#xff1a;C# 代码示例&#xff0c; 方式2 &#xff1a; 反序列化加载C# 代码示例, 方式1&#xff1a;C# 代码示例, 方式2&#xff1a; **如何序列化自定义属性**序列化和反序列化都存在的一个问题解决方式 图表是否已修改&…