当前位置: 首页 > news >正文

Linux:vim命令总结及环境配置

文章目录

  • 前言
  • 一、vim的基本概念
  • 二、vim模式命令解析
    • 1. 命令模式
      • 1)命令模式到其他模式的转换:
      • 2)光标定位:
      • 3)其他命令:
    • 2. 插入模式
    • 3. 底行模式
    • 4. 替换模式
    • 5. 视图模式
    • 6. 外部命令
  • 三、vim环境的配置
    • 1. 环境配置语法
    • 2. vim完善的环境配置包
  • 四、sudo添加信任用户
  • 总结


前言

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、

在这里插入图片描述


一、vim的基本概念

vim是一种多模式的纯粹的编辑器,命令模式是vim的精华所在,熟练运用命令会大幅度提高编辑速度。

vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

  • 正常/普通/命令模式(Normal mode)
    控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
  • 插入模式(Insert mode)
    只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
  • 末行模式(last line mode)
    文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes

二、vim模式命令解析

在这里插入图片描述

1. 命令模式

vim 默认打开就是命令模式,任何模式按Esc都会退回到命令模式,命令模式也可以到其他模式。

1)命令模式到其他模式的转换:

(1)其余模式——>命令模式 :Eax
(2)命令模式——>插入模式 :a(光标到下一个位置),i(光标到当前位置),o(光标到下一行)
(3)命令模式——>替换模式 : Shift + r = R
(4)命令模式——>视图模式 : Ctrl + v

2)光标定位:

(1)gg 光标定位到开头,n + gg 光标定位到指定行开头
(2)Shift + G 光标定位到结尾行,Shift + G 光标定位到指定行开头
(3)Shift + ^ 光标定位到行首
(4)Shift + $ 光标定位到行尾
(5)h,j,k,l(左,下,上,右),也可以用↑↓←→
(6)w : 光标以单词为单位向前移动,n + w :移动 n 个
(7)b : 光标以单词为单位向后移动,n + b :移动 n 个

3)其他命令:

(1)yy : 复制当前行,n + yy : 复制 n 行
(2)p : 粘贴到下一行,n + p : 粘贴 n 次
(3)dd : 剪切当前行,n + dd :剪切n行
(4)x : 删除当前位置,n + x : 删除 n 个
(5)Shift + ~ : 快速大小写转化
(6)r : 小范围文本替换,n + r : 替换 n 个
(7)u : 撤销
(8)Ctrl + r : 撤销撤销
(9)Shift + zz : 保存并退出vim


2. 插入模式

a/i/o进入:

就是正常的编译,即可。


3. 底行模式

:进入

(1)w : 保存
(2)q : 退出
(3)! : 强制
(4)wq 保存并退出,wq! 强制保存并退出了
(5)set nu : 调出行号
(6)set nonu : 取消行号
(7)/XXX : 查找XXX, n : 到下一个匹配项
(8)!command : 在底行模式下查看外部 shell 命令
(9)!命令 : 在底行模式下执行外部命令
(10)vs other
(11)!命令 : 在底行模式下执行外部命令
(12)vs other : 分屏打开其他
(13)Ctrl + ww :光标在分屏中切换
(14)%s/XXX/XXX/g :所有后者替换为前者


4. 替换模式

Shift + r = R 进入:

进入替换模式输入就会替换光标的东西。


5. 视图模式

Ctrl + v 进入:

批量化删除 :

Ctrl -> v -> 选择(hjkl或wb或gg或G) -> d

批量化插入 :

Ctrl -> v -> 选择(hjkl或wb或gg或G) -> Shift + i = I ->插入内容->Esc


6. 外部命令

vim XXX打开
vim vim XXX +n打开光标定位到第n行
!命令,快速调出上次命令


三、vim环境的配置

1. 环境配置语法

首先进入自己的家目录,创建一个文件.vimrc,vim打开这个文件,然后利用问文心一言或者chatgpt来生成配置,我们直接复制上去保存退出就行。
下面是我用chatgpt生成的结果:
以下是一个适用于 CentOS 的 vim 配置示例,可用于优化编码体验,将其内容保存为 ~/.vimrc 文件即可生效:

