vim指令

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c++,Python等
> 座右铭:松树千年终是朽,槿花一日自为荣。

> 目标:熟练掌握vim,并且能用vim敲出简单的代码。

> 毒鸡汤:一万个美丽的未来,抵不上一个温暖的现在,每一个真实的现在,都是我们曾经幻想的未来,愿你爱上现在,梦见未来。
> 望小伙伴们点赞👍收藏✨加关注哟💕💕 

🌟前言

        前面捏,我们能使用Linux命令,简单的写一个程序,输出了hello Linux,只能说浅谈,本期我们在前面基础的延续,来正式续写Linux代码,Linux路正式启程,大家准备好编译器和小本本,OK,走起!!!

主体

        咱们从七大板块学习,vim编辑器,vim四种模式的关系,vim编辑器的使用,编辑模式,vim编辑器实用功能,简单vim配置。



 🌙vim编辑器

        vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。

在我们的编辑器中(Xshell)中默认已经帮我安装好vim

 💫vim编译器的安装

        在有些编译器中是没有安装vim的,像这种编译器是比较古老的,不要也罢,我建议大家安装Xshell用起来比较爽,当然也可以用其他编译器,咱们看看如何安装vim:

# 安装vim
# yum install vim -y

大家可以安装看看

 💫vim编译器的三种模式

我们讲解vim的三种模式(其实有好多模式,目前掌握这3种即可),分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

  • 正常/普通/命令模式(Normal mode):

        控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者last line mode

  • 插入模式(Insert mode):

        只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

  • 末行模式(last line mode):

        文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes

 🌙vim三种模式关系

咱们用一个图就可以很好解释他们之间的关系:



 🌙vim编辑器的使用

💫使用vim打开文件

基本语法:

  •  如果文件已存在,则直接打开
  •  如果文件不存在,则vim编辑器会自动在内存中创建一个新文件

案例:使用vim命令打开demo1.c文件

💫vim编辑器保存文件

        在任何模式下,连续按两次Esc键,即可返回到命令模式。然后按冒号:,进入到末行模式,输入wq,代表保存并退出。

💫vim编辑器强制退出

        在任何模式下,连续按两次Esc键,即可返回到命令模式。然后按冒号:,进入到末行模式,输入q!,代表强制退出但是不保存文件。

这样的输入,是不保存文件的写的内容的,不建议!!!

💫命令模式下的相关操作
        在Linux操作系统中,当我们使用vim命令直接打开某个文件时,默认进入的就是命令模式。如果我们处于其他模式(编辑模式、可视化模式以及末行模式)可以连续按两次Esc键也可以返回命令模式,简称无脑Esc就可以到命令模式

在命令模式我们可以以下内容
① 移动光标 ② 复制 粘贴 ③ 剪切 粘贴 删除 ④ 撤销与恢复

咱就一个一个来讲解

💤移动光标到首行或末行

这里我们都是在命令模式下执行的,不要忘记咯🥱

  • 移动光标到首行 : gg
  • 移动光标到末行 : G
💤翻屏

这里我们都是在命令模式下执行的,不要忘记咯🥱

  • 向上翻屏,按键:ctrl + b (before) 或 PgUp
  • 向下翻屏,按键:ctrl + f (after) 或 PgDn
  • 向上翻半屏,按键:ctrl + u (up)
  • 向下翻半屏,按键:ctrl + d (down)
💤快速定位光标到指定行

这里我们都是在命令模式下执行的,不要忘记咯🥱

  • 行号 + G,如(100 + G)代表快速移动光标到第100行。
💤复制/粘贴

这里我们都是在命令模式下执行的,不要忘记咯🥱

① 复制当前行(光标所在那一行)

按键:yy

粘贴:在想要粘贴的地方按下p 键【将粘贴在光标所在行的下一行】,如果想粘贴在光标所在行之前,则使用P键

② 从当前行开始复制指定的行数,如复制 10 行,10 + yy

粘贴:在想要粘贴的地方按下p 键【将粘贴在光标所在行的下一行】,如果想粘贴在光标所在行之前,则使用P键

