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的内容就结束啦,熟练运用命令可以明显提高编辑速度~~~
如果感到有帮助的话,求求各位三连支持一波🥳🥳🥳

在这里插入图片描述

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

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

相关文章

【在Linux世界中追寻伟大的One Piece】多路转接epoll

目录 1 -> I/O多路转接之poll 1.1 -> poll函数接口 1.2 -> poll的优点 1.3 -> poll的缺点 1.4 -> poll示例 1.4.1 -> 使用poll监控标准输入 2 -> I/O多路转接之epoll 2.1 -> 初识epoll 2.2 -> epoll的相关系统调用 2.2.1 -> epoll_cre…

JS爬虫实战之TikTok_Shop验证码

TikTok_Shop验证码逆向 逆向前准备思路1- 确认接口2- 参数确认3- 获取轨迹参数4- 构建请求5- 结果展示 结语 逆向前准备 首先我们得有TK Shop账号&#xff0c;否则是无法抓取到数据的。拥有账号后&#xff0c;我们直接进入登录。 TikTok Shop 登录页面 思路 逆向步骤一般分为…

湘潭大学软件工程算法设计与分析实验-模拟退火算法

文章目录 写在前面代码分析 写在前面 总共是要四份代码&#xff0c;好像都是实现背包问题&#xff0c;前面三个都比较简单直观&#xff0c;朋友上周在机房给我讲解了一下之后&#xff0c;我大概弄清楚了&#xff0c;这周好像是最后一次算法课了&#xff0c;所以明天我得把剩下…

自由学习记录(20)

PureMVC 把 LoginView 视图组件赋给 viewComponent&#xff0c;然后用它来监听用户事件&#xff0c;更新显示状态。 command 将请求&#xff08;例如方法调用&#xff09;封装成一个对象&#xff0c;从而使得用户可以通过该对象来调用相应的操作。 Command&#xff08;命令…

Python实现PageRank算法