" 基础设置
set number            " 显示行号
set relativenumber    " 显示相对行号
set cursorline        " 高亮当前行
set tabstop=4         " Tab 键宽度设为 4 个空格
set shiftwidth=4      " 缩进宽度为 4 个空格
set expandtab         " 用空格替代 Tab 键
set autoindent        " 自动缩进
set smartindent       " 智能缩进
set wrap              " 自动换行
set showmatch         " 高亮匹配的括号
set ignorecase        " 搜索忽略大小写
set smartcase         " 智能大小写匹配
set incsearch         " 增量搜索
set hlsearch          " 高亮搜索结果" 界面优化
syntax on             " 启用语法高亮
set background=dark   " 适合深色背景
set showcmd           " 显示命令输入
set wildmenu          " 自动补全菜单
set laststatus=2      " 总是显示状态栏
set ruler             " 显示光标位置
set scrolloff=8       " 光标上方和下方留出 8 行
set cmdheight=2       " 命令行高度设为 2" 备份和撤销
set backup            " 启用备份文件
set undofile          " 启用撤销文件
set undodir=~/.vim/undo  " 撤销文件保存路径
set backupdir=~/.vim/backup " 备份文件保存路径" 可视化配置
set visualbell        " 用视觉提示代替蜂鸣
set t_Co=256          " 启用 256 色支持" 键位映射
nnoremap <C-s> :w<CR>  " Ctrl+S 快捷键保存文件
inoremap <C-c> <Esc>   " 使用 Ctrl+C 进入普通模式
nnoremap <C-j> :cnext<CR> " 快速跳转到下一个错误
nnoremap <C-k> :cprev<CR> " 快速跳转到上一个错误" 插件管理(需要 vim-plug)
" if filereadable(expand("~/.vim/autoload/plug.vim"))
"   call plug#begin('~/.vim/plugged')
"   Plug 'scrooloose/nerdtree'            " 文件浏览插件
"   Plug 'junegunn/fzf', { 'do': './install --bin' } " 模糊搜索插件
"   call plug#end()
" endif

2. vim完善的环境配置包

还有一种方法,可以用配置好的包:
首先保证在当前自己家目录下,
然后输入:

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

然后输入这个执行:

source ~/.bashrc

最后,这里缩进是两格,要改缩进就打开.vimrm,搜索2,全部改为4就可以了。


四、sudo添加信任用户

一定要用root账号,vim /ect/sudoers。
来到这里:
在这里插入图片描述
root后面行,加入想要被信任的用户,和上面一样就行。


总结

到这里,vim的内容就结束啦,熟练运用命令可以明显提高编辑速度~~~
如果感到有帮助的话,求求各位三连支持一波🥳🥳🥳

在这里插入图片描述

相关文章:

Linux:vim命令总结及环境配置

文章目录 前言一、vim的基本概念二、vim模式命令解析1. 命令模式1&#xff09;命令模式到其他模式的转换&#xff1a;2&#xff09;光标定位&#xff1a;3&#xff09;其他命令&#xff1a; 2. 插入模式3. 底行模式4. 替换模式5. 视图模式6. 外部命令 三、vim环境的配置1. 环境…...

贪心算法day05(k次取反后最大数组和 田径赛马)

目录 1.k次取反后最大化的数组和 2.按身高排序 3.优势洗牌 1.k次取反后最大化的数组和 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 代码&#xff1a; class Solution {public int largestSumAfterKNegations(int[] nums, int k) {//如…...

默认 iOS 设置使已锁定的 iPhone 容易受到攻击

苹果威胁研究的八个要点 苹果手机间谍软件问题日益严重 了解 Apple 苹果的设备和服务器基础模型发布 尽管人们普遍认为锁定的 iPhone 是安全的&#xff0c;但 iOS 中的默认设置可能会让用户面临严重的隐私和安全风险。 安全研究员 Lambros 通过Pen Test Partners透露&#…...

上海市计算机学会竞赛平台2024年11月月赛丙组

题目描述 在一个棋盘上&#xff0c;有两颗棋子&#xff0c;一颗棋子在第 aa 行第 bb 列&#xff0c;另一个颗棋子在第 xx 行第 yy 列。 每一步&#xff0c;可以选择一个棋子沿行方向移动一个单位&#xff0c;或沿列方向移动一个单位&#xff0c;或同时沿行方向及列方向各移动…...

