vim使用指南:指令、配置、插件、异常

文章目录

  • vi / vim
    • 命令模式
    • 插入模式
      • 光标定位
      • 复制粘贴删除撤销
      • 替换
      • 删除
      • 查找
    • 底行模式
      • 保存退出
      • 行号
      • 查找
      • 多开
      • 其他
    • 视图模式
      • 注释
    • 异常
    • vim配置
    • vim插件

vi / vim

vim的本质是一个编辑器,是一种多模式的编辑器,只能进行读写操作,不能进行编译
  • 编辑器:vim
  • 编译器:gcc/g++
  • 调试器:gdb
  • 维护项目结构/自动化编译:make/makefile

  • 模式切换
    • 用Vim打开一个文件时,最初为命令行模式,输入i进入插入模式;
    • 插入/底行模式输入esc退出插入/底行模式,进入命令行模式;
    • 命令模式下输入:进入底行命令行模式。

命令模式

命令模式是vim打开时默认的模式,在命令模式下所有的输入,都被当做命令命令来看待。除非你输入了模式切换的命令。

插入模式

光标定位

  1. shift+$定位到所在行结尾
  2. shift+^定位到所在行的开头
  3. shift+g定位到文本结尾行
  4. n+shift+g定位到文本第N行
  5. gg定位到文本第一行
  6. h,j,k,l上下左右

复制粘贴删除撤销

  1. yy复制当前行
  2. n+yy复制当前行及以下n-1行,共n行
  3. p粘贴
  4. n+p粘贴n行
  5. u撤销编辑操作
  6. ctrl+r对撤销操作进行撤销
  7. dd删除所在行/剪切所在行(dd之后p进行剪切粘贴)
  8. n+dd删除n行/剪切n行

替换

  1. shift+~大小写快速切换
  2. r+*将光标所在字符替换为*
  3. n+r+*将光标所在后n个字符替换为*
  4. shift+r(R)进入替换模式(ESC退出替换模式)

删除

  1. x删除光标所在字符
  2. n+x删除光标所在向后n个字符
  3. shift+x删除光标所在左侧字符
  4. n+shift+x删除光标所在左侧n个字符

查找

  1. shift+#高亮要查找的函数名/类名/字符串名
  2. n下一个查找到的函数名/类名/字符串名

底行模式

底行模式中,在输入指令时开头需要先输入`:`

保存退出

  1. :w保存
  2. :q退出
  3. :w!强制保存
  4. :q!强制退出
  5. :wq保存并退出
  6. :wq!强制保存并退出

行号

  1. set + nu开启行号
  2. set + nonu取消行号

查找

  1. /printf在当前文件中搜索printf
  2. ?printf在当前文件中搜索printf

多开

  1. vs filename将当前文件与filename文件进行对比
  2. ctrl+w+w在多个窗口中进行切换光标(光标在哪个界面就是在年纪哪个界面的文件)

其他

  1. vim filename n在打开filename文件时,光标直接定位在第n行
  2. shift+z+z强制保存并退出vim(不建议)

视图模式

在命令模式下使用`CTRL+v`进入视图模式

注释

  1. 批量化注释
    1. ctrl+v
    2. hjkl区域选择
    3. shift+i
    4. //
    5. ESC
  2. 批量化去注释
    1. ctrl+v
    2. hjkl区域选择
    3. d

异常

vim没有正常退出(异常退出),vim会自动将你未保存的文件,保存到一个临时的隐藏文件中,再你下一次使用vim的时候,会每次都进行提示你。

vim配置

原生vim在启动的时候会读取当前用户下的配置文件。

普通用户
vim的配置文件通常存放在当前用户的家目录下的隐藏文件.vimrc
当在这个用户下使用vim时,vim会默认使用这个用户的家目录下的.vimrc配置文件,来配置启动vim

.vimrc

 "====== Basic Configuration ======                                                                                                                           
set number             		 " 显示行号
set cursorline             	 " 突出显示当前行
hi Cursorline cterm=bold ctermbg=black ctermfg=green guibg=green "粗体显示选中行,用黑色框,字体标绿
set cursorcolumn             " 设置列高亮 
hi Cursorcolumn cterm=bold ctermbg=black ctermfg=green guibg=green "粗体显示选中列,用黑色框,字体标绿
set autoindent 		         " 自动缩进
set cindent
set tabstop=4 				 " Tab键的宽度
set softtabstop=4 		     " 统一缩进为4
set shiftwidth=4
set noexpandtab 			 " 不要用空格代替制表符 或者使用expandtab将tab保存为space
set smarttab 			     " 在行和段开始处使用制表符
set ignorecase 			     "搜索忽略大小写
set hlsearch 			     "搜索逐字符高亮
set incsearch 				 "增强搜索
set smartindent 			 " 提供自动缩进
syntax on					 " 语法高亮" 突出显示81列
set textwidth=80
set colorcolumn=+1nnoremap <c-n> :tabnext<cr>    "切换下一个使用:tabe打开的tag页 映射为 ctrl+n
nnoremap <c-p> :tabprev<cr>    "切换上一个使用:tabe打开的tag页 映射为 ctrl+p

