linux中vim常用命令大全详细讲解

news2024/9/21 4:31:50

在这里插## 标题入图片描述

大家好,我是程序员小羊!

前言:

Vim 是 Linux 系统中功能强大的文本编辑器,广泛用于代码编辑和配置文件的编辑。以下是 Vim 常用命令的详细讲解,包括基本操作、文本编辑、查找与替换、窗口操作等。

一、Vim 基本操作

1. 启动和退出 Vim
  • 启动 Vim:

    vim filename
    

    如果 filename 不存在,Vim 会新建一个文件。

  • 退出 Vim:

    • 正常退出并保存::wqZZ
    • 仅退出(不保存)::q
    • 强制退出(不保存)::q!
    • 仅保存文件::w
2. 模式切换

Vim 有多种模式,最常用的是以下几种:

  • 正常模式(Normal Mode):Vim 启动时默认的模式,可以执行各种命令,如移动光标、删除文本等。按 Esc 键进入。
  • 插入模式(Insert Mode):可以输入文本。按 i 进入,按 Esc 返回正常模式。
  • 可视模式(Visual Mode):用于选中文本块。按 v 进入,可视模式下可使用方向键选择文本。

常用模式切换命令:

  • i:进入插入模式,在当前光标位置前插入。
  • a:进入插入模式,在当前光标位置后插入。
  • o:在当前行下方打开新行并进入插入模式。
  • v:进入可视模式。
  • V:进入可视行模式(选中整行)。
  • Ctrl + v:进入可视块模式(列选择)。

二、Vim 光标移动命令

1. 基本移动
  • h:向左移动一个字符。
  • l:向右移动一个字符。
  • j:向下移动一行。
  • k:向上移动一行。
2. 行内移动
  • 0:移动到行首。
  • ^:移动到本行第一个非空白字符。
  • $:移动到行尾。
3. 单词移动
  • w:移动到下一个单词的开头。
  • e:移动到当前或下一个单词的末尾。
  • b:移动到上一个单词的开头。
4. 页面移动
  • Ctrl + u:向上滚动半页。
  • Ctrl + d:向下滚动半页。
  • Ctrl + b:向上滚动一整页。
  • Ctrl + f:向下滚动一整页。
  • G:移动到文件末尾。
  • gg:移动到文件开头。
5. 行跳转
  • :n:跳转到第 n 行。
  • nG:跳转到第 n 行。

三、Vim 文本编辑命令

1. 插入和删除
  • i:进入插入模式。
  • a:在当前光标后插入文本。
  • o:在当前行下方新开一行并进入插入模式。
  • dd:删除当前行。
  • D:删除当前光标到行尾的所有内容。
  • x:删除当前光标所在的字符。
  • dw:删除当前光标到单词末尾的内容。
  • u:撤销上一步操作。
  • Ctrl + r:重做上一步撤销的操作。
2. 复制、剪切与粘贴
  • yy:复制当前行。
  • yw:复制一个单词。
  • p:粘贴到光标后。
  • P:粘贴到光标前。
  • dd:剪切当前行。
  • daw:剪切一个单词。
3. 替换与修改
  • r:替换当前字符。
  • R:进入替换模式,从光标开始的字符将被逐个替换,直到退出替换模式为止。
  • cw:修改当前单词(删除当前单词并进入插入模式)。
  • c$:修改从光标位置到行尾的内容。

四、Vim 查找与替换命令

1. 查找
  • /pattern:向下查找 pattern(正则表达式)。
  • ?pattern:向上查找 pattern
  • n:在查找模式下,查找下一个匹配项。
  • N:在查找模式下,查找上一个匹配项。
  • *:查找光标所在单词的下一个匹配项。
  • #:查找光标所在单词的上一个匹配项。
2. 替换
  • :s/old/new:替换当前行的第一个匹配的 oldnew
  • :s/old/new/g:替换当前行的所有 oldnew
  • :%s/old/new/g:替换整个文件中的所有 oldnew
  • :%s/old/new/gc:替换整个文件中的所有 oldnew,每次替换前提示确认。

五、Vim 多窗口与多文件操作

1. 多窗口操作
  • :split:sp:水平分割窗口。
  • :vsplit:vsp:垂直分割窗口。
  • Ctrl + w, w:在分割窗口之间切换。
  • Ctrl + w, h/j/k/l:分别向左、下、上、右切换窗口。
  • :q:关闭当前窗口。