Python批量设置图片背景为透明

我们日常生活中制作PPT等教学资源时&#xff0c;需要批量去除图片背景&#xff0c;就可以使用 Python 的 rembg 库。 这个库基于神经网络模型&#xff0c;去背景效果较好&#xff0c;可以批量处理png, jpg, jpeg等图片。采用以下代码可以批量处理当前目录下的所有图片&#xf…...

Vue CLI 脚手架

cli脚手架创建项目步骤 全局安装(一次)&#xff1a;yarn global add vue/cli 无法识别yarn的要先安装yarn&#xff1b;终端执行npm install -g yarn 查看Vue版本&#xff1a;vue --version 这里有问题&#xff08;success上方有warning) 报错&#xff1a;‘vue’不是内部或外部…...

Linux【基础篇】

-- 原生罪 linux的入门安装学习 什么是操作系统&#xff1f; 用户通过操作系统和计算机硬件联系使用。桥梁~ 什么是Linux&#xff1f; 他是一套开放源代码&#xff08;在互联网上找到Linux系统的源代码&#xff0c;C语言写出的软件&#xff09;&#xff0c;可以自由 传播&…...

多线程环境下安全地使用 SimpleDateFormat的常见方法

文章目录 1. 使用局部变量&#xff08;每个线程独立一个实例&#xff09;2. 使用 ThreadLocal<SimpleDateFormat>3. 使用 DateTimeFormatter&#xff08;Java 8 及以上&#xff09;4. 使用 DateFormat 子类&#xff08;如 FastDateFormat&#xff09;5. 使用 synchronize…...

easyexcel实现自定义的策略类, 最后追加错误提示列, 自适应列宽,自动合并重复单元格, 美化表头

easyexcel实现自定义的策略类, 最后追加错误提示列, 自适应列宽,自动合并重复单元格, 美化表头 原版表头和表体字体美化自动拼接错误提示列自适应宽度自动合并单元格使用Easyexcel使用poi导出 在后台管理开发的工作中,离不开的就是导出excel了. 如果是简单的导出, 直接easyexce…...

ANDROIDWORLD: A Dynamic Benchmarking Environment for Autonomous Agents论文学习

这个任务是基于androidenv的。这个环境之前学过&#xff0c;是一个用来进行强化学习的线上环境。而这篇文章的工作就是要给一些任务加上中间的奖励信号。这种训练环境的优点就是动态&#xff0c;与静态的数据集&#xff08;比如说我自己的工作&#xff09;不同&#xff0c;因此…...

Docker 常用命令详解(详细版)

Docker 是一个开源的容器化平台&#xff0c;它使得开发人员可以打包应用程序及其所有依赖项&#xff0c;并在任何环境中运行。Docker 提供了简单而强大的命令行工具来管理容器、镜像、网络等。本文将详细介绍 Docker 的常用命令及其使用方法。 1. 安装 Docker 在使用 Docker …...

【网络安全 | 甲方安全建设】分布式系统、Redis分布式锁及Redisson看门狗机制

未经许可,不得转载。 文章目录 分布式系统分布式系统的核心特性分布式系统的典型架构分布式锁概念Redis 分布式锁原理互斥性锁释放锁的唯一性具体实现Redisson分布式锁分布式系统 分布式系统是一种由多台计算机(节点)组成的系统,这些节点通过网络相互连接并协同工作,共同…...

「QT」几何数据类 之 QLineF 浮点型直线类

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…...

Treeland 技术揭秘,如何使得 DDE 纵享丝滑?

近日&#xff0c;deepin&#xff08;深度&#xff09;社区亮相COSCon24 第九届中国开源年会开源市集&#xff0c;且社区资深桌面研发工程师张丁元为大家来了《Treeland&#xff0c;DDE进步的阶梯》技术分享。 就着这个机会&#xff0c;今天就让我们一起来聊聊如何在追求华丽动…...

快速了解SpringBoot 统一功能处理

