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

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

相关文章:

  • Pytest-Bdd-Playwright 系列教程(9):datatable 参数的使用
  • 【Linux】HTTP协议和HTTPS加密
  • NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备:大华IPC摄像头局域网访问异常解决办法
  • Linux——GPIO输入输出裸机实验
  • Bugku CTF_Web——点login咋没反应
  • Ubuntu 的 ROS 操作系统安装与测试
  • promise时效架构升级方案的实施及落地 | 京东物流技术团队
  • 【Go入门】 Go搭建一个Web服务器
  • 340条样本就能让GPT-4崩溃,输出有害内容高达95%?OpenAI的安全防护措施再次失效
  • 电路的基本原理
  • DeepStream--测试resnet50分类模型
  • 大数据-玩转数据-Centos7 升级JDK11
  • Flink之KeyedState
  • R语言——taxize(第二部分)
  • 036、目标检测-锚框
  • 集合的运算
  • uni-app下,页面跳转后wacth持续监听的问题处理
  • LeetCode:689. 三个无重叠子数组的最大和(dp C++)
  • Java基础- StringBuilder StringBuffer
  • Android图片涂鸦,Kotlin(1)
  • k8s_base
  • 物联网AI MicroPython学习之语法 I2C总线
  • 基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(五)
  • 随机过程-张灏
  • java springboot 在测试类中声明临时Bean对象
  • 15. Spring源码篇之获取方法参数名