Linux -Vim

devtools/2024/12/27 16:15:20/

博客主页:【夜泉_ly】
本文专栏:【Linux】
欢迎点赞👍收藏⭐关注❤️

在这里插入图片描述

文章目录

  • 📚 前言
  • ⚙️ 基本模式
  • 📝 命令模式常见操作
  • 📄 底行模式常见操作
  • 🛠️ 自定义 Vim 配置
  • ✨ 补充点

📚 前言

本文主要内容:
在这里插入图片描述

Vim是一个文本编辑器,
比nano的功能多了亿点,但也比nano麻烦亿点。

首先,Vim的模式特别多,常见的就有三种:命令模式、插入模式、底行模式。
其次,Vim的相关指令也特别多,常见的有几十条。

本文将挑选一些有代表性的内容,以方便初学者快速入门。

⚙️ 基本模式

首先,来看看刚刚说的三个常见模式:

  • 命令模式(默认模式):用于输入命令,不直接编辑文本。
  • 插入模式:用于输入和编辑文本。
  • 底行模式:用于输入更复杂的命令,例如保存、退出、搜索等。

下面通过一段具体的操作,
简单的演示一下三种模式:

创建和打开文件
先创建一个 .c 文件,然后 vim test.c
在这里插入图片描述
打开后就是这样的:
在这里插入图片描述
此时,你处于命令模式,也叫默认模式。
在这一模式下,所有的输入都会被视为命令,而非文本输入。
所以现在你输 Hello 之类的并没有什么用,不会在文件中显示。

切换到插入模式
输入 i 进入插入模式:
在这里插入图片描述
接下来可以输入代码:
在这里插入图片描述

保存并退出
想要保存并退出,有很多方法,这里先讲一个:
首先,需要从 插入模式 回退到 命令模式:按键盘左上角的 Esc
此时,屏幕左下角的 -- INSERT -- 不见了:
在这里插入图片描述
然后,需要从 命令模式 进入 底行模式:按 Shift : (其实就是敲冒号)
最后,在底行模式输入 wq ,这代表你要保存退出:
在这里插入图片描述
具体而言:

  • w 是保存。
  • q 是退出。
  • wq 则是同时保存并退出。

退回命令模式
如果进入了底行模式,想要退回命令模式,怎么办?
还是按键盘左上角的 Esc
在这里插入图片描述
在这里插入图片描述

注意事项
切换模式时,
需避免直接在插入模式与底行模式之间切换。
需要切换时,请先 Esc ,即回到命令模式。

在这里插入图片描述

📝 命令模式常见操作

  • 光标定位
    在这里插入图片描述
    箭头所指的就是光标目前的位置

    • gg 定位光标到整个文本的开始位置
    • shift g 定位光标到文本的末尾
    • n shift g 定位光标到第 n
  • 复制与粘贴

    • (n)y y 复制光标所在行(以及之后的 n-1 行)
    • (n)p 粘贴(n 行)到光标所在行的下一行
    • y y p 复制并粘贴一行
    • y y n p 复制并粘贴 n
    • n1 y y n2 p 复制 n1 行并粘贴 n2
  • 撤销与重做

    • u 撤销
    • Ctrl R 撤销撤销
  • 剪切与删除

    • (n)dd 剪切、删除光标所在行(及后续的 n-1 行)
  • 行内导航

    • shift $ 定位光标到行末
    • shift ^ 定位光标到行首
    • w/b 光标按照单词进行行内 / 跨行移动
    • h 左, j 下, k 上, l
  • 替换与删除字符

    • shift ~快速大小写转换
    • (n)r 替换
    • shift r 进入替换模式, Exc 退出
    • (n)x 删除光标之后的(n个)字符
  • 搜索

    • /内容 在文件中搜索指定内容
    • n 跳转到下一个匹配项
    • N 跳转到上一个匹配项

📄 底行模式常见操作

  • :%s/旧内容/新内容/g 全局替换文件中的内容

  • :w 保存文件

  • :q 退出 Vim

  • :wq:x 保存并退出

  • :w! 强制保存

  • :q! 强制退出

  • :wq! 强制保存并退出

  • :set nu 显示行号

  • :set nonu 去掉行号

  • :! 后可以跟指令,
    可以实现不退出Vim就运行外部的指令,比如 pwd

🛠️ 自定义 Vim 配置

在家目录下,
通过自定义 .vimrc 文件,
可以设置 Vim 的默认行为和外观。

touch .vimrc

在这里插入图片描述

vim .vimrc

打开后输入 set nuset number
在这里插入图片描述
再次使用Vim时就会默认带上行号。

示例 .vimrc 文件
下面是我到处CV的,参考价值不大:

