《Linux系统编程篇》vim的使用 ——基础篇

引言

上节课我们讲了,如何将虚拟机的用户目录映射到自己windows的z盘,虽然这样之后我们可以用自己的编译器比如说Visual Studio Code,或者其他方式去操作里面的文件,但是这是可搭建的情况下,在一些特殊情况下,我们没有办法临时去操作Linux系统里面的文件,会使得我们非常棘手,所以我们要学习Vim,在Linux系统编程中,Vim是一款非常强大的文本编辑器。

愿你在人生的旅途中,始终保持热爱、勇敢和坚持,收获自己想要的美好 ——家驹

文章目录

  • 引言
  • vim的下载与更新
    • 输入以下命令来安装 Vim
  • 牛刀小试:使用vim打开文件或编辑
  • vim基本操作
      • 打开/创建文件
      • 保存和退出
      • 光标移动
      • 编辑文本
      • 查找和替换
      • 分屏和退出分屏
  • 结束

vim的下载与更新

使用Mobaxterm连接好虚拟机之后,我们来下载或者更新一下vim这款编译器,最好重
新下载一下,因为自带的vim超级难用。

输入以下命令来安装 Vim

sudo apt update
sudo apt install vim

牛刀小试:使用vim打开文件或编辑

vim demo1.c

或者

vi demo1.c

如果没有这个demo1.c的文件则会,编辑保存之后,自动创建这个文件
在这里插入图片描述
我这里就是没有这个文件,所以使用了这个命令之后是空的,我们接下来写一个hello word小程序

输入i字母,进入编辑模式

左下角有这个提示就可以编辑了
在这里插入图片描述

一定要手敲不要复制,感受一下vim的编辑方式

#include <stdio.h>

int main()
{
        printf("Hello World");
        return 0
}

输入完成之后,点击键盘左上角的esc键,退出插入编辑模式

接着输入冒号:
在这里插入图片描述
代表着输入指令,我们想要退出保存这个文件,所以需要输入的指令是wq
连起来就是:wq

w:保存 q:退出

在这里插入图片描述
直接回车
然后就退出到命令行了,接下来我们可以使用cat命令去看一下,我们刚刚编辑的文件有没有成功。

在这里插入图片描述
成功,我们成功使用了vim工具编写了一个文件!

vim基本操作

下面我列举了一些,常用基本操作的方法,可以试着用一下。

打开/创建文件

  1. 从终端打开文件:vim 文件名

  2. 创建新文件:vim 新文件名

保存和退出

  1. 保存文件:按下 Esc 进入命令模式,然后输入 :w 并按下 Enter

  2. 不保存文件并退出:按下 Esc 进入命令模式,输入 :q! 并按下 Enter

  3. 保存并退出:按下 Esc 进入命令模式,输入 :wq:x 并按下 Enter

光标移动

  1. 使用箭头键或 h j k l 分别向左、下、上、右移动光标

  2. 移动到行首:0

  3. 移动到行尾:$

  4. 移动到文档开头:gg

  5. 移动到文档末尾:G

编辑文本

  1. 进入编辑模式:在普通模式下按下 i 进入插入模式

  2. 删除字符:在普通模式下按下 x

  3. 复制粘贴:在普通模式下按下 yy 复制当前行,p 粘贴到光标后

  4. 撤销:在普通模式下按下 u

查找和替换

  1. 查找:在普通模式下按下 / 后输入要查找的内容,按下 Enter

  2. 替换:在命令模式下输入 :%s/要替换的内容/新内容/g 并按下 Enter 进行全局替换

分屏和退出分屏

  1. 水平分屏:在命令模式下输入 :sp

  2. 垂直分屏:在命令模式下输入 :vsp

  3. 切换屏幕:按下 Ctrl + w 然后按下 w

  4. 关闭当前屏幕:在普通模式下按下 :q

vim快捷键,提升操作篇

结束

我们后续会教大家使用VS Code去编写代码,但是,建议初学者先用vim编写一阵子,这是一个必须学会的基础。总之一句话孰能生巧。可以试着像本地windows一样操作一些东西,用vim实现,哪里卡住了,就是你进步的时候!

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

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