root用户
root用户的vim配置文件在/etc/vimrc

vim插件

VimForCpp: 快速将vim打造成c++ IDE (gitee.com)

ps:本项目主要目标是帮助对vim配置方法不熟悉的新手封装的一键式vim环境安装包. 主要针对终端vim用户, 适合远程ssh连接Linux服务器进行开发的场景(例如使用阿里云服务器或者腾讯云服务器等).目前只支持 Centos7 x86_64。

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

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

相关文章

Windows系统下安装paddle

开始使用_飞桨-源于产业实践的开源深度学习平台 (paddlepaddle.org.cn) 命令行下&#xff1a; python -m pip install --upgrade pip --user python -m pip install paddlepaddle2.6.1 -i https://pypi.tuna.tsinghua.edu.cn/simple 报异常 ERROR: Could not install packa…

rlwrap工具包安装与配置

linux系统中disql模式下不可以上翻 很不方便 我找到了很好用的rlwrap工具 可以实现disql模式下的上翻等一些操作。 同理dmrman模式下也可以按此操作实现上翻命令 安装包下载&#xff1a;https://fossies.org/linux/privat/rlwrap-0.46.1.tar.gz/ 先进行yum源配置 [rootstudy…

java:反射和注解

反射 在运行时动态地获取一个类的信息并操作该类的属性和方法的技术 可以解决一些常规编程中难以预知类的情况下的问题 eg: 实例化一个类:通过反射可以根据类名动态实例化一个对象 调用类的方法:通过反射可以根据方法名动态地调用一个类的方法 获取和设置类的字段:通过反…

【笔记】下云的一小步尝试——内网穿透

云上的世界很精彩&#xff0c;可是越来越贵&#xff0c;系统也越来越臃肿&#xff1b;如果我只需要云提供网络接入&#xff0c;流量大的时候CDN和load balancer就够了&#xff0c;其他的业务只想在内部公开&#xff0c;那么就得将一些需要内部化的服务下云了。用自己的数据中心…

ADOP-400G光模块问题发布会

前沿光学&#xff08;ADOP&#xff09;400G光模块为客户提供各种超高密度的400G以太网连接方案&#xff0c;广泛应用于数据中心、企业网和服务提供商。 &#x1f4e3;&#x1f4e3;以下一些问题是我们新一代400G光模块常能遇见问题&#xff0c;所以我们决定在这里开一场小小的…

书生·浦语大模型第二期实战营(4)笔记

Finetune 为什么要微调 适应下游任务 两种微调范式 上面的是增量训练 下面的是指令微调 数据格式 微调方案 lora&#xff1a; 在基座模型的基础上再套用一个小模型 XTuner 简介 快速上手 LnternLM2 1.8B 多模态LLM

qt-C++笔记之获取当前文件名所在路径并拼接出新文件路径的一种方法

qt-C笔记之获取当前文件名所在路径并拼接出新文件路径的一种方法 code review! 运行 在 Qt 框架中&#xff0c;QFileInfo 和 QDir类通常用于文件系统信息的查询和目录管理。下面是按照这样一种新颖的步骤来拼接新文件路径的示例代码&#xff1a; #include <QFileInfo>…

智慧煤矿/智慧矿区视频汇聚存储与安全风险智能分析平台建设思路

一、建设背景 目前我国非常重视煤矿安全生产&#xff0c;并投入大量资金用于煤矿安全综合远程监控系统的研发。视频监控系统作为实现煤矿智能化无人开采的关键系统与煤矿安全生产的多系统协同分析与处理的关键信息源&#xff0c;在智慧矿山管控平台的建设中发挥着重要的作用。…

Java对象转xml(Object to Xml)

目录 第一章、Java对象转xml1.1&#xff09;Java实体类1.2&#xff09;Xml中需要包含的字段1.3&#xff09;设置根标签和属性序列化方式1.4&#xff09;使用JAXBContext和Marshaller进行转换 友情提醒: 先看目录&#xff0c;了解文章结构&#xff0c;点击目录可跳转到文章指定…

