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

Linux入门之vim

Linux入门之vim

文章目录

  • Linux入门之vim
    • 1. Linux编辑器--vim
    • 2. vim模式
    • 3. 命令模式下的命令
    • 3. 低行模式下的命令
    • 4. 模式切换
    • 6. vim的配置

1. Linux编辑器–vim

  vim是Linux中的一个多模式的文本编辑器,visual studio是一种集成的开发环境,包括代码编写,编译,调试等功能,而vim则只有代码编写的功能,vim相较于visual studio,vim更轻量,配置好系统之后就自带,且vim几乎可以在任何系统使用

2. vim模式

  vim是种多模式编辑器,我们只需要知道三种基本模式就可以了,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)

  • 正常/普通/命令模式(command mode)
      控制光标的移动,字符的删除,移动复制区段
  • 插入模式(Insert mode)
      文字的输入,按ESC回到命令模式,最频繁使用的编辑模式
  • 末行模式(last line mode)
      文件的保存或退出,也可以进行文本的替换,查找字符串,列出行号,命令模式下,按shift + :进入该模式

TIPS:如果不知道当前处于什么模式,按ESC,即可回到命令模式

3. 命令模式下的命令

光标所在行

  1. 复制:yy (复制光标所在行)
  2. 粘贴:p
  3. 剪切:dd + p
  4. 撤销:u (ctrl + r)即可对u的操作进行撤销

TIPS:大部分的命令都可以使用 n + 命令,进行多行的操作
例如:
n + yy即可对光标行开始的n行进行复制
n + p即可粘贴n行

光标的快速定位

  1. 回到文本末尾:shift + g(G) shift + g = G,G为实际输入的指令
  2. 回到文本开头:gg
  3. 定位到第n行:n + gg
  4. 光标的局部定位 ← ↓ ↑ → h(左移一个字符) j (下移一个字符) k (上移一个字符) l (下移一个字符)(由于老实键盘上没有← ↓ ↑ →,所以采用h j k l,对光标进行局部定位)
  5. 定位到行末:shift + 4($)
  6. 定位到行首:shift + 6(^)
  7. 向后跳转一个单词:w
  8. 向前跳转一个单词:b (对单词的定义,为中间没有字符隔开的就算一个单词,例如:helloworld,这算一个单词)

其他指令

  1. 保存并退出:shift + zz(ZZ)
  2. 向后删除n个字符:n + x
  3. 向前删除n个字符:n + shift + x(X)(向前删除的时候,不会删除光标指向的字符,而是删除光标的前一个字符,向后删除则会删除光标指向的字符)
  4. 字符大小写切换:shift + ·(~)
  5. 单个字符的替换:r
  6. 多文本编辑:vs xxx.c
  7. 多文本窗口切换:ctrl + ww (切换窗口存在多种方式,记住这种即可)

3. 低行模式下的命令

  1. 设置行号:set nu 取消行号:set nonu
  2. 字符搜索:/string
  3. 保存退出:wq! w:保存,q :退出,!:强制(有时候需要加!才能将文件保存 )

4. 模式切换

在这里插入图片描述

  • 通过视图模式对代码进行注释步骤
      1. 从命令模式切换为视图模式(ctrl + v )
      2. 选中需要注释的代码前的空白列(h j k l )
      3. 切换成输入模式输入//(shift + i (I))
      4. 退出视图模式(按两次ESC)
    即可看到被选中的列都出现了//,对代码进行范围注释

6. vim的配置

  在每个人的家目录下都有一个.vimrc的隐藏文件,存放的是vim的配置,可以对其进行修改

常用的修改

  • 设置语法高亮: syntax on
  • 显示行号: set nu
  • 设置缩进的空格数为4: set shiftwidth=4

C++开发的同学,在Gitee上有一个大佬的项目,封装了一键式的vim环境配置vim配置的项目链接

目前只支持:Centos7 x86_64


http://www.mrgr.cn/news/67268.html

相关文章:

  • 【缓存与加速技术实践】Redis数据类型
  • 免费,基于React + ECharts 国产开源 IoT 物联网 Web 可视化数据大屏
  • Scala 的访问权限
  • AttriPrompter:基于属性语义的自动提示,用于通过视觉-语言预训练模型实现零样本细胞核检测|文献速递-基于深度学习的病灶分割与数据超分辨率
  • yolov8涨点系列之轻量化主干网络替换
  • 【Linux】IPC进程间通信System V:并发编程实战指南(二)
  • Git超详细笔记包含IDEA整合操作
  • 狐假虎威,数据流图其实很简单
  • 题目练习之二叉树那些事儿
  • Centos7修改默认yum源(ARM架构)(2024年6月30号后)
  • 防火墙|WAF|漏洞|网络安全
  • 信息学奥赛一本通 1395:烦人的幻灯片(slides)
  • Flutter鸿蒙next 中的 Drawer 导航栏
  • 【360】基于springboot的志愿服务管理系统
  • 粒子群优化双向深度学习!PSO-BiTCN-BiGRU-Attention多输入单输出回归预测
  • 【云岚到家】-day09-2-秒杀抢购
  • 为什么我的软件内存占用这么高?从内存占用过高到C++内存管理方法
  • 【数据结构】插入排序——直接插入排序 和 希尔排序
  • 操作系统——作业、进程调度算法
  • 初识多线程
  • Linux 系统目录结构
  • 分布式中常见的问题及其解决办法
  • Go + Wasm
  • C#-类:静态成员的介绍
  • C++进阶-->红黑树的实现
  • ECCV2024新鲜出炉!动态再训练-更新用于无源目标检测的Mean Teacher