相关文章

【Linux】数据流重定向

数据流重定向&#xff08;redirect&#xff09;由字面上的意思来看&#xff0c;好像就是将【数据给它定向到其他地方去】的样子&#xff1f; 没错&#xff0c;数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据&#xff0c;给它传输到其他的地方&#xff0c;例如文件或…

4G LTE 教程 物理通道结构

https://www.artizanetworks.com/resources/tutorials/phy_cha.html 下行物理信道&#xff1a; 物理下行链路共享信道 (PDSCH) 承载 DL-SCH 和 PCH。DL-SCH 包含实际用户数据。物理下行链路控制信道 (PDCCH) 通知UEPCH和DL-SCH的资源分配情况&#xff0c;以及DL-SCH相关的HARQ…

tongweb8 使用命令行对应用进行操作(by lqw)

文章目录 声明思路和概念新增应用更新应用启动应用停止应用删除应用 声明 本帖只是做一些简单的应用查看&#xff0c;新增&#xff0c;启动&#xff0c;停止&#xff0c;删除操作&#xff0c;仅供参考&#xff0c;详细内容建议参考TongwebV8.0 命令行工具参考&#xff0c;生产…

InjectFix 热更新解决方案

简介 今天来谈一谈&#xff0c;项目种的客户端热更新解决方案。InjectFix是腾讯xlua团队出品的一种用于Unity中C#代码热更新热修复的解决方案。支持Unity全系列&#xff0c;全平台。与xlua的思路类似&#xff0c;InjectFix解决的痛点主要在于Unity中C#代码写的逻辑在发包之后无…

Python爬虫:基础爬虫架构及爬取证券之星全站行情数据!

爬虫成长之路&#xff08;一&#xff09;里我们介绍了如何爬取证券之星网站上所有A股数据&#xff0c;主要涉及网页获取和页面解析的知识。爬虫成长之路&#xff08;二&#xff09;里我们介绍了如何获取代理IP并验证&#xff0c;涉及了多线程编程和数据存储的知识。此次我们将在…

深度学习LSTM之预测光伏发电

代码一&#xff1a;训练LSTM模型 代码逐段分析 import numpy as np import pandas as pd import tensorflow.keras as tk from tensorflow.keras import layers首先&#xff0c;导入了必要的库&#xff1a;numpy用于数值计算&#xff0c;pandas用于数据处理&#xff0c;tenso…

k8s record 20240710 监控

不是adaptor 是opetator 案例 监控有了&#xff0c;日志搜集呢&#xff1f; 一、kubelet 的小弟 kubelet — 负责维护容器的生命周期&#xff0c;节点和集群其他部分通信 cAdvisor 集成在 Kubernetes 的 kubelet 中&#xff0c;能够自动发现和监控集群中所有的容器。dockers…

尚硅谷Vue3入门到实战,最新版vue3+TypeScript前端开发教程

Vue3 编码规范 创建vue3工程 基于vite创建 快速上手 | Vue.js (vuejs.org) npm create vuelatest 在nodejs环境下运行进行创建 按提示进行创建 用vscode打开项目 安装依赖 源文件有src 内有main.ts App.vue 简单分析 编写src vue2语法在三中适用 vue2中的date metho…

java《ArrayList篇》--ArrayList全套知识点总结及其配套习题逐语句分析(附带全套源代码)

一、前言 来不及悼念字符串了&#xff0c;接下来登场的是集合&#xff0c;集合和数组的用法差不多&#xff0c;不同之处就在于存储的内容&#xff0c;数组是固定的长度的&#xff0c;集合的长度不固定。学习的过程中可以参照数组 今天已经是学习java的第八天了&#xff0c;接下…

vue3 vite+gojs 2.3.14 去除水印

引用vue2的做法&#xff1a;http://t.csdnimg.cn/Yrz8n 自定义vite插件&#xff0c;插件中apply 分两种模式&#xff0c;如果打包请选择build&#xff0c;记得强制刷新浏览器清缓存采能看到最新的gojs界面 export default function createGojsWaterMaker() {return {name:rem…

FPGA笔试

