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

【Linux】vim的简单使用

我们知道在Windows下的VS2019是一个集成开发环境,也就是说,集编辑,编译,调试等功能都放在了一起;但是在Linux下,这些步骤都是分开的,我们这篇博客就来说一说vim这个编辑器,它只有编辑功能
我们先来简单的在vim上写一段C语言代码

我们先touch一个.c文件,vim+文件名打开,我们发现按一些按键不能在里面写入内容,这是因为刚进入时是命令模式,我们需要按i键进入插入模式,这样就可以写代码了,写完之后按Esc退出插入模式,进入命令模式,再按shift+;就可以进入底行模式,这时输入wq再按回车就可以退出来了

上面就是一个简单的一个写一段代码的操作,下面我们来细化的讲解一下

vim的模式我们这里要说的有四种,分别是命令模式,插入模式,底行模式和替换模式,其中前三种比较常见,它们的相互转换的方法我们一定要知道

在这里插入图片描述

这张图就是它们三个相互转换的关系,插入模式和底行模式之间的相互转换必须要经过命令模式

下面说一下,如果vim异常退出,比如vim还在工作时直接关掉Xshell,或者是断网了,这时vim会在当前目录文件下生成一个隐藏文件,这个隐藏文件中就放着上会编辑的内容

在这里插入图片描述

这个就是异常退出后再次登录的画面,下面有很多选项,我们可以恢复后再删掉就行了

下面是在命令模式下的一些的操作,可以说是快捷键,只有在命令模式下才可以用

shift+$ 将光标定位到本行的最右边
shift+^ 将光标定位到本行的最左边
shift+g 将光标定位到本文件最结尾处
gg 将光标定位到本文件最开始处

h 光标向左走
j 光标向下走
k 光标向上走
l 光标向右走

yy 复制当前行
nyy 复制当前及以下n行
p 在下一行粘贴
np 在下一行粘贴n次

u 撤销上一步操作
ctrl+r 对撤销操作进行撤销
dd 删除/剪切当前行
ndd 删除/剪切多行

shift+`=~ 大小写快速转换
r 替换当前光标所在字符
nr 替换多个字符
shift+r 改成替换模式–Esc–>命令模式
(n)x 删除当前n个字符
n+shift+x 向左进行删除

w 使光标按单词在行内向后移动
b 使光标按单词在行内向前移动
shift+# 高亮所有当前光标指向的单词,n是走向下一个

下面是在底行模式中的指令

w 表示写入
q 表示退出
shift+!表示强制执行
以上三个可以互相组合

!+shell命令 可以不退出vim执行某些命令
vs code.c 可以开多窗口
ctrl+ww光标多窗口切换
set nu 设置上行号
set nonu 取消行号

相关文章:

  • 【Java】成员变量和局部变量的区别
  • PyTorch自动微分机制的详细介绍
  • Qt Excel读写 - QXlsx的安装配置以及测试
  • Android 中的动态应用程序图标
  • 蓝桥杯练习题-图书ISBN号码
  • 低代码与人工智能:实现智能化办公的利器
  • 糊涂工具包使用 记录
  • 空间域:空间组学的耶路撒冷
  • 网络安全知识和华为防火墙
  • 手机壳也能散热了?
  • 使用 create-react-app 创建 react 应用
  • 关机恶搞小程序
  • input框不能输入
  • 代码随想录算法训练营第35天 | 860.柠檬水找零 + 406.根据身高重建队列 + 452.用最少数量的箭引爆气球
  • [GN] 设计模式——面向对象设计原则概述
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 《Java编程思想》读书笔记-对象导论
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • 【Leetcode】104. 二叉树的最大深度
  • ES6简单总结(搭配简单的讲解和小案例)
  • export和import的用法总结
  • Mocha测试初探
  • php的插入排序,通过双层for循环
  • python docx文档转html页面
  • scrapy学习之路4(itemloder的使用)
  • SSH 免密登录
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 后端_ThinkPHP5
  • 强力优化Rancher k8s中国区的使用体验
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 数据仓库的几种建模方法
  • 新版博客前端前瞻
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 最简单的无缝轮播
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (七)理解angular中的module和injector,即依赖注入
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (推荐)叮当——中文语音对话机器人
  • (一)UDP基本编程步骤
  • (转)程序员疫苗:代码注入
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • *上位机的定义
  • .java 9 找不到符号_java找不到符号
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • @javax.ws.rs Webservice注解
  • @ModelAttribute注解使用
  • @RequestParam详解
  • @拔赤:Web前端开发十日谈
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [20170705]diff比较执行结果的内容.txt
  • [2018-01-08] Python强化周的第一天
  • [BIZ] - 1.金融交易系统特点