vim 的基础使用

目录

  • 一:vim 介绍
  • 二:vim 特点
  • 三:vim 配置
  • 四:vim 使用
    • 1、vim 语法格式
    • 2、vim 普通模式
      • (1)保存退出
      • (2)光标跳转
      • (3)文本删除
      • (4)文本查找
      • (5)撤销操作
      • (6)可视化模式
    • 3、vim 命令模式
      • (1)保存退出
      • (2)set 命令
      • (3)搜索替换
    • 4、vim 编辑模式

一:vim 介绍

vim 是一个跨平台的交互式文本编辑工具,是vi编辑器的增强版,常用于Linux环境中对文本文件的内容进行增删查改;

二:vim 特点

  1. 属于交互式编辑工具,允许用户实时编辑文件内容

  2. 编辑文件时,会将该文件的内容全部加载到内存,在内存中完成修改后再写入

  3. 有三种工作模式,末行模式、命令模式和编辑模式,默认进入的是命令模式;

三:vim 配置

vim 有两种级别的配置文件,分别是用户级配置文件和系统全局配置文件;vim 配置文件中,使用 " 作为注释符号,注释内容不会被执行:

  • 用户级配置文件:只对当前用户生效,一般默认不存在,需要手动创建;

  • 系统级配置文件:针对所有用户生效;

查看配置文件优先级和路径:

# 例如
$ vim --version | grep vimrcsystem vimrc file: "$VIM/vimrc"user vimrc file: "$HOME/.vimrc"2nd user vimrc file: "~/.vim/vimrc"

四:vim 使用

1、vim 语法格式

vim  [filename]
  • 如果指定的文件 filename 存在,打开文件并显示其内容。

  • 如果指定的文件不存在,创建一个空白的缓冲区(buffer),将其命名为 filename,如果编辑后保存 (:w),文件将被创建并写入指定路径。

  • 直接执行 vim 而不指定文件名:vim 会打开一个空白缓冲区(buffer),没有关联的文件。可以进行文本的输入,但是保存的时候需要在命令行模式下指定文件名 :w filename

2、vim 普通模式

  • 打开某个文件时,默认就处于普通模式;

  • 命令模式下可以通过执行相关命令来对文本进行管理,但是输入的命令不会在界面有任何显示;

  • 命令模式下不能直接编辑文本,而是通过按键命令操作文件内容;

(1)保存退出

  • ZQ:直接退出vim编辑器,当前更改的内容不会被保存;

  • ZZ:保存当前对文本的修改,然后退出vim编辑器;

(2)光标跳转

  • ^(脱字符):跳转到光标所在行的,数字0也可以;

  • $:将光标跳转到光标所在行的行尾

  • gg:光标移动到文本的第一行

  • G:光标移动到文本的最后一行,前面加数字就是移动到指定行。

  • [num]G:跳转到指定行。例如 11G,表示将光标跳转到第11行

(3)文本删除

  • d0或d$:(删除到行尾)从光标处开始的内容一直到光标所在行的最后一个字符会被删除;

  • dd: 删除光标所在行的整行内容;

  • dG:删除从光标开始行到最后一行的内容;

(4)文本查找

  • /关键字: 向下搜索,

  • ?关键字:从当前光标位置向上搜索,n:向上 N:向下

(5)撤销操作

  • u:撤销当前操作

  • ctrl+r:取消撤销操作

(6)可视化模式

可视化模式的作用是用于选择文本块,进入可视化模式后,可以批量选择。

  • v:选择文本中的单个字符

  • v:选择整行文本

  • ctrl+v:选择文本的一个矩形区块

例如:批量注释行:

1、先将光标移动到指定行的第一行行首
在这里插入图片描述

2、输入ctrl+v 进入可视化模式
在这里插入图片描述
3、向下移动光标,选中希望操作的每一行的第一个字符
在这里插入图片描述
4、输入大写字母 I切换至插入模式(大写I 表示在当前光标所在行的行首输入)
在这里插入图片描述
5、输入 #
在这里插入图片描述
6、按 ESC 键返回到普通模式
在这里插入图片描述

3、vim 命令模式