数据结构书后习题

p17 1&#xff0c; 个人解答&#xff1a; int DeleteMinElem(SqList &L,int &min) {int j 0;if (L.length 0){printf("error!");return 0;}int min L.data[0];for (int i 1; i < L.length; i){if (L.data[i] < min){min L.data[i];j i;}}L.dat…

cesium 调整3dtiles的位置 世界坐标下 相对坐标下 平移矩阵

cesium调整3dtiles的位置用到的是平移矩阵&#xff0c;原理是在世界坐标系中用偏移点减去原始点得到一个平移向量&#xff0c;再根据这个向量得到平移矩阵。 原始点&#xff1a;一般是模型的中心点位置&#xff0c;可通过模型的包围盒得到偏移点&#xff1a;可分为两种情况&…

Docker八股总结

1. 容器和虚拟机的区别 传统虚拟机技术是虚拟出一套硬件后&#xff0c;在其上运行一个完整操作系统&#xff0c;在该系统上再运行所需应用进程&#xff1b;而容器内的应用进程直接运行于宿主的内核&#xff0c;容器内没有自己的内核&#xff0c;而且也没有进行硬件虚拟。因此容…

【MATLAB源码-第191期】基于matlab的4QAM系统相位偏移估计EOS算法仿真,对比补偿前后的星座图误码率。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 1. 引言 M-QAM调制技术的重要性 现代通信系统追求的是更高的数据传输速率和更有效的频谱利用率。M-QAM调制技术&#xff0c;作为一种高效的调制方案&#xff0c;能够通过在相同的带宽条件下传输更多的数据位来满足这一需求。…

代码随想录 回溯—组合

递归函数三部曲&#xff1a; 递归函数参数返回值 确定终止条件 单层递归逻辑 思路&#xff1a;result存组合结果&#xff0c;path存一个结果生成的路径&#xff0c;回溯函数的参数除了所传进去的n和k&#xff0c;还要传进一个起始点startIndex&#xff0c;这就是确定了参数返…

EasyImage2.0 简单图床开源 多功能 简单易用图床系统源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 支持API 支持仅登录后上传 支持设置图片质量 支持压缩图片大小 支持文字/图片水印 支持设置图片指定宽/高 支持上传图片转换为指定格式 支持限制最低宽度/高度上传 支持上传其他文件格…

物联网与服务器有什么样的联系?

当今物联网是比较火的词汇&#xff0c;那么物联网是什么呢&#xff1f;物联网对人们的生活会产生哪些影响呢&#xff1f;。说的通俗一点物联网就是将设 备接入网络&#xff0c;实现设备智能化。那么物联网与服务器又有着怎样的联系呢&#xff1f;下面我们就一起来探讨一下这个问…

Lua中文语言编程源码-第九节,更改ltablib.c 表格操作函数, 使Lua加载中文库关键词(执行诸如查找、插入、删除、排序等表格操作)

源码已经更新在CSDN的码库里&#xff1a; git clone https://gitcode.com/funsion/CLua.git 在src文件夹下的ltablib.c 表格操作函数&#xff0c;此模块是C语言编写的&#xff0c;是Lua语言中的一个库文件&#xff0c;主要用来提供表格操作的功能。 该库提供了许多函数&…

【免费题库】华为OD机试 - 字符串排序(Java JS Python C C++)

须知 哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持 文章目录 须知题目描述用例1解题思路:Java代码:JS代码:Python代码:C代码:C++代码:题目描述 排序规则: 单词中字母比较不区分大小写,两个单词先以第一个字母作为排序的基准…

突破“三个九”!离子阱量子计算再创新高

如果把量子计算比作一场球赛&#xff0c;Quantinuum无疑又打了一记漂亮的好球。实际上&#xff0c;结合今年春季在量子体积、逻辑量子比特和布线问题等方面的进展&#xff0c;这个团队已经接近于完成一场完美的比赛。 3月&#xff0c;Quantinuum的研究人员证明了QCCD架构的可扩…

Vue-router 路由钩子在生命周期的体现

一、Vue-Router导航守卫 有的时候&#xff0c;需要通过路由来进行一些操作&#xff0c;比如最常见的登录权限验证&#xff0c;当用户满足条件时&#xff0c;才让其进入导航&#xff0c;否则就取消跳转&#xff0c;并跳到登录页面让其登录。 为此有很多种方法可以植入路由的导航…