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

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.kler.cn/a/383214.html

相关文章:

  • Google Guava 发布订阅模式/生产消费者模式 使用详情
  • Milvus - GPU 索引类型及其应用场景
  • 前端入门一之CSS知识详解
  • 语音识别ic赋能烤箱,离线对话操控,引领智能厨房新体验
  • 如何搭建汽车行业AI知识库:定义+好处+方法步骤
  • Java中的System类、Runtime类、Math类、BigInteger类、BigDecimal类、Random类
  • 深度学习常用开源数据集介绍【持续更新】
  • 《华为工作法》读书摘记
  • 【Git】Liunx环境下Git的使用:“克隆,提交,推送“
  • Sat-NeRF论文笔记和复现问题处理
  • 小游戏开发,出现了降本增效的技术?
  • 安装acondana3, Conda command not found
  • python项目实战---使用图形化界面下载音乐
  • 离线部署k8s1.21.2集群教程
  • CrackMe破解之Acid_burn
  • SpringCloudGateway — 网关登录校验
  • Mysql基础 01 数据与sql
  • 【Python】强大的正则表达式工具:re模块详解与应用
  • 【极限编程(XP)】
  • 重新认识HTTPS
  • 【从VAE到LDM】Variational Auto Encoder原理以及关于Latent Diffusion的思考
  • 深入解析 Transformer 模型:编码器和解码器的完整实现
  • 易考八股文之谈谈对sentinel的理解和作用?
  • 关于路由笔记
  • Qt C++,Link custom data to the QCustomPlot data
  • 如何用Neo4j做知识图谱