目录 第一部分:PageRank算法概述与原理1.1 什么是PageRank算法?1.2 PageRank算法的工作流程1.3 PageRank算法的时间复杂度第二部分:PageRank算法的Python实现(面向对象设计)2.1 Python类设计2.2 代码实现2.3 代码解释第三部分:案例1 - 动态网络中的PageRank计算(观察者模…

重学SpringBoot3-整合 Elasticsearch 8.x (三)使用Repository

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 在使用Spring Data Elasticsearch进行复杂查询时&#xff0c;Repository的接口方法以及定制查询能力可以帮助我们更灵活地构建高级用例。以下是几个具体示例&#xff1a;…

数据结构-并查集专题(2)

一、前言 接&#xff08;1&#xff09;完成剩余题目和了解并查集运用求解最小生成树的Kruskal算法 二、专题训练 2.1 题目总览 前四题见&#xff08;1&#xff09; 2.2 1568: 并查集-家谱 思路 首先这个题目的描述就有问题&#xff0c;它说每一组的父子关系由两行组成&…

吾店云介绍 – 中国人的WordPress独立站和商城系统平台

经过多年在WordPress建站领域的摸索和探索&#xff0c;能轻松创建和管理各种类型网站的平台 – 吾店云建站平台诞生了。 应该说这是一个艰苦卓绝的过程&#xff0c;在中国创建一个能轻松创建和使用WordPress网站的平台并不容易&#xff0c;最主要是网络环境和托管软件的限制。…

测试实项中的偶必现难测bug--<pre>标签问题

问题描述: 用户从网上copy的简介信息可能带有<pre>标签,导致安卓上的内容只能一行滑动展示,但是ios有对这个标签做特殊处理: 分析: <pre> 标签是 HTML 中用于表示预格式化文本的标签,它的作用是保留文本中的空格、换行和缩进。它的全称是 preformatted text…

管理 Elasticsearch 变得更容易了,非常容易!

作者&#xff1a;来自 Elastic Ken Exner Elasticsearch 用户&#xff0c;我们听到了你的心声。管理 Elasticsearch 有时会变得很复杂&#xff0c;面临的挑战包括性能调整、问题检测和资源优化。我们一直致力于简化你的体验。今天&#xff0c;我们宣布了自收购 Opster 以来的一…

微波无源器件 OMT1 一种用于倍频程接收机前端的十字转门四脊正交模耦合器(24-51GHz)

摘要&#xff1a; 我们报道了一种用于天文学射电望远镜的毫米波波长接收机的一种十字转门四脊OMT的设计&#xff0c;制造和实测结果。此四脊OMT被直接兼容到一个四脊馈电喇叭来实现可以拓展矩形波导单模带宽的双极化低噪声接收机。使用了24-51GHz的带宽&#xff0c;OMT证实了0.…

CCS 学习记录

1.导入项目 在CCS菜单中选择Project->Import Existing CCS Eclipse Project&#xff0c;点击Browse找到CCS workspace所在文件夹&#xff0c;点击OK&#xff0c;CCS会自动将所选文件夹及其子文件夹下所有的CCS Projects列出。从列表中找到所要导入的项目文件夹&#xff0c;…

【在Typora中绘制用户旅程图和甘特图】

在 Typora 中可以使用 Mermaid 绘制用户旅程图&#xff08;User Journey Map&#xff09;&#xff0c;但由于 Mermaid 并不直接支持用户旅程图&#xff0c;我们可以通过一些图表的变通方式&#xff08;比如流程图或甘特图&#xff09;来表示用户旅程图的结构。用户旅程图通常展…

如何使用IDEA创建Maven/SSM工程?

鉴于很多学校还在教授SSMJSP&#xff0c;很多同学不会使用IDEA创建Maven工程&#xff0c;这里进行说明 windows下安装jdk并配置环境 添加链接描述Windows下安装Maven并配置环境 首先你要本地安装jdk&#xff0c;Maven并配置基础环境变量&#xff0c;然后对IDEA进行jdk、Mave…

网络安全常见面试题--含答案

本文面试题汇总&#xff1a; 防范常见的 Web 攻击 重要协议分布层 arp协议的工作原理rip协议是什么&#xff1f;rip的工作原理 什么是RARP&#xff1f;工作原理OSPF协议&#xff1f;OSPF的工作原理 TCP与UDP区别总结 什么是三次握手四次挥手&#xff1f; tcp为什么要三次握手&…

C++内存泄漏检查工具——Valgrind(--tool = memcheck)

在写c程序中通常遇到程序崩溃&#xff0c;我们首先想到的是内存问题 如果代码量少看几遍就能看得出来&#xff0c;如果代码量多起来我们就得借助一些工具了比如gdb调试和valgrind中得memcheck来解决内存问题 我用的ubuntu&#xff0c;先安装valgrind sudo apt update sudo a…

原生 JavaScript基本内容和常用特性详解

原生 JavaScript&#xff08;也称为 Vanilla JS&#xff09;指的是不依赖于任何框架或库的纯 JavaScript。以下是原生 JavaScript 的一些基本内容和常用特性详解。 目录 1. 数据类型 2. 变量声明 3. 控制结构 4. 函数 5. 对象和数组 6. 事件处理 7. DOM 操作 8. Promi…

库打包工具 rollup

库打包工具 rollup 摘要 **概念&#xff1a;**rollup是一个模块化的打包工具 注&#xff1a;实际应用中&#xff0c;rollup更多是一个库打包工具 与Webpack的区别&#xff1a; 文件处理&#xff1a; rollup 更多专注于 JS 代码&#xff0c;并针对 ES Module 进行打包webpa…

基于promtail+loki+grafana搭建日志系统

文章目录 Promtail安装promtail创建配置文件创建systemd 服务文件启动promtail服务 loki下载loki服务创建config.yml文件创建systemd服务文件启动loki grafana下载grafana 本文基于promtaillokigrafanaprometheus&#xff08;可选&#xff09; 搭建一个轻量快速的日志系统&…

微服务容器化部署实践(FontConfiguration.getVersion)

文章目录 前言一、整体步骤简介二、开始实战1.准备好微服务2.将各个微服务打包为镜像第一种第二种3. 将各个打包好的镜像,通过docker-compose容器编排,运行即可总结前言 docker容器化部署微服务: 将微服务容器化部署到 Docker 容器中是一个常见的做法,可以提高应用的可移…