命令模式也叫做末行模式,于执行文件操作和全局操作命令,例如保存、退出、搜索和替换等。

普通模式下按 : 可以进入末行模式,按 Esc 返回普通模式。

(1)保存退出

  • w:保存

  • q:退出

  • x:保存并退出

  • !:结合w q等命令使用,表示强制的意思

(2)set 命令

  • set nu:显示行号,set nonu:取消行号显示

  • set ai:自动缩进,set noai:取消自动缩进

  • set paste:复制文本内容到该文件时候,保留文件格式,set nopaste:取消格式保留

  • set list:显示不可见的字符。^I:表示tab键 $:表示回车

  • set ff=unix|dos:更改文本格式,unix就是linux格式,dos就是windows的格式

  • set fileencodings=utf-8,iso-8859-1:设置当前内容显示的编码格式

  • set fileencoding=utf-8:设置使用vim创建新文件时的编码格式;

(3)搜索替换

说明:分隔符 / 可以换为其它的,例如 s#xx#yy#

  • s/xx/yy/:将文本中光标所在行的第一个xx替换为yy

  • s/xx/yy/g:将文本中光标所在行的所有的xx替换为yy

  • %s/xx/yy/g:将文本中所有的xx都替换为yy,如果不加g,只会搜索

4、vim 编辑模式

编辑模式也叫做插入模式,用于直接对文本内容进行操作。

在普通模式下按 i、a、o 可以进入到编辑模式;

  • i:在当前光标位置前插入文本; I:在当前行的行首插入文本

  • a:在当前光标位置后插入文本;A:在当前行的行首插入文本

  • o:在当前行下方新建一行并插入文本;O:在当前行上方新建一行并插入文本

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

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

相关文章

RocketMQ面试题:进阶部分

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

设计模式之桥接设计模式

简介 与适配器模式类似,桥接设计模式也是结构型模式将抽象部分与实现部分分离,使它们都可以独立的变化通俗来说,是通过组合来桥接其它的行为/维度 应用场景举例 传统方式 使用桥接设计模式之后 编码示例 /*** 抽象角色:手机*/ …

个人健康信息系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

个人交友系统|Java|SSM|JSP|

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html 5⃣️数据库可…

每天40分玩转Django:Django Celery

Django Celery 一、知识要点概览表 模块知识点掌握程度要求Celery基础配置、任务定义、任务执行深入理解异步任务任务状态、结果存储、错误处理熟练应用周期任务定时任务、Crontab、任务调度熟练应用监控管理Flower、任务监控、性能优化理解应用 二、基础配置实现 1. 安装和…

canvas+fabric实现时间刻度尺+长方形数据展示

前言 我们前面实现了时间刻度尺&#xff0c;现在在时间刻度尺里面画一个长方形&#xff0c;长方形里面有数据展示。 效果 实现 1.先实现时间刻度尺 2.鼠标移动、按下事件监听并画出对应效果 3.在刻度尺里面画对应的长方形数据展示 <template><div><canvas…

网络安全【C10-2024.10.1】-sql注入基础

1、利用宽字节注入实现“库名-表名”的注入过程&#xff0c;写清楚注入步骤&#xff1b; 宽字节概念 1、如果一个字符的大小是一个字节的&#xff0c;称为窄字节&#xff1b; 2、如果一个字符的大小是两个及以上字节的&#xff0c;称为宽字节&#xff1b;像GB2312、GBK、GB1803…

【Domain Generalization(2)】领域泛化在文生图领域的工作之——PromptStyler(ICCV23)

系列文章目录 【Domain Generalization(1)】增量学习/在线学习/持续学习/迁移学习/多任务学习/元学习/领域适应/领域泛化概念理解第一篇大概了解了 DG 的概念&#xff0c;那么接下来将介绍 DG 近年在文生图中的应用/代表性工作。本文介绍的是 PromptStyler: Prompt-driven Sty…

MySQL 08 章——聚合函数

聚合函数是对一组数据进行汇总的函数&#xff0c;输入的是一组数据的集合&#xff0c;输出的是单个值 一、聚合函数介绍 &#xff08;1&#xff09;AVG和SUM函数 举例&#xff1a;只适用于数值类型的字段&#xff08;或变量&#xff09;AVG函数和SUM函数在计算空值时&#x…

