Linux -- 了解 vim

目录

vim

Linux 怎么编写代码?

了解 vim 的模式 

什么是命令模式?

命令模式下 vim 的快捷键:

光标定位:

复制粘贴:

 删除及撤销:

注释代码:

 什么是底行模式?

​编辑

​编辑

什么是插入模式?

 如何进行模式切换?

TIP:


vim

在Windows下,我们常用 vs 来编辑、编译、调试代码,而在Linux下,编辑、编译、调试代码的工具是独立的。

vim的本质是一个多模式的编辑器,只能编辑代码,但不能编译代码。

Linux 怎么编写代码?

当我们创建一个 .c 文件,想要在文件中写代码时,vim  [ 文件名 ] 就可以进行编辑代码:

 一开始进入 vim 时,为命令模式,在该模式下,按键盘无法进行写入!

 

我们需要进入编辑模式才可以输入代码,但一个没有经过配置的 vim 在输入代码时,没有语法高亮,没有括号和函数的补齐。

如果想退出 vim,按 Esc 从编辑模式回退到命令模式,再输入 :wq 就可以保存代码并退出!

 

如果我们想运行刚刚写的代码,可以 gcc [ 文件名 ] 编译代码,此时会生成一个可执行程序,./ [ 可执行程序 ] 就可以运行代码! 

 

了解 vim 的模式 

什么是命令模式?

命令模式是 vim 打开时的默认模式,在该模式下,所有的输入,都会被当做命令来看待

命令模式下 vim 的快捷键:

光标定位:

shift + $ (4) :把光标定位到当前行的最右侧结尾处

shift + ^ (6) :  把光标定位到当前行的最左侧结尾处

shift + g :把光标定位到文本的最结尾

gg :把光标定位给到文本的最开始

h:把光标左移

j:把光标下移

k:把光标上移

l:把光标右移

w:把光标移动到下一个单词的开头

b:把光标移动到前一个单词的开头

复制粘贴:

yy :复制当前行

n + yy :复制包括行在内的 n 行

p :在光标位置对复制的内容进行粘贴

n + pp :对复制的内容进行粘贴,并且粘贴 n 次! 

 删除及撤销:

u:撤销上一次的编辑

CTRL + r:对撤销进行撤销(即恢复到撤销前)

dd:删除当前行

n + dd:删除 n 行

注释代码:

批量化注释代码: 

步骤一:CTRL+v

步骤二:hjkl 进行区域选择

步骤三: shift + i

步骤四:输入 // 

步骤五:按键盘上的 Esc  

批量式取消注释:

步骤一:CTRL+v

步骤二:hjkl 进行区域选择

步骤三:输入 d

 什么是底行模式?

底行模式可以让用户在 vim 的底行输入命令

:w   : 表示保存

:q  : 表示退出

:wq  :表示保存并退出

:w!  :q!  :wq! 分别表示强制保存,强制退出,强制保存并退出。

:vs  [ 文件名 ]  :表示在同一界面下打开另一个文件,光标在哪个文件,我们就可以编辑哪个文件

CTRL+ww 就可以来回切换文件!

 : !man  [ 函数名 ] 就可以在底行模式下查看函数的功能和头文件。

查看结束后,输入 q 就可以退出手册,按照提示,按任意键就可以回到 vim 界面!

 

什么是插入模式?

插入模式下,我们可以对代码进行编辑

 如何进行模式切换?

命令模式 切换到 插入模式 :按键盘 i / a / o (常用 i)

插入模式 切换到 命令模式:按 Esc

命令模式 切换到 底行模式:shift + ;

底行模式 切换到 命令模式:按 Esc

如果忘记自己在哪个模式下,无脑按 Esc 就可以回到命令模式!

注意底行模式和插入模式无法相互切换,需要回到命令模式后,再进行切换! 

TIP:

如果在 vim 模式下不小心关掉了Xshell,或者网络突然断开(总之 vim 没有正常退出),vim 会自动保存上次编辑的文件,形成了临时文件,出现以下提示,我们只需要 输入D ,系统就会删除临时文件,下次 vim 就会正常打开,不会再次输出下面的提示了。

我们也可以在文件列表下查看临时文件,当然也可以在列表下直接删除临时文件,下次打开 vim模式也会正常打开,但是不建议这种操作!

 

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

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

相关文章

Java:111-SpringMVC的底层原理(中篇)

这里续写上一章博客(110章博客): 现在我们来学习一下高级的技术,前面的mvc知识,我们基本可以在67章博客及其后面相关的博客可以学习到,现在开始学习精髓: Spring MVC 高级技术: …

Large-Scale LiDAR Consistent Mapping usingHierarchical LiDAR Bundle Adjustment

1. 代码地址 GitHub - hku-mars/HBA: [RAL 2023] A globally consistent LiDAR map optimization module 2. 摘要 重建精确一致的大规模激光雷达点云地图对于机器人应用至关重要。现有的基于位姿图优化的解决方案,尽管它在时间方面是有效的,但不能直接…

ubuntu使用docker安装openwrt

系统:ubuntu24.04 架构:x86 1. 安装docker 1.1 离线安装 docker下载地址 根据系统版本,依次下载最新的三个关于docker的软件包 container.io(注意后缀版本顺序)docker-ce-clidocker-ce 然后再ubuntu系统中依次按顺…

【召回第一篇】召回方法综述

各个网站上找的各位大神的优秀回答,记录再此。 首先是石塔西大佬的回答:工业界推荐系统中有哪些召回策略? 万变不离其宗:用统一框架理解向量化召回前言常读我的文章的同学会注意到,我一直强调、推崇,不要…

