Linux编辑器——vim的使用

2023-11-20


前言:Linux上的编辑器有很多,比如nano,vi,vim等。nano是最简单的编辑器,vim编辑器常用于写代码,因为vim的功能强大,写代码快捷方便,其可以主动的用字体颜色辨别语法的正确性。vim用于编写代码,就是一个编辑器。接下来会讲如何使用vim来进行编辑代码,以及vim的一些操作。我下面的图演示都是我自己配好的vim,
大家一上来的vim应该是下图的样子:
在这里插入图片描述
不过莫慌,基本操作都一样,就是配置的太少,在本文中有vim的配置,大家可以跟着操作。或者先看下面的vim配置,自己先配置好vim。


1. vim的三种模式

vim有三种模式:命令模式,插入模式,命令行模式。
以vim一个ly.c,为例子。
在这里插入图片描述
(1)命令模式
一进入vim便是命令模式
在这里插入图片描述
命令行有normal标识。
在这里插入图片描述
你会发现,在命令模式下,你想在编辑器上写东西,是写不上去的。在命令模式下,我们可以更加便捷的去操作一些内容,但是不能往里面输入东西。
命令模式功能:

光标移动
搜索与替换
删除字符,删除整列,
复制整列,黏贴整列

(2)插入模式
在插入模式里,我们可以在编辑器里随意的写入内容,当然也可以控制光标去删除,查找东西,但是比较慢,在命令模式下,有一系列的快捷键方便操作(下面会讲)。
在命令模式下,按i,o,a都可以进入到插入模式中,并且在插入模式下按esc也可以回到命令模式。
一,在命令模式下,进入插入模式,按i即可
进入插入模式,写了一段简单代码。
在这里插入图片描述
命令行中有insert标识。
在这里插入图片描述
插入模式功能:

以插入或者替换来编辑文件内容

(3)命令行模式
想要切换到命令行模式,必须从命令模式切换,插入模式也必须从命令模式切入。这就是乌龟的屁股,(龟腚)规定。进入命令模式后,按ctrl + :,就进入了命令行模式。
在这里插入图片描述
命令行处有command标识,
在这里插入图片描述
在冒号后输入w是保存,输入q是退出。也可以输入wq,即为保存并退出。在其之后加上,是强制的意思。
命令行模式功能:

读取/存储文件其它额外功能

(4)总结
模式的切换必须从命令模式开始,无脑按esc就能回到命令模式。
在这里插入图片描述

2. vim的基本操作

了解vim的三种模式后,我们来进行vim的一些操作,很多大佬都用vim来开发,为什么用vim,必定有它的妙处,学习接下来的操作,可以让我们更加熟练的掌握vim。
(1)命令模式下的操作
一,光标移动

  • 移动一个字符
    h(←)向左移动。j(⬇)向下移动。k(↑)向上移动。l(→)向右移动。
  • 按单词移动
    w/b 向后/向前以单词为单位移动。
  • 回到一行的尾部,头部
    shift+^回到头部,shift+$回到尾部。
  • 以行为单位移动
    gg回到开头行
    n+gg(n+shift+g)回到第n行
    shift+g 回到最后一行

二,查找和替换

  • 查找一个字符串(名称)
    /名称 或者?名称,都会高亮的形式标出找到的名称
  • 替换字符串
    r:替换一个字符,也可以用nr可以替换n个字符。
    ctrl+r进入替换模式,可以替换多个字符。
  • 快速切换大小写
    shift+~,可以完成切换大小写的操作。

三,删除,复制,粘贴,剪切

  • 删除一个字符,或者多个
    x向后删除一个字符,X向前删除一个字符,删除n个就是nx或者nX。
  • 删除一行或者n行
    dd删除当前行,ndd删除n行
  • 复制一行以及n行
    yy复制当前行,nyy复制当前行以及之下的n-1行
  • 黏贴
    p黏贴一次,np黏贴n次,p为在光标后一行黏贴。P为在光标前一行黏贴,其余和p一样。
  • 剪切
    剪切是删除和黏贴集合,也就是说:在x/X或者dd后,按下p/P就会黏贴删除的内容。这就是剪切。
    (2)插入模式的操作
    上文说过从命令模式进入插入模式常按i,a,o;
    下图是具体的解释,标明了其中的区别。
    在这里插入图片描述
    (3)命令行模式
    命令行模式可以有很多操作,比如保存内容,退出vim,设置行号,多屏工作等
  • 设置行号/取消行号
    输入set nu设置行号,set nonu取消行号
  • 保存文件
    输入w
  • 退出vim
    输入q
  • 强制性操作
    输入!
  • 多屏操作
    vs +文件名,这样就又开了个窗口来操作,如果不加文件名,那么默认为此文件的复印件。
    按住cltrl+w+w可以完成窗口间光标的切换,光标在哪,哪里就是工作平台,并且也只能退出光标所在的平台。