syntax on              " 启用语法高亮
set number             " 显示行号
set autoindent         " 自动缩进
set ignorecase         " 搜索时忽略大小写
set tabstop=4          " 设置 Tab 宽度为4个空格
set shiftwidth=4       " 设置缩进宽度为4个空格
set hlsearch           " 高亮搜索结果
set mouse=a            " 启用鼠标支持
set incsearch          " 增强搜索体验
set confirm            " 提示保存更改
set ruler              " 显示光标位置
set background=dark    " 设置背景为暗色
filetype plugin on     " 启用文件类型插件
set matchtime=5        " 设置匹配括号的时间
set encoding=utf-8     " 设置编码为UTF-8
set langmenu=zh_CN.UTF-8 " 设置语言菜单为中文
set autowrite          " 自动写入
set autoread           " 自动读取文件变化

✨ 补充点

  • 多文件编辑

    vim code1.c code2.c
    

    或在 Vim 中打开 code1.c 后,
    通过底行模式使用 :vs code2.c
    在这里插入图片描述
    Ctrl ww 切换光标所在文件

  • 批量注释(修改):
    命令模式 Ctrl V
    在这里插入图片描述

    h \ j \ k \ l选区

    在这里插入图片描述

    Shift I 切换模式:
    在这里插入图片描述

    双斜杠注释:
    在这里插入图片描述
    最后按 Esc
    在这里插入图片描述

  • 取消注释(批量删除):
    选区后按D:
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述


希望本篇文章对你有所帮助!并激发你进一步探索编程的兴趣!
本人仅是个C语言初学者,如果你有任何疑问或建议,欢迎随时留言讨论!让我们一起学习,共同进步!


http://www.ppmy.cn/devtools/145865.html

相关文章

AI无人直播详解

AI无人直播是一种新兴的直播模式,它利用人工智能技术实现直播内容的自动生成、播放和互动。以下是对AI无人直播的详细介绍: ### 一、定义与原理 AI无人直播,顾名思义,就是在没有真人主播实时参与的情况下,通过预先设…

WPF系列四:图形控件Rectangle

简介 通过Rectangle空间绘制一个矩形,并通过设置其 Width 和 Height 属性来定义其尺寸。为了填充矩形的内部,使用 Fill 属性;若需要为矩形添加边框,则可以通过设置 Stroke 和 StrokeThickness 属性来实现。 此外,如果…

绝美的数据处理图-三坐标轴-散点图-堆叠图-数据可视化图

clc clear close all %% 读取数据 load(MyColor.mat) %读取颜色包for iloop 1:25 %提取工作表数据data0(iloop) {readtable(data.xlsx,sheet,iloop)}; end%% 解析数据 countzeros(23,14); for iloop 1:25index(iloop) { cell2mat(table2array(data0{1,iloop}(1,1)))};data(i…

关于 K8s 的一些基础概念整理-补充【k8s系列之二】

〇、前言 本文继续整理下 K8s 的一些基础概念,作为前一篇概念汇总的补充。 前一篇博文链接:关于 K8s 的一些基础概念整理【k8s系列之一】_集群 master节点 控制节点 宿主机-CSDN博客 一、详情 1.1 Label Label 在 k8s 中是一个非常核心的概念&#xf…

基于微信小程序的在线选课系统springboot+论文源码调试讲解

第2章 开发环境与技术 基于web的在线选课系统的编码实现需要搭建一定的环境和使用相应的技术,接下来的内容就是对基于web的在线选课系统用到的技术和工具进行介绍。 2.1 MYSQL数据库 本课题所开发的应用程序在数据操作方面是不可预知的,是经常变动的&a…

面向微服务的Spring Cloud Gateway的集成解决方案:用户登录认证与访问控制

🎯导读:本文档详细描述了一个基于Spring Cloud Gateway的微服务网关及Admin服务的实现。网关通过定义路由规则,利用负载均衡将请求转发至不同的后端服务,并集成了Token验证过滤器以确保API的安全访问,同时支持白名单路…

神经网络、深度学习、卷积神经网络

好的!我会尽量详细且易懂地为你解释这些概念,并在最后用简单直白的语言总结一下。 1. 神经网络思想 神经网络是灵感来自于生物大脑神经元的工作原理,是一种模仿人类大脑处理信息的方式来设计的数学模型。我们的大脑由亿万个神经元组成&…

云原生相关的 Go 语言工程师技术路线(含博客网址导航)

要成为一名云原生相关的 Go 语言工程师,需要在 Go 语言、云原生技术栈以及相关的开发和运维工具上建立扎实的基础。下面是一个前字节员工总结的技术路线规划: 1. 掌握 Go 语言基础 深入理解 Go 语言:你需要熟练掌握 Go 的语法、数据结构、并…