多种策略提升线上 tensorflow 模型推理速度

前言 本文以最常见的模型 Bi-LSTM-CRF 为例,总结了在实际工作中能有效提升在 CPU/GPU 上的推理速度的若干方法,包括优化模型结构,优化超参数,使用 onnx 框架等。当然如果你有充足的 GPU ,结合以上方法提升推理速度的效…

真空衰变,真正的宇宙级灾难,它到底有多可怕?

真空衰变,真正的宇宙级灾难,它到底有多可怕? 真空衰变 真空衰变(Vacuum decay)是物理学家根据量子场论推测出的一种宇宙中可能会发生的现象,这种现象被称为真正的宇宙级灾难,它到底有多可怕呢…

前端 Vue 操作文件方法(导出下载、图片压缩、文件上传和转换)

一、前言 本文对前端 Vue 项目开发过程中,经常遇到要对文件做一些相关操作,比如:文件导出下载、文件上传、图片压缩、文件转换等一些处理方法进行归纳整理,方便后续查阅和复用。 二、具体内容 1、后端的文件导出接口,…

【报文数据流中的反压处理】

报文数据流中的反压处理 1 带存储体的反压1.1 原理图1.2 Demo 尤其是在NP芯片中,经常涉及到报文的数据流处理;为了防止数据丢失,和各模块的流水处理;因此需要到反压机制; 反压机制目前接触到的有两种:一是基…

【深度学习】目标检测,Faster-RCNN算法训练,使用mmdetection训练

文章目录 资料环境数据测试 资料 https://mmdetection.readthedocs.io/zh-cn/latest/user_guides/config.html 环境 Dockerfile ARG PYTORCH"1.9.0" ARG CUDA"11.1" ARG CUDNN"8"FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}…

使用 Scapy 库编写 TCP 劫持攻击脚本

一、介绍 TCP劫持攻击(TCP Hijacking),也称为会话劫持,是一种攻击方式,攻击者在合法用户与服务器之间的通信过程中插入或劫持数据包,从而控制通信会话。通过TCP劫持,攻击者可以获取敏感信息、执…

mysql 更改数据存储目录

先停止 mysql :sudo systemctl start/stop mysql 新建新的目录, 比如 /mnt/data/systemdata/mysql/mysql_data sudo chown -R mysql:mysql /mnt/data/sysdata/mysql/mysql_data sudo chmod -R 750 /mnt/data/sysdata/mysql/mysql_data 更改mysql.cnf…

2024高考作文-ChatGPT完成答卷,邀请大家来打分

高考,愿你脑洞大开,知识点全都扎根脑海;考试时手感倍儿棒,答题如行云流水;成绩公布时,笑容如春风拂面,心情如阳光普照!高考加油,你一定行! 新课标I卷 试题内…

“深入探讨Java中的对象拷贝:浅拷贝与深拷贝的差异与应用“

前言:在Java编程中,深拷贝(Deep Copy)与浅拷贝(Shallow Copy)是两个非常重要的概念。它们涉及到对象在内存中的复制方式,对于理解对象的引用、内存管理以及数据安全都至关重要。 ✨✨✨这里是秋…

多粒度特征融合(细粒度图像分类)

多粒度特征融合(细粒度图像分类) 摘要Abstract1. 多粒度特征融合1.1 文献摘要1.2 研究背景1.3 创新点1.4 模型方法1.4.1 Swin-Transformer1.4.2 多粒度特征融合模块1.4.3 自注意力1.4.4 通道注意力1.4.5 图卷积网络1.4.6 基于Vision-Transformer的两阶段…

Rust 实战丨SSE(Server-Sent Events)

📌 SSE(Server-Sent Events)是一种允许服务器向客户端浏览器推送信息的技术。它是 HTML5 的一部分,专门用于建立一个单向的从服务器到客户端的通信连接。SSE的使用场景非常广泛,包括实时消息推送、实时通知更新等。 S…

数据结构笔记 3 串 数组 广义表

以下了解即可,暂时没发现有什么考点 参考: 【数据结构】——多维数组和广义表_数据结构loc-CSDN博客 相对应的题目: 他这个数组不是从0开始的,是从1开始的,所以为了配合公式要减1 下面这道题又不一样,它是…

【python深度学习】——torch.einsum|torch.bmm

【python深度学习】——torch.einsum|torch.bmm 1. 基本用法与示例2. torch.bmm 1. 基本用法与示例 基本用法: torch.einsum(equation, *operands)equation: 一个字符串,定义了张量操作的模式。 使用逗号来分隔输入张量的索引,然后是一个箭头&#xff…

linux中dd命令以及如何测试读写速度

dd命令详解 dd命令是一个在Unix和类Unix系统中非常常用的命令行工具,它主要用于复制文件和转换文件数据。下面我会详细介绍一些dd命令的常见用法和功能: 基本语法 dd命令的基本语法如下: bash Copy Code dd [option]...主要选项和参数 if…

Data Mining2 复习笔记6 - Optimization Hyperparameter Tuning

6. Optimization & Hyperparameter Tuning Why Hyperparameter Tuning? Many learning algorithms for classification, regression, … Many of those have hyperparameters: k and distance function for k nearest neighbors, splitting and pruning options in decis…

力扣1712.将数组分成三个子数组的方案数

力扣1712.将数组分成三个子数组的方案数 确定左边界的值 然后二分求右边界的范围 右边界处的前缀和满足 2*s[i] < s[r] < (s[n] s[i]) / 2 int s[100010];const int N 1e97;class Solution {public:int waysToSplit(vector<int>& nums) {int n nums.siz…