半加器和全加器的区别&#xff1a; 1、半加器不考虑输入的进位&#xff0c;称之为半加。 2、全加器反之&#xff0c;考虑进位。 SRAM/DRAM优缺点对比_sram和dram的主要区别及优缺点-CSDN博客 消除竞争冒险的方法 ①滤波电容&#xff1a;因为尖峰脉冲很窄&#xff0c;用很小的…

PyFluent入门之旅(5)后处理

接着PyFluent入门之旅&#xff08;4&#xff09;算例求解后我们已经完成了求解&#xff0c;并且保存了.dat的结果文件。 现在可以利用Fluent内置的后处理功能进行图像与数据曲线的输出。 1. 计算结果文件的读取 如果需要在计算完成后立即进行后处理&#xff0c;那么直接在求…

Nginx入门到精通六(高可用配置)

下面内容整理自bilibili-尚硅谷-Nginx青铜到王者视频教程 Nginx相关文章 Nginx入门到精通一&#xff08;基本概念介绍&#xff09;-CSDN博客 Nginx入门到精通二&#xff08;安装配置&#xff09;-CSDN博客 Nginx入门到精通三&#xff08;Nginx实例1&#xff1a;反向代理&a…

【Django+Vue3 线上教育平台项目实战】构建高效线上教育平台之首页模块

文章目录 前言一、导航功能实现a.效果图&#xff1a;b.后端代码c.前端代码 二、轮播图功能实现a.效果图b.后端代码c.前端代码 三、标签栏功能实现a.效果图b.后端代码c.前端代码 四、侧边栏功能实现1.整体效果图2.侧边栏功能实现a.效果图b.后端代码c.前端代码 3.侧边栏展示分类及…

springboot1——快速构建项目

需求 第一步&#xff1a;创建maven工程(非web项目) 第二步&#xff1a;导入起步依赖 点击&#xff1a; 下拉复制&#xff1a; 粘贴&#xff1a;&#xff01;&#xff01;这是springboot工程需要继承的父工程 下拉复制&#xff1a; 粘贴&#xff1a;&#xff01;&#xf…

android13 文件管理器无法安装apk 奔溃问题

总纲 android13 rom 开发总纲说明 目录 1.前言 2.我们简单写个apk测试下 3.排查客户apk 4.frameworks源码排查 5.编译验证 6.彩蛋 1.前言 客户提供的文件管理apk不能安装apk文件,一点击就奔溃。 2.我们简单写个apk测试下 private void installApk(File apkFile) {i…

将swagger注解导入apifox的IDEA配置

在使用IDEA开发中&#xff0c;经常需要将后端接口导出到Apifox&#xff0c;以便于测试。将swagger注解内容导出到Apifox中&#xff0c;需要进行以下设置: file->settting打开对话框&#xff0c;选择Other Settings -> Apifox Help&#xff0c;如下图&#xff1a; 2.选…

【JavaWeb程序设计】Servlet(二)

目录 一、改进上一篇博客Servlet&#xff08;一&#xff09;的第一题 1. 运行截图 2. 建表 3. 实体类 4. JSP页面 4.1 login.jsp 4.2 loginSuccess.jsp 4.3 loginFail.jsp 5. mybatis-config.xml 6. 工具类&#xff1a;创建SqlSessionFactory实例&#xff0c;进行 My…

Twelve Labs:专注视频理解,像人类一样理解视频内容

在当今数字化世界中&#xff0c;视频已成为人们获取信息和娱乐的主要方式之一。 AI视频生成领域的竞争也很激烈&#xff0c;Pika、Sora、Luma AI以及国内的可灵等&#xff0c;多模态、视频生成甚至也被视为大模型发展的某种必经之路。然而&#xff0c;与文本生成相比&#xff…

什么ISP?什么是IAP?

做单片机开发的工程师经常会听到两个词&#xff1a;ISP和IAP&#xff0c;但新手往往对这两个概念不是很清楚&#xff0c;今天就来和大家聊聊什么是ISP&#xff0c;什么是IAP&#xff1f; 一、ISP ISP的全称是&#xff1a;In System Programming&#xff0c;即在系统编程&…