HTML——73.button按钮

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>button按钮</title></head><body><!--button按钮&#xff1a;1.button按钮type属性&#xff1a;可以设置三个值&#xff0c;submit/reset/button,含义…

Java 数据库连接 - Sqlite

Java 数据库连接 - Sqlite PS: 1. 连接依赖库&#xff1a;[sqlite-jdbc-xxx.jar](https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc)(根据连接的数据库版本选择) 2. 支持一次连接执行多次sql语句&#xff1b; 3. 仅本地连接&#xff1b;使用说明&#xff1a; publ…

NCCL源码解读3.1:double binary tree双二叉树构建算法,相比ring环算法的优势

目录 一、双二叉树出现的原因 二、双二叉树介绍 三、双二叉树大规模性能 四、双二叉树源码解读 双二叉树注意事项 核心逻辑 源码速递 视频分享在这&#xff0c;未完待补充&#xff1a; 3.1 NCCL源码解读双二叉树构建算法&#xff0c;double binary tree相比ring环算法的…

深入理解 JVM 的垃圾收集器:CMS、G1、ZGC

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

四、VSCODE 使用GIT插件

VSCODE 使用GIT插件 一下载git插件与git Graph插件二、git插件使用三、文件提交到远程仓库四、git Graph插件 一下载git插件与git Graph插件 二、git插件使用 git插件一般VSCode自带了git&#xff0c;就是左边栏目的图标 在下载git软件后vscode的git插件会自动识别当前项目 …

【NLP高频面题】用RNN训练语言模型时如何计算损失?

用RNN训练语言模型时如何计算损失&#xff1f; 重要性&#xff1a;★ 以“you say goodbye and i say hello.”为例&#xff0c;将其作为具体的数据传入网络&#xff0c;此时 RNNLM 进行的处理如图所示&#xff1a; RNNLM 可以“记忆”目前为止输入的单词&#xff0c;并以此…

Spring Cloud Security集成JWT 快速入门Demo

一、介绍 JWT (JSON Web Token) 是一种带有绑实和信息的简单标准化机制&#xff0c;在信息通信中用于验证和信息传递。尤其在应用中使用Spring Cloud实现分布式构建时&#xff0c;JWT可以作为一种无状态验证原理的证明。 本文将进一步描述如何在Spring Cloud Security中集成JW…

【机器学习】【朴素贝叶斯分类器】从理论到实践:朴素贝叶斯分类器在垃圾短信过滤中的应用

&#x1f31f; 关于我 &#x1f31f; 大家好呀&#xff01;&#x1f44b; 我是一名大三在读学生&#xff0c;目前对人工智能领域充满了浓厚的兴趣&#xff0c;尤其是机器学习、深度学习和自然语言处理这些酷炫的技术&#xff01;&#x1f916;&#x1f4bb; 平时我喜欢动手做实…

unity学习5:创建一个自己的3D项目

目录 1 在unity里创建1个3D项目 1.1 关于选择universal 3d&#xff0c;built-in render pipeline的区别 1.2 创建1个universal 3d项目 2 打开3D项目 2.1 准备操作面板&#xff1a;操作界面 layout,可以随意更换 2.2 先收集资源&#xff1a;打开 window的 AssetStore 下载…

Vue3 内置组件之component

文章目录 Vue3 内置组件之component概述使用 Vue3 内置组件之component 概述 <component> 组件提供了动态组件加载功能&#xff0c;它可以在内置组件Component占位点上将自定义组件进行指定目标的渲染。比如页面中常见的Tabs选项卡效果就可以利用动态组件加载功能轻松实…

学习路之VScode--自定义按键写注释(插件)

1. 安装 "KoroFileHeader" 插件 首先&#xff0c;在 VScode 中搜索并安装名为 "KoroFileHeader" 的插件。你可以通过在扩展商店中搜索插件名称来找到并安装它。 2. 进入 VScode 设置页面 点击 VScode 左下角的设置图标&#xff0c;然后选择 "设置&q…