3. vim的配置

每个用户都有自己的vim配置,并且设置后的vim也只会影响自己,即使是root配置的vim也是只影响自己。
配置自己的vim其实不容易,这里提供两种方法,一种是自己配置;另一种是在网上安装现成的。
(1)自己配置
一,来到用户目录创建 .vimrc文件
在这里插入图片描述
在这里插入图片描述
二,vim进入 .vimrc文件
在这里插入图片描述
在 .vimrc 中输入自己想配置的东西,比如上面写的set nu就是配置行号。想配置什么在里面写入就好了,具体大家自己在网上查阅。

(2)从网上下载
目前这个只支持Centos7 x86_64版本。
在shell中直接输入:
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
运行时需要root密码,输入成功后,会开始下载。
在这里插入图片描述
大概等个一两分钟,
在这里插入图片描述
可以输入source ~/.bashrc执行或者重启,vim配置就成功了。

卸载这个vim配置
输入bash ~/.VimForCpp/uninstall.sh即可。

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

Linux编辑器——vim的使用 的相关文章

  • 有关 Linux 内存类型的问题

    关于Linux内存我有以下问题 我知道活动内存是最常访问的内存部分 但是有人可以解释一下 linux 如何考虑将内存位置用于活动内存或非活动内存 主动存储器由哪些部分组成 磁盘 文件缓存是否被视为活动内存的一部分 有什么区别Buffers
  • 使用 vim 重构目录中的类/方法/字符串的有效方法

    到目前为止 我一直在使用查找和替换操作手动重构代码 s stringiwanttoreplace newstring g in vim 但这是一个缓慢而费力的过程 如果我有的话字符串我想更换在特定目录内的许多文件中 我当前 典型的缓慢而费力
  • 如何删除树莓派的相机预览

    我在我的 raspberryPi 上安装了 SimpleCv 并安装了用于使用相机板的驱动程序 uv4l 驱动程序 现在我想使用它 当我在 simpleCV shell Camera 0 getImage save foo jpg 上键入时
  • 为什么使用Python的os模块方法而不是直接执行shell命令?

    我试图了解使用Python的库函数执行特定于操作系统的任务 例如创建文件 目录 更改文件属性等 背后的动机是什么 而不是仅仅通过执行这些命令os system or subprocess call 例如 我为什么要使用os chmod而不是
  • 我在哪里可以学习如何使 C++ 程序与操作系统 (Linux) 交互

    我是一个 C 初学者 我想创建与操作系统交互的小程序 使用 Kubuntu Linux 到目前为止 我还没有找到任何教程或手册来让 C 与操作系统交互 在 PHP 中 我可以使用命令 exec 或反引号运算符来启动通常在控制台中执行的命令
  • 如何使用libaudit?

    我试图了解如何使用 libaudit 我想接收有关使用 C C 的用户操作的事件 我不明白如何设置规则 以及如何获取有关用户操作的信息 例如 我想获取用户创建目录时的信息 int audit fd audit open struct aud
  • 使用 sed 将 old-link-url 替换为 new-link-url

    我正在 bash 中编写一个脚本 将 old link url 替换为 new link url 我的问题是 sed 由于斜杠而无法替换 url 如果我只输入一些文字就可以了 my code sed e s old link new lin
  • 变量作为 bash 数组索引?

    bin bash set x array counter 0 array value 1 array 0 0 0 for number in array do array array counter array value array co
  • 如何阅读shell命令的源代码?

    我想阅读编写linux命令的实际源代码 我已经获得了一些使用它们的经验 现在我认为是时候与我的机器进行更深层次的交互了 我在这里找到了一些命令http directory fsf org wiki GNU http directory fs
  • 通过 SSH 将变量传递给远程脚本

    我正在通过 SSH 从本地服务器在远程服务器上运行脚本 首先使用 SCP 复制该脚本 然后在传递一些参数时调用该脚本 如下所示 scp path to script server example org another path ssh s
  • 编写多个mysql脚本

    是否可以在复合脚本中包含其他 mysql 脚本 理想情况下 我不想为包含的脚本创建存储过程 对于较大的项目 我想分层维护几个较小的脚本 然后根据需要组合它们 但现在 我很乐意学习如何包含其他脚本 source是一个内置命令 您可以在 MyS
  • Windows 与 Linux 文本文件读取

    问题是 我最近从 Windows 切换到 Ubuntu 我的一些用于分析数据文件的 python 脚本给了我错误 我不确定如何正确解决 我当前仪器的数据文件输出如下 Header 有关仪器等的各种信息 Data 状态 代码 温度 字段等 0
  • 为什么 ld 无法从 /etc/ld.so.conf 中的路径找到库?

    我想添加 opt vertica lib64进入系统库路径 所以我执行以下步骤 1 添加 opt vertica lib64 into etc ld so conf 然后运行ldconfig 2 检查 bash ldconfig p gre
  • 我应该使用哪个 Linux 发行版作为 Xen 主机? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我为家庭办公室订购了一台服务器 我想用 Xen 对其进行分区 我认为这将使事情保持干净并且更容易维护 我将运行 MySQL PostgreSQL
  • 如何通过代理将套接字连接到http服务器?

    最近 我使用 C 语言编写了一个程序 用于连接到本地运行的 HTTP 服务器 从而向该服务器发出请求 这对我来说效果很好 之后 我尝试使用相同的代码连接到网络上的另一台服务器 例如 www google com 但我无法连接并从网络中的代理
  • git 提交消息的 vim 语法高亮显示 - 自定义 commentchar

    如上所述在这个答案中 https stackoverflow com a 14931661 835945 从 Git 1 8 2 开始你可以使用core commentchar配置值将提交消息注释更改为默认值以外的其他内容 哈希标记或哈希符
  • 具有少量父设备属性的 udev 规则

    我需要复杂且通用的udev规则来确定插入任何 USB 集线器的特定端口的 USB 设备 所以 我必须结合设备树不同层的父属性 我有这个 udevadm info query all name dev ttyUSB0 attribute wa
  • 为 Linux 安装 R 包时出错

    我试图在 R 3 3 上安装一个名为 rgeos 的包 但是当我输入 install packages rgeos 但它返回给我以下错误 其他包也会发生同样的情况 但不是所有包 gt installing source package rg
  • 如何从linux命令行运行.exe可执行文件? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 Windows 中有一个 abc exe 可执行文件 我可以使用 DOS 命令提示来执行此应用程序 并为其提供一些运行时变量 我想从
  • Scrapy FakeUserAgentError:获取浏览器时发生错误

    我使用 Scrapy FakeUserAgent 并在我的 Linux 服务器上不断收到此错误 Traceback most recent call last File usr local lib64 python2 7 site pack