拦截器 什么是拦截器&#xff1a; 拦截器是Spring框架提供的重要功能之一&#xff0c;主要进行拦截用户请求&#xff0c;在指定方法前后&#xff0c;根据业务需求&#xff0c;执行预先设定的代码。 也就是说,允许开发⼈员提前预定义⼀些逻辑,在⽤⼾的请求响应前后执⾏.也可以…...

C++区分数组的引用和引用的数组

void f(int (&arr)[10]) {//正确} void f1(int &arr[10]) {//不允许使用引用的数组} []&#xff08;数组下标运算符&#xff09;的优先级高于&&#xff08;取地址运算符&#xff09;。所有表达式&arr[i]等价于&(arr[i]) 引用的数组 一个包含引用的数组&…...

【harbor】离线安装2.9.0-arm64架构服务制作和升级部署

harbor官网地址&#xff1a;Harbor 参考文档可以看这里&#xff1a;部署 harbor 2.10.1 arm64 - 简书。 前提环境准备&#xff1a; 安装docker 和 docker-compose 先拉arm64架构的harbor相关镜像 docker pull --platformlinux/arm64 ghcr.io/octohelm/harbor/harbor-regist…...

ESLint 使用教程(五):ESLint 和 Prettier 的结合使用与冲突解决

前言 在现代前端开发中&#xff0c;代码质量与代码风格的统一是两个非常重要的方面。良好的代码质量能减少 bug 的产生&#xff0c;而统一的代码风格则能提高团队协作的效率。为了实现这两个目标&#xff0c;我们通常会使用一些工具。 为了保证代码的可读性和维护性&#xff0…...

uniApp之uni-file-picker使用踩坑

标题党~也不算坑吧 就是初体验 上传是需要存储一下子的&#xff0c;我以为uniApp是自己免费开的服务给大家中转使用&#xff0c;就没管这个事&#xff0c;但是官网是这么说的&#xff1a; 就我是怎么发现的&#xff0c;使用了一段时间后&#xff0c;上传的图片都裂了&#xff…...

【C语言】。末尼

用js写一个冒泡排序 当然可以。在JavaScript中&#xff0c;你可以使用递归的方式来实现冒泡排序算法。这是一个简单的示例&#xff1a; function bubbleSort(arr) { let len arr.length; if(len < 1){ return arr; // 如果数组只有一个元素或为空&#xf…...

【鉴权】深入解析 Token:身份认证的核心技术

目录 引言一、Token 的定义与概念1.1 Token 是什么&#xff1f;1.2 无状态性与自包含性1.3 Token 的工作流程1.3.1 基本工作流程1.3.2 工作流程图示 二、Token 的常见用途2.1 用户身份验证2.2 授权控制2.3 防止跨站请求伪造&#xff08;CSRF&#xff09;2.4 跨域认证 三、Token…...

FastReport将停止 .NET Framework 上的 WebReport 更新

从2024/ 12 /1 日起&#xff0c;Fastreport将停止发布更新和提供对 FastReport.Web (.NET Framework) 的技术支持。该库一直是使用 Online Designer 的许多项目中报告的核心。这些更改意味着 FastReport.Web (Legacy) 库&#xff08;FastReport.Net包的一部分&#xff09;将不再…...

面试:TCP、UDP如何解决丢包问题

文章目录 一、TCP丢包原因、解决办法1.1 TCP为什么会丢包1.2 TCP传输协议如何解决丢包问题1.3 其他丢包情况&#xff08;拓展&#xff09;1.4 补充1.4.1 TCP端口号1.4.2 多个TCP请求的逻辑1.4.3 处理大量TCP连接请求的方法1.4.4 总结 二、UDP丢包2.1 UDP协议2.1.1 UDP简介2.1.2…...

在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码

在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码 在Ubuntu下安装RabbitMQ可以按照以下步骤进行&#xff1a;步骤 1: 更新系统步骤 2: 安装Erlang步骤 3: 添加RabbitMQ仓库步骤 4: 更新APT索引并安装RabbitMQ步骤 5: 启动RabbitMQ服务步骤 6: 检查RabbitMQ状态步骤 7: …...

HTTPS通信和TCP通信有什么不一样

HTTPS通信和TCP通信的主要区别如下&#xff1a; ‌协议层次‌&#xff1a;HTTPS是应用层协议&#xff0c;建立在HTTP协议之上&#xff0c;并增加了SSL/TLS加密层&#xff1b;而TCP是传输层协议&#xff0c;提供可靠的数据传输服务。‌安全性‌&#xff1a;HTTPS通过SSL/TLS加密…...

Kafka 的一些问题,夺命15连问

kafka-中的组成员 kafka四大核心 生产者API 允许应用程序发布记录流至一个或者多个kafka的主题&#xff08;topics&#xff09;。 消费者API 允许应用程序订阅一个或者多个主题&#xff0c;并处理这些主题接收到的记录流 StreamsAPI 允许应用程序充当流处理器&#xff08;s…...

unity3d————延时函数

1.public void InvokeRepeating(string methodName, float time, float repeatRate); 延迟重复执行函数 InvokeRepeating 参数一&#xff1a;函数名字符串 参数二&#xff1a;第一次执行的延迟时间 参数三&#xff1a;之后每次执行的间隔时间 注意&#xff1a; 1-1.延时函数第…...

计算机学生自我提升方法——善用搜索引擎

计算机学生自我提升方法——善用搜索引擎 在信息爆炸的时代&#xff0c;计算机专业的学生如何有效地自我提升&#xff1f;答案可能就藏在一个简单却强大的工具——搜索引擎中。搜索引擎不仅是获取知识的入口&#xff0c;更是解决问题的利器。下面&#xff0c;我将分享一些善用…...

游戏引擎学习第一天

视频参考: https://www.bilibili.com/video/BV1zGDCYHErA/ 创建一个保存项目的路径 VS的安装略过&#xff0c;个人自行百度 1. vs 创建第一个CMAKE的窗口项目 game.cpp 修改如下的代码 到https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-winmain 去…...

uni-app view循环绑定click和 v-if

<view class"layout-wrap-item" v-for"(item, index) in menuItems" :key"index" click"item.clickHandler" :v-if"showMenu(item)"></view> const xxx (id) > { }; // 定义菜单项数组 const menuItems …...

网站建设多少钱/东莞网站营销推广

ubuntu安装pycharm的方法如下所示&#xff1a;1. 下载选择Linux Tab&#xff0c;选择下载免费的Community Edition.2. 安装PyCharm按照官网给出的安装指导【2】进行安装。(1) Copy the pycharm-*.tar.gz to the desired installation location (make sure you have rw permissi…...

制作简单的个人网站/河南省网站

题目&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以…...

wordpress 如何安装/小说关键词搜索器

点击上方入口立即【自由构建 探索无限】一起共赴年度科技盛宴&#xff01;前言随着机器学习的不断发展和在各个行业的使用&#xff0c;很多企业已经从最初关注构建模型、算法选择到了现在如何构建自己的机器学习平台&#xff0c;在该平台上实现从数据处理、模型训练、模型部署和…...

网页展示模板/重庆seo优化公司

题目描述 给定整数m以及n各数字A1,A2,…An&#xff0c;将数列A中所有元素两两异或&#xff0c;共能得到n(n-1)/2个结果&#xff0c;请求出这些结果中大于m的有多少个。 输入描述: 第一行包含两个整数n,m. 第二行给出n个整数A1&#xff0c;A2&#xff0c;…&#xff0c;An。 对于…...

网站方案策划书/北京朝阳区疫情最新情况

unix/linux内核在系统里扮演什么角色&#xff1f;不仅仅是FreeBSD系统&#xff0c;每一个操作系统都有一个内核---从MS-DOS、Windows到高级终端大型机&#xff0c;但是各种系统对内核的态度不同&#xff0c;有些系统花费了很大精力对用户隐藏内核。不管是Windows或UNIX系统的发…...

wordpress没有上级目录的写权限/东莞网站营销推广

目录1、Jsoup是什么2、Jsoup解析URL返回结果3、Jsoup解析HTML片段1、Jsoup是什么 Jsoup是java的HTML解析器&#xff0c;可以解析请求URL的返回结果&#xff0c;可以解析HTML的片段内容&#xff0c;其实主要用来解析HTML内容的。 pom.xml文件引入&#xff1a; <!-- https:…...