上述简称Ctrl CV,这个可得好好学,咱们都是CV工程师

💤剪切/删除

在vim编辑器中,剪切与删除都是dd

  • 如果剪切了文件,但是没有使用p进行粘贴,就是删除操作
  • 如果剪切了文件,然后使用p进行粘贴,这就是剪切操作

① 剪切/删除当前光标所在行

        按键:dd (删除之后下一行上移)

        粘贴:p

② 剪切/删除多行(从当前光标所在行开始计算)        

        按键:dd (删除之后下一行上移)

        粘贴:p

③ 剪切/删除光标所在的当前行(光标所在位置)之后的内容,但是删除之后下一行不上移

按键:D(Shift + d) (删除之后当前行会变成空白行)

💤撤销/恢复

撤销:u(undo)

恢复:ctrl + r 恢复(取消)之前的撤销操作【重做,redo】

💫底行模式下的相关操作

底行模式先进入命令模式(无脑Esc),然后Shift + ;,前面的图解已经介绍咯!

在这个模式我们可以:文件保存、退出、查找与替换、显示行号、paste模式.....

底行模式咱们就看看就行,主要是咱们的命令模式

💤保存/退出
  • :w   代表对当前文件进行保存操作,但是其保存完成后,并没有退出这个文件
  • :q   代表退出当前正在编辑的文件,但是一定要注意,文件必须先保存,然后才能退出
  • :wq 代表文件先保存后退出(保存并退出)
  • q!    代表强制退出但是文件未保存(不建议使用)
💤文件内容的替换

文件内容的替换可是在底行模式,咱们再看看这张图片叭

只替换光标所在这一行的第一个满足条件的结果(只能替换1次)

:s/要替换的关键词/替换后的关键词 + 回车

案例:把第一行的#include<string.h> 换成 include<stdio.h>

💤显示/取消行号

显示行号:

:set nu

取消行号:

:set nonu

  🌙编辑模式

其实这里就没啥指令,它的功能就是写代码。还是看这张图解:

  🌙vim编辑器的实用功能(了解)

        之前说过vim 是vi 的升级版本,其中比较典型的区别就是vim 更加适合coding,因为vim比vi 多一个代码着色的功能,这个功能主要是为程序员提供编程语言升的语法显示效果,如下:

第一步:定义后缀名为网页文件的代码文件

# vim index.php
第二步:编写对应的PHP代码

<?php
    echo 'hello world';
?>

在vim编辑器中,我们可以通过:syntax on或:syntax off开启或关闭代码着色功能。

  🌙简单vim的配置

用户配置:用户配置文件.vimrc由用户自己创建,存放于用户根目录下。

如果大家没有这个文件的就touch .vimrc

咱们用下面的指令可以编辑咱们的vimrc

        在这里就不讲解vim的配置了,有兴趣的小伙伴,可以查看vim的配置,这里博主配置好了vim,还是挺好用到,大家可以试试😊😊😊

colorscheme desert
syntax on
filetype on
au BufRead,BufNewFile *.sv set filetype=systemverilog
au BufRead,BufNewFile *.v  set filetype=verilog

set number
set autoindent

set ts=2
set expandtab

set shiftwidth=4
autocmd FileType make set noexpandtab
set hlsearch
set cursorline