随机推荐

  • 8.全配置自动生成模块前后端

    文章目录 学习资料 配置式开发全新的模块 快速实现 字典管理 代码生成器详细属性设置 全智能模块开发 查询调整 多表连接 药品模块 生产厂家下拉框 学习资料 https www bilibili com video BV13g411Y7GS
  • PageAbility基本概念

    作者 韩茹 公司 程序咖 北京 科技有限公司 鸿蒙巴士专栏作家 一 Page与AbilitySlice Page Page模板 以下简称 Page 是FA唯一支持的模板 用于提供与用户交互的能力 一个Page可以由一个或多个AbilityS
  • QtWebassembly中文显示支持

    Qt Webassembly中文显示支持 由于webassembly是运行在wasm虚拟环境中的 因此是无法直接访问当前系统字体 如果需要提供中文或其它字体支持需要将字体文件作为资源与应用一起编译打包到wasm中 并在应用中主动加载字体资源
  • HTML5学习(三):布局标签、列表、超链接和id

    1 布局标签 header表示网页的头部 页眉 main表示网页的主体部分 一个页面中只会有一个main footer表示网页的底部 页脚 nav表示网页中的导航 aside和主体相关的其他内容 侧边栏 article表示一个独立的文章 s
  • Linux系统上Hadoop的配置

    目录 1 免密登录 2 设置java安装的根目录 3 hadoop参数配置 hadoop地址配置 1 免密登录 cd ssh ls ssh keygen t rsa P f ssh id rsa ls 多了两个文件 id rsa id rs
  • 杭电ACM 1004题

    原题大概意思就是统计输入字符串中 重复的最大个数 import java util Scanner public class Main public static void main String args Scanner sc new S
  • C++ Primer 第五版 电子书(英文)pdf下载

    C Primer 第五版 电子书 英文 pdf下载下载链接 https pan baidu com s 13BQ93O0g8QaNq4ultcxhKA 提取码获取方式 关注下面微信公众号 回复关键字 1169
  • Tensorflow 机器翻译NMT笔记 1 快速上手

    开始 首先 这篇博客基本基于 https github com tensorflow nmt 的内容来的 作为个人学习的笔记 也当做一个博客内容分享 顺序和Github上的顺序有一些区别 注意咯 首先 这里讲的是一个基于Seq2Seq实现的
  • Python 正则表达式指南

    文章目录 1 正则表达式基础 1 1 简单介绍 1 2 数量词的贪婪模式与非贪婪模式 1 3 反斜杠的困扰 1 4 匹配模式 2 re模块 2 1 开始使用re 2 2 Match 2 3 Pattern 1 正则表达式基础 1 1 简单介
  • Vue2基础框架(js)

    快捷方式 vba div div
  • IO相关-这一篇全了解

    什么是比特 什么是字节 什么是字符 它们长度是多少 各有什么区别 解 Bit最小的二进制单位 是计算机的操作部分 取值0或者1 Byte是计算机操作数据的最小单位由8位bit组成 取值 128 127 Char是用户的可读写的最小单位 在J
  • 由一个多线程共享Integer类变量问题引起的。。。

    假设并发环境下 业务代码中存在一些统计操作 为了保证线程安全 开发人员往往会对计数值进行加锁 synchronized 值得注意的是 直接对Integer类型进行加锁 似乎并不会达到预期效果 比如下面这段代码 Integer num new
  • java 视频压缩

    原文链接 https blog csdn net SeniorShen article details 113246990 1 引入依赖
  • C++拷贝构造函数的使用:创建类Dog 成员变量name age 。完成该类的定义,该类包含构造函数,拷贝构造函数 析构函数

    创建类Dog 成员变量name age 大家完成该类的定义 该类包含构造函数 拷贝构造函数 析构函数 拷贝构造函数的作用 拷贝构造函数作用就是利用该类的一个对象是初始化另一个该类的对象 换句话说就是 拷贝构造函数的作用 通过一个对象对该类的
  • 使用ADB命令来测试Android手机App的耗电量

    1 使用WiFi连接手机 先使用USB数据线连接手机和电脑 手机和电脑连接同一个WiFi 启动端口服务 adb tcpip 5555 5555为端口号 可以自由指定 打印 restarting in TCP mode port 5555 表
  • 如何用Stata完成(shui)一篇经济学论文(十一):分组和去重

    文章目录 分组 去重 不出意外的话 这应该是stata有关数据处理的最后一篇 emmm 其实我一开始只打算写数据处理部分的stata教程 因为我觉得对于我来说 数据处理才是最头疼的部分 不过关于后面回归 还是有些东西想跟大家分享一下 开始挖
  • Halcon直线检测

    1 Halcon最常用的直线检测算子 add metrology object line measure 利用Halcon封装好的模型不仅可以检测直线 还可以检测圆 椭圆 矩形等 下面介绍下其余的直线检测的算子 需要配合 skeleton
  • CentOS7安装postgresql

    目录 1 安装postgresql 2 postgresql基本使用 常用启停命令 常用配置文件 常用postgresql命令 官网地址 https www postgresql org 1 安装postgresql 1 1 进入官网 点击
  • 两点。。。等来金蝶中间件的面试通知

    晚上笔试 说是大约一点通知 等到十二点 困了 上床 睡不着啊 1点半翻起来 打开手机 没有 打开Gmail 没有 于是抽了支烟 等到两点多一点 手机响了 接到面试通知 下午一点 石头终于落地 因为上午还有一场网易游戏的笔试 担心冲突 还好
  • Linux编辑器——vim的使用

    文章目录 1 vim的三种模式 2 vim的基本操作 3 vim的配置 前言 Linux上的编辑器有很多 比如nano vi vim等 nano是最简单的编辑器 vim编辑器常用于写代码 因为vim的功能强大 写代码快捷方便 其可以主动的用