2. 多文件操作
  • :e filename:打开指定文件。
  • :bnext:bn:切换到下一个缓冲区(文件)。
  • :bprev:bp:切换到上一个缓冲区(文件)。
  • :ls:列出所有缓冲区(打开的文件)。
  • :bN:切换到缓冲区 N

六、Vim 配置与插件

1. Vim 配置文件
  • ~/.vimrc 文件:Vim 的配置文件,用户可以在其中添加个性化配置,如设置行号、语法高亮等。

    set number       " 显示行号
    syntax on        " 启用语法高亮
    set tabstop=4    " 设置 tab 键为 4 个空格
    set expandtab    " 用空格替代 tab
    set shiftwidth=4 " 设置自动缩进为 4 个空格
    
2. 常用插件

Vim 提供丰富的插件支持,以下是几款常用的插件:

  • Vundle:插件管理器,用于安装和管理 Vim 插件。
  • NERDTree:目录树插件,方便文件导航。
  • ctrlp.vim:模糊查找文件插件,快速打开文件。
  • vim-airline:状态栏增强插件,提供更多的状态栏信息。
  • YouCompleteMe:代码补全插件,支持多种编程语言。

七、Vim 高级技巧

1. 多行操作
  • 在可视模式下选中多行后,可以对多行进行批量操作,如删除、缩进等。

    Vjjj        " 选中当前行及下面三行
    >          " 增加缩进
    
2. 宏录制与回放
  • q{register} 开始录制宏,将操作录制到 {register}(可以是 a-z 中的一个字符)。
  • q 停止录制宏。
  • {register}@ 回放宏,重复执行录制的操作。
3. 命令行模式
  • : 进入命令行模式,可以执行保存、替换、切换文件等命令。
4. 标签页操作
  • :tabnew 打开新标签页。
  • gt 切换到下一个标签页。
  • gT 切换到上一个标签页。
  • :tabclose 关闭当前标签页。

结尾

Vim 的命令丰富且灵活,掌握其基本命令可以大大提高文本编辑效率。而通过合理的插件配置与高级操作,可以进一步增强 Vim 的功能,使其成为强大的开发工具。建议在实际使用中多加练习,熟悉常用命令,以便更加高效地进行文本和代码编辑。

今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

Epoll 用法

Epoll 监听 EPOLL_CTL_DEL EPOLL_CTL_ADD epoll_event event event.events event.data.fd

初识redis(String,Hash,List,Set,SortedSet)

认识NoSql sql关系型数据库 nosql非关系型数据库 nosql具有非结构化,Key/Value,Document,Draph 无关联的,非sql,BASE(原子性,持久性,一致性,隔离性) 认识r…

盘点4款超好用的电脑数据恢复工具

如今我们的生活和工作越来越离不开电脑,因此电脑里面也储存了我们大量的数据:图片,文档,工作资料等。但是这些重要数据却会因为误删除、病毒攻击、系统崩溃等原因遭到丢失。所以数据恢复软件就变得十分的重要,今天&…

maya无法导出fbx

很多小伙伴使用Maya软件导出fbx格式文件时会提示“无法识别文件类型”,这主要是因为没有开启fbx插件造成的,只要开启fbx插件就能解决这个问题。 在Maya软件的“Modeling”模式下,点击菜单栏的“Windows”,在弹出的下拉框中选择“S…

Altium AD20差分对走线设置方法

Altium AD20差分对走线设置方法 1、在PCB界面右下角点击panels,选择"PCB"选项,则左下角就会出现PCB的窗口选项 2、在PCB窗口内,将上面的下拉菜单选择Differential Pairs Editor选项,然后按下图操作 3、增加差分网络分…

服务器数据恢复—OneFS文件系统下数据被删除的数据恢复案例

服务器数据恢复环境&故障: EMC NAS(Isilon S200),共3个节点,每个节点配置12块STAT硬盘。数据分两部分:一部分数据为vmware虚拟机(WEB服务器),通过NFS协议共享到ESX主…

【数据库】MySQL表的基本查询

关于表的增删查改主要分为CRUD:Create(创建), Retrieve(读取),Update(更新),Delete(删除) 目录 1.Creat(增加内容) 1.1指定列插入 1.2全列插入 1.3多行插入 1.4插入冲突更新 1.5替换 2.R…

Springboot3.x.x使用SpringSecurity6(一文包搞定)

SpringSecurity6 什么是SpringSecurity? Spring Security 是一个强大的、高度可定制的身份验证(Authentication)和访问控制(Authorization)框架。它是 Spring 框架家族的一员,主要用于保护基于 Java 的应用程序&#…