set cursorcolumn
set guifont=Monospace\ 16
inoremap ( ()<Esc>i
inoremap { {}<Esc>i
inoremap [ []<Esc>i
inoremap " ""<Esc>i

source ~/.vim/user/alias.vim

🌟结束语

       今天内容就到这里啦,时间过得很快,大家沉下心来好好学习,会有一定的收获的,大家多多坚持,嘻嘻,成功路上注定孤独,因为坚持的人不多。那请大家举起自己的小说手给博主一键三连,有你们的支持是我最大的动力💞💞💞,回见。

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

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

相关文章

【计算机组成原理】知识点巩固 - 存储器概述

目录 1、存储器分类 1.1、按存储介质分类 1.2、按存取方式分类 1.3、按信息的可改写性分类 1.4、按信息的可保存性分类 1.5、按功能和存取速度分类 2、存储器技术指标 2.1、存储容量 2.2、存取速度 3、存储系统层次结构 4、主存的基本结构 5、主存中数据的存放 5…

麒麟 ZYJ 服务器软件适配 参考示例

一、zyj 环境简介 1. ZYJ 概述 国产化 SMZYJ 是由国家 BM 主管部门鉴定并批准生产使用的国内自主开发的 整机 JM 国标设备&#xff0c;设备采用了自主设备基础硬件&#xff08;飞腾、国科微等&#xff09;、安全硬 件自主固件&#xff08;昆仑等&#xff09;自主 SM 专用操作…

7、传统CV之高斯滤波

这一节在上一节均值滤波的基础上,再进阶一下,了解一下什么是高斯滤波。 首先,如上一节所说,均值滤波是利用一个窗口在图片上滑动,每次都计算窗口内能看到的像素的平均值,然后将平均值作为滤波的输出,从而可以起到平滑图像、去噪点的作用。 有没有发现,此时并没有特别…

栈的实现及OJ练习(c语言)

目录 前言 栈 栈的实现&#xff08;数组栈&#xff09; 初始化栈 入栈 出栈 获取栈顶元素 获取栈中有效元素个数 检测栈是否为空 销毁栈 最终代码&#xff1a; 选择练习 栈的OJ题 前言 我们在之前已经学习了顺序表和链表的概念&#xff0c;它们有这样的优缺点&a…

4.2 Windows驱动开发:内核中进程线程与模块

内核进程线程和模块是操作系统内核中非常重要的概念。它们是操作系统的核心部分&#xff0c;用于管理系统资源和处理系统请求。在驱动安全开发中&#xff0c;理解内核进程线程和模块的概念对于编写安全的内核驱动程序至关重要。 内核进程是在操作系统内核中运行的程序。每个进…

键鼠自动化2.0展示

软件介绍&#xff1a;桌面键鼠自动化工具 Qtc 编写&#xff1a; 本软件采用Qt C编写&#xff0c;旨在提供高效、跨平台的桌面键鼠自动化解决方案。Qt C框架的选择确保了软件的稳定性、可靠性&#xff0c;并通过其图形用户界面实现了用户友好的操作体验。 鼠标移动与点击&#…

MySQL 的执行原理(一)

5.1 单表访问之索引合并 我们前边说过 MySQL 在一般情况下执行一个查询时最多只会用到单个二级 索引&#xff0c;但存在有特殊情况&#xff0c;在这些特殊情况下也可能在一个查询中使用到多个二 级索引&#xff0c;MySQL 中这种使用到多个索引来完成一次查询的执行方法称之为&…

物联网AI MicroPython学习之语法 SPI串行外设通信

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; SPI 介绍 模块功能: SPI串行外设驱动 接口说明 SPI - 构建SPI对象 函数原型&#xff1a;SPI(id, baudrate&#xff0c;polarity, phase&#xff0c;sck, mosi, miso)参数说明&#xff1a; 参数类型必选参…

webAPP基础学习

###视觉基础 part-I ####1.面试中常见的像素问题 >什么是像素? *1.什么是px? px-虚拟像素,css像素的单位 px是一个相对单位,相对于设备像素而言 >相对性 a.相对于同一个设备,css像素的可变的 css像素物理像素>会受到缩放的影响 css像素缩放倍数*单个物理像…

django理解02 前后端分离中的问题

前后端分离相对于传统方式的问题 前后端数据交换的问题跨域问题 页面js往自身程序&#xff08;django服务&#xff09;发送请求&#xff0c;这是浏览器默认接受响应 而请求其它地方是浏览器认为存在潜在危险。自动隔离请求&#xff01;&#xff01;&#xff01; 跨域问题的解决…

蓝桥杯 枚举

例题讲解 特别数的和 #include<iostream> using namespace std; bool ifspecial(int n){while(n){if(n%100||n%101||n%102||n%109){return true;} n/10;}return false; } int main(){int n;cin>>n;int sum0;for(int i1;i<n;i){if(ifspecial(i)){sumi;}}cout&l…

K-Means算法进行分类

已知数据集D中有9个数据点&#xff0c;分别是&#xff08;1,2&#xff09;&#xff0c;(2,3), (2,1), (3,1),(2,4),(3,5),(4,3),(1,5),(4,2)。采用K-Means算法进行聚类&#xff0c;k2&#xff0c;设初始中心点为&#xff08;1.1,2.2&#xff09;&#xff0c;&#xff08;2.3,3.…

LitCTF2023 - Reverse方向 全WP

文章目录 [LitCTF 2023]世界上最棒的程序员[LitCTF 2023]ez_XOR[LitCTF 2023]enbase64[LitCTF 2023]snake[LitCTF 2023]程序和人有一个能跑就行了[LitCTF 2023]debase64[LitCTF 2023]For AiurLitCTF{Pylon_OverCharge!!_We_Must_construc7_addition4l_pylons} [LitCTF 2023]世界…

【giszz笔记】产品设计标准流程【6】

目录 六、组织评审 1.评审的类型 2.评审的人员——谁参加评审 3.评审的核心——怎么提问 & 答案谁说了算 4.评审的流程——前中后三部曲 5.评审的标的——漂亮的靶子 6.避免被“烤”问的一些技巧 7.搞几次评审比较好 这个产品设计系列&#xff0c;陆陆续续写了6篇了…

JavaEE进阶(1)Java EE 简述(Java EE 发展历程、什么是Web开发? Web网站的工作流程、什么是框架?Java EE 框架学习概览)

目录 Java EE 简述 Java EE 发展历程 什么是Web开发? Web网站的工作流程 什么是框架 框架的定义 源于建筑行业的类比 框架的作用 Java EE 框架学习概览 1. Spring 2. Spring Boot 3. Spring MVC 4. Mybatis 框架之间的关系 Java EE 简述 Java EE是Java平台的企…

C#实现观察者模式

观察者模式是一种软件设计模式&#xff0c;当一个对象的状态发生变化时&#xff0c;其所有依赖者都会自动得到通知。 观察者模式也被称为“发布-订阅”模式&#xff0c;它定义了对象之间的一对多的依赖性&#xff0c;当一个对象状态改变时&#xff0c;所有依赖于它的对象都会得…

IO多路转接之select和poll

目录 一. IO多路转接的概念 二. 通过select实现IO多路转接 2.1 select接口 2.2 Select服务器的实现 2.3 select实现IO多路转接的优缺点 三. 通过poll实现IO多路转接 3.1 poll接口 3.2 Poll服务器的实现 3.3 poll实现IO多路转接的优缺点 四. 总结 一. IO多路转接的概念…

Python uiautomation获取微信内容!聊天记录、聊天列表、全都可获取

Python uiautomation 是一个用于自动化 GUI 测试和操作的库&#xff0c;它可以模拟用户操作来执行各种任务。 通过这个库&#xff0c;可以使用Python脚本模拟人工点击&#xff0c;人工操作界面。本文使用 Python uiautomation 进行微信电脑版的操作。 以下是本次实验的版本号。…

C语言从入门到精通之【其他运算符】

sizeof运算符和size_t sizeof运算符以字节为单位返回运算对象的大小。 例如 &#xff1a;sizeof(int) 打印转换说明&#xff0c;使用C99新增的**%zd转换说明 – 如果编译器不支持%zd&#xff0c;请将其改 成%u或%lu**。 C 语言规定&#xff0c;sizeof 返回 size_t 类型的值…

安装银河麒麟linux系统docker(docker-compose)环境,注意事项(一定能解决,有环境资源)

1:安装docker环境必须使用麒麟的版本如下 2:使用docker-compse up -d启动容器遇到的文件 故障1:如果运行docker-compose up 报“Cannot create redo log files because data files are corrupt or the database was not shut down cleanly after creating the data files”…