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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Obsidian的Git插件设置配置全流程 -- 简单的电脑端多平台同步方案及常见问题

Obsidian的Git插件设置配置全流程 -- 简单的电脑端多平台同步方案及常见问题 参考文章引言1. git 介绍及安装2. git 本地配置及远程仓库链接3. obsidian 的 git 插件4. 常用的使用场景和对应的命令4.1. 本地仓库已推送到远端&#xff0c;如何在另一个电脑上第一次同步4.2 多端同…

【优选算法篇】微位至简,数之恢宏——解构 C++ 位运算中的理与美

文章目录 C 位运算详解&#xff1a;基础题解与思维分析前言第一章&#xff1a;位运算基础应用1.1 判断字符是否唯一&#xff08;easy&#xff09;解法&#xff08;位图的思想&#xff09;C 代码实现易错点提示时间复杂度和空间复杂度 1.2 丢失的数字&#xff08;easy&#xff0…

Redis(3):持久化

一、Redis高可用概述 在介绍Redis高可用之前&#xff0c;先说明一下在Redis的语境中高可用的含义。   我们知道&#xff0c;在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务&#xff08;99.9%、99.99%、9…

高亚科技签约酸动力,助力研发管理数字化升级

近日&#xff0c;中国企业管理软件资深服务商高亚科技与广东酸动力生物科技有限公司&#xff08;以下简称“酸动力”&#xff09;正式签署合作协议。借助高亚科技的8Manage PM项目管理软件&#xff0c;酸动力将进一步优化项目过程跟踪与节点监控&#xff0c;提升研发成果的高效…

大模型领域最值得看的 9 本新书,找到了

在人工智能革命的浪潮中&#xff0c;程序员们正站在技术变革的最前沿。本书单精选了关于人工智能在各行业应用的最新著作&#xff0c;从医疗诊断到金融风控&#xff0c;从智能制造到智慧城市&#xff0c;全面展现AI如何重塑行业生态&#xff0c;推动社会进步。通过阅读这些书籍…

加入GitHub Spark需要申请

目录 加入GitHub Spark需要申请 GitHub Spark 一、产品定位与特点 二、核心组件与功能 三、支持的AI模型 四、应用场景与示例 五、未来展望 六、申请体验 加入GitHub Spark需要申请 GitHub Spark 是微软旗下GitHub在2024年10月30日的GitHub Universe大会上推出的一款革…

Rust移动开发:Rust在iOS端集成使用介绍

iOS调用Rust 上篇介绍了 Rust移动开发&#xff1a;Rust在Android端集成使用介绍, 这篇主要看下iOS上如何使用Rust&#xff0c;Rust可以给移动端开发提供跨平台&#xff0c;通用组件支持。 该篇适合对iOS、Rust了解&#xff0c;想知道如何整合调用和编译的&#xff0c;如果想要…

【月之暗面kimi-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …

2024 CSS保姆级教程四

CSS中的动画 CSS动画&#xff08;CSS Animations&#xff09;是为层叠样式表建议的允许可扩展标记语言&#xff08;XML&#xff09;元素使用CSS的动画的模块​ 即指元素从一种样式逐渐过渡为另一种样式的过程​ 常见的动画效果有很多&#xff0c;如平移、旋转、缩放等等&#…

[C++11] Lambda 表达式

lambda 表达式&#xff08;Lambda Expressions&#xff09;作为一种匿名函数&#xff0c;为开发者提供了简洁、灵活的函数定义方式。相比传统的函数指针和仿函数&#xff0c;lambda 表达式在简化代码结构、提升代码可读性和编程效率方面表现出色。 Lambda 表达式的基本语法 在…

AI4SCIENSE(鄂维南院士:再谈AI for Science)

鄂维南院士&#xff1a;再谈AI for Science_哔哩哔哩_bilibili 以往处理高维问题 量子力学&#xff1a;单变量乘积 统计学&#xff1a;旋转 AI4S 处理数据 蛋白质折叠&#xff1f; 不是纯粹的数据驱动 物理学等学科基本原理 例&#xff1a;分子动力学 数据模型 流程图 这…

接收nVisual中rabbitmq数据不成功问题排查

rabbitmq服务部署成功的情况下&#xff0c;消息对接不成功一般原因为消息发送失败&#xff0c;发送失败大多数可能为global_settings表配置错误。下面从两个方面解决消息对接不成功问题。 1.数据是否成功发送 检查global_settings表中rabbitmq发送消息配置信息是否正确 #MQS…

SpringBoot框架学习总结 及 整合 JDBC Mybatis-plus JPA Redis 我的学习笔记

SpringBoot框架学习总结 及 整合 JDBC Mybatis-plus JPA Redis 我的学习笔记 一、SpringBoot概述二、创建SpringBoot程序1. 使用maven方式创构建2. 使用Spring Initializr构建3. SpringBoot热部署4. SpringBoot的跨域处理 三、基础配置1.配置文件的作用2.配置文件格式2.yaml3.S…

【AIGC】如何通过ChatGPT轻松制作个性化GPTs应用

创建个性化的GPTs应用是一个涉及技术、设计和用户体验的过程。以下是详细步骤&#xff1a; ###1.确定应用目标和用户群体 在开始之前&#xff0c;你需要明确你的应用的目标和目标用户。这将帮助你在设计、开发和个性化方面做出相应的决策。例如&#xff0c;如果你的应用是为了…

strtok函数详解

strtok函数 strtok 函数是一个字符串分割函数&#xff0c;用于将字符串分割成一系列的标记。这个函数通过一组分隔符字符来确定标记的边界&#xff0c;每次调用都会返回字符串中的下一个标记&#xff0c;并且将原始字符串中的分隔符替换为空字符‘\0’&#xff0c;从而实际上是…

【Linux】Linux入门实操——vim、目录结构、远程登录、重启注销

一、Linux 概述 1. 应用领域 服务器领域 linux在服务器领域是最强的&#xff0c;因为它免费、开源、稳定。 嵌入式领域 它的内核最小可以达到几百KB, 可根据需求对软件剪裁&#xff0c;近些年在嵌入式领域得到了很大的应用。 主要应用&#xff1a;机顶盒、数字电视、网络…

系统管理与规划师

综合 工业化、信息化两化融合&#xff1a;战略、资源、经济、设备和技术的融合 诺兰6时期&#xff1a;&#xff08;初普控&#xff0c;整数成&#xff09;初始、普及、控制、整合、数据管理、成熟期&#xff1b;技术转型期介于控制和整合间 IT战略规划 IT战略制定&#xff1a;使…

tcpdump 是一款功能强大的网络数据包分析工具

功能概述 tcpdump 可以捕获和分析网络上传输的数据包。它允许用户在网络接口上监听经过的流量&#xff0c;并根据指定的条件&#xff08;如协议类型、源 IP 地址、目的 IP 地址、端口号等&#xff09;对数据包进行过滤和显示&#xff0c;帮助网络管理员、安全分析师和开发人员排…

容器化技术入门:Docker详解

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 容器化技术入门&#xff1a;Docker详解 容器化技术入门&#xff1a;Docker详解 容器化技术入门&#xff1a;Docker详解 引言 Doc…

C++20 概念与约束(2)—— 初识概念与约束

1、概念 C20 中引入新的编译期关键字 concept 用于创建概念。个人认为将其翻译为“构思”更为贴切。直接使用时&#xff0c;它更像一个只能用于模板的布尔类型关键字。 而如果用于模板中&#xff0c;他会将模板类型先带入自身&#xff0c;当自身条件为 true 才会实例化模板&…