鸿蒙开发有必要学吗

在科技飞速发展的今天,新的技术不断涌现,开发者们也面临着众多选择。其中,鸿蒙开发成为了一个备受关注的话题。那么,鸿蒙开发有必要学吗? 一、鸿蒙系统的崛起 鸿蒙操作系统是华为推出的一款面向全场景的分布式操作系统。它的出现…

CPU飙高排查步骤

1:top指令(查看进程信息) top指令:查看进程运行信息 此处1313占用90多CPU 2:ps指令(查看进程中每个线程信息,锁定问题线程) 查看进程里每个线程的详细占用 ps H -eo pid,tid,%cpu | grep 1313ps H:查看进…

信息学奥赛初赛天天练-83-NOIP2014普及组-基础题2-输入设备、输出设备、操作系统、二进制、整数除法、while、do while循环

1 NOIP 2014 普及组 基础题2 4 以下哪一种设备属于输出设备( ) A 扫描仪 B 键盘 C 鼠标 D 打印机 5 下列对操作系统功能的描述最为完整的是( ) A 负责外设与主机之间的信息交换 B 负责诊断机器的故障 C 控制和管理计算机系统的各种硬件和软件资源的使用 D 将没有程序编译成目…

解决微服务调用失败之 Name or service not known

在微服务启动之后,调用后台接口报错,如下: Name or service not known通过在Eureka控制台查看服务注册情况,发现服务已经注册上来,并且使用了主机名(非Ip)进行了注册。 如下图: 查阅资料得知,…

【时时三省】(C语言基础)指针进阶 例题2

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 第一个arr 数组名相当于首元素地址 因为他没有放到strlen内部 也没有取地址 strlen是找\0 找不到\0就不会停下来 所以它打印的就是随机值 第二个arr0 首元素地址加零还…

谁还不知道用ChatmoneyAI写短剧脚本,真能火

本文由 ChatMoney团队出品 现在大家打开抖音、小红书,琳琅满目,目光所能及的都是各种吸精剧情的小短剧,虽然这些短剧的制作成本低,但是作为编剧的要写脚本,可不认为这么容易啊......... 接下来我给大家推荐一下使用Ch…

2024年全国大学生数学建模竞赛(B题) 建模解析|生产过程中的决策问题|小鹿学长带队指引全代码文章与思路

我是鹿鹿学长,就读于上海交通大学,截至目前已经帮200人完成了建模与思路的构建的处理了~ 本篇文章是鹿鹿学长经过深度思考,独辟蹊径,实现综合建模。独创复杂系统视角,帮助你解决国赛的难关呀。 完整内容可以…

分布式系统漫谈:从一致到共识

0 前言 本文将以**分布式系统的基本组成为出发点,详细探讨分布式系统的发展历程;逐步展开到分布式系统构成的核心要素,分析这些核心要素会对系统造成怎样的影响、以及影响的不同表现形式;最后探讨如何构建基本可用的分布式系统**…

MySQL-35个DQL练手题(难)

第1题 取得每个部门最高薪水的人员名称 第一步:取得每个部门最高薪水 select max(sal) topsal, deptno from emp group by deptno;第二步:将上面第一步的查询结果当做一张临时表t,进行表连接,条件是:t.deptnoe.deptn…

【Python基础】条件控制语句

本文收录于 《Python编程入门》专栏,从零基础开始,分享一些Python编程基础知识,欢迎关注,谢谢! 文章目录 一、前言二、Python 条件控制语句2.1 if语句2.2 if-else语句2.3 if-elif-else语句2.4 if语句的嵌套2.5 match-c…

P3631 [APIO2011] 方格染色

~~~~~ P3631 [APIO2011] 方格染色 ~~~~~ 总题单链接 思路 ~~~~~ 用 1 1 1表示红色, 0 0 0 表示蓝色, c o l [ i ] [ j ] col[i][j] col[i][j] 表示第 i i i 行,第 j j j 列的颜色。发现 i ≥ 2 , j ≥ 2 i\geq 2,j\geq 2 i≥2,j≥2 时&…

机器人领域顶级期刊会议盘点

顶级会议 International Conference on Robotics and Automation (ICRA) IEEE International Conference on Intelligent Robots and Systems (IROS) Robotics: Science and Systems (RSS) IEEE/RSJ International Conference on Human-Robot Interaction (HRI) 顶级期刊 …