【Linux学习笔记】代码编辑工具vim

    • 1. vim工具基本模式的转换
    • 2. vim命令模式下的各种编辑命令
      • 2.1. 光标行定位
      • 2.2. 光标自由定位
      • 2.3. 复制粘贴
      • 2.4. 删除
      • 2.5. 文本的大小写替换
      • 2.6. 文本的替换
      • 2.7. 文本的前删后删
      • 2.8. 撤销操作
    • 3. vim底行模式下的命令
      • 3.1. 设置行号与取消设置行号
      • 3.2. 分屏操作
      • 3.3. 在不退出vim的情况下执行Linux命令
      • 3.4. 字符串替换
    • 4. vim的配置文件

vim是Linux系统下的一个功能强大,多模式的编辑器。如果要拿Windows中的一个编辑器类比,那就是记事本。

1. vim工具基本模式的转换

简单的介绍一下vim的使用,如图所示:

img

img

img

img

三种模式的相互转换图:

img

2. vim命令模式下的各种编辑命令

2.1. 光标行定位

1. 行右定位

命令:shift + 4(连按,4是键盘上面的4,不是小键盘的数字4)

功能:把光标所在位置直接定位到所在行的最右边。

示范:

img

现在我进行定位操作,将光标定位改行的最右端。

img

2. 行左定位

命令:shift + 6(连按,6是键盘上面的6,不是小键盘的数字6)

功能:把光标所在位置直接定位到所在行的最左边。

示范:

img

现在我在命令模式下,输入指令shift + 6,即可将光标定位到该行的最左端。

img

3. 顶部定位

命令:gg(连按)

功能:把光标所在位置直接定位到最顶部。

示范:

img

在命令模式下,输入指令gg,即可将光标定位到最顶部。

img

4. 底部定位

命令:shift + g(连按)

功能:把光标所在位置直接定位到最底部。

示范:

img

在命令模式下,输入指令shift + g,即可将光标定位到最底部。

img

5. 任意行定位

在底行模式下输入指令 set nu 即可显示现在文本的行数。

命令:n + shift + g(n代表的是具体的数字)

功能:将光标定位到第n行的位置

示范:

img

在命令模式下,输入1 + shift + g,即可将光标定位到第1行。

img

2.2. 光标自由定位

上面讲了光标的行定位,可以把光标定位到任意行的位置。

接下来讲一讲光标上下左右的自由定位。需要用到的是 h j k l 四个字母。

  1. h代表的是光标向左移动1位。
  2. j代表的是光标向下移动1位。
  3. k代表的是光标向上移动1位。
  4. l代表的是光标向右移动1位。

记忆小技巧:

看到键盘上的4个字母的位置。

  • h在最左边,可以认为向左移动。
  • j可以认为是jump的单词的缩写首字母,向下跳就是向下移动。
  • k对应的不是最右边,向下和向上的功能也有了,自然就是向上移动咯。
  • l在最右边,可以认为向右移动。

具体的操作就不做示范了,感兴趣的可以自行尝试一下。

另外的,光标还有其他的定位方式。

1. 按照单词向前定位

指令:w

功能:向后按照单词定位

示范:略

2. 按照单词向后定位

指令:b

功能:向前按照单词定位

示范:略

2.3. 复制粘贴

1. 复制

指令:yy

功能:针对光标所在行进行复制

示范:

img

img

2. 粘贴

指令:p

功能: 将复制的文本进行粘贴

示范:如上图。

其中yy(复制) 和 p(粘贴)支持 nyy 和 np操作(n代表的是具体的数字)。

  1. 10yy代表的是从光标所在行开始数10行进行文本的复制
  2. 10p代表的是将文本内容复制10次。

具体的操作就不做演示了,有兴趣的可以自行尝试!

2.4. 删除

命令:dd

功能:针对光标所在行的内容进行删除

示范:

img

输入删除命令,会把光标所在行的内容删除。

img

其中ndd(n代表的是一个具体的数字),指定删除从光标所在行开始删除n行的内容。

搭配上复制命令(p),可以形成剪切的效果。

img

我输入 3dd,然后将光标移动到最底部,看看效果。

img

另外的,还有按照单词删除的命令。

命令:cw

功能:按照单词进行删除

示范:

img

img

删除后,会自动进入插入模式。另外cw也支持cnw操作,具体的含义就是删除n个单词。

2.5. 文本的大小写替换

命令:shift + ~

功能:将光标所在行的内容逐个进行大小写的替换,如果是大写,则换成小写,如果是小写,则换成大写。

示范:

img

输入命令shift + ~后,看看效果。

img

2.6. 文本的替换

  1. 批量化替换

指令:shift + r

功能:进入替换模式。

示范:

img

img

2. 逐个替换

指令:r

功能:将光标选中的一个内容进行替换

示范:

img

按1下r,然后输入你想要更换的字符。

img

2.7. 文本的前删后删

  1. 前删

命令:shift + x

功能:从光标开始,逐个删除光标前的内容(不包括光标)

示范:

img

输入指令shift + x

img

2. 后删

命令:x

功能:从光标开始,逐个删除光标后的内容(包括光标)

示范:

img

输入指令x

img

2.8. 撤销操作

1. 撤销操作

指令:u

功能:将刚才所做的操作撤销,类似Windows系统下的crtl + z

示范:

img

操作完成后,我再按u撤销刚才的dd操作。

img

img

2. 取消撤销操作

指令:crtl + r

功能:取消撤销操作,类似Windows系统下的crtl + y

示范:略

3. vim底行模式下的命令

3.1. 设置行号与取消设置行号

1. 设置行号

命令:set nu

功能:对当前文本进行行号的显示。

示范:

img

img

2. 取消设置行号

指令: set nonu

功能:取消当前文本的行号显示

示范:

img

3.2. 分屏操作

命令: vs + 文件名

功能:把想要分屏的文件与当前文件进行分屏编写。

示范:

img

注意!光标在哪个文件显示,就说明你当前选中了哪个文件!

当你选中了光标所在的文件,进行的所有操作都是在该文件下操作的,不会影响另一个文件。

如果你想更换文件的选择,只需要当前文件的命令模式下,输入crtl + ww即可完成光标跳转到另一个文件的操作。

3.3. 在不退出vim的情况下执行Linux命令

进入到了vim工具,如果你想查询相关的手册,按照一贯的思维是要退出vim工具的。

但是如果在vim工具下,进入到底行模式,输入! + 相应的Linux命令,即可在不退出vim工具的情况下执行相关的Linux命令。

示范:

img

img

按ENTER重新进入vim工具。

img

3.4. 字符串替换

指令:%s/字符串1/字符串2/g

功能:按照上面的指令,就是讲字符串2换成字符串1。

示范:

img

img

4. vim的配置文件

从下载开始到使用,vim工具用起来就像个记事本一样,命令很多,而且写代码也不太方便。

这是因为这是vim的最初模样,你可以根据你自己的喜好去配置你的vim,让你的vim用起来更得心应手。

下面来说说vim的配置。

  1. 首先在用户的家目录下创建一个.vimrc文件用以配置vim.

img

  1. 上网搜索各种vim的配置

例如像这样的

img

都可以加到.vimrc文件中去,用以配置你的vim。

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

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

相关文章

安防视频监控平台EasyCVR出现视频流播放卡顿情况,如何优化?

视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能/大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼…

【MultiOTP】Docker安裝MultiOTP, 让Windows登入更安全(MFA)

序 在当前数字时代,网络安全成为了一个非常重要的话题。随着越来越多的人和组织依赖于计算机系统来进行工作和存储敏感信息,确保身份验证安全变得至关重要。双因素身份验证(2FA)是一种强大的安全措施,可在传统的用户名…

TDengine 资深研发整理:基于 SpringBoot 多语言实现 API 返回消息国际化

作为一款在 Java 开发社区中广受欢迎的技术框架,SpringBoot 在开发者和企业的具体实践中应用广泛。具体来说,它是一个用于构建基于 Java 的 Web 应用程序和微服务的框架,通过简化开发流程、提供约定大于配置的原则以及集成大量常用库和组件&a…

【OpenVINO】OpenVINO C# API 常用 API 详解与演示

OpenVINO C# API 常用 API 详解与演示 1 安装OpenVINO C# API2 导入程序集 3 初始化OpenVINO 运行时内核4 加载并获取模型信息4.1 加载模型4.2 获取模型信息 5 编译模型并创建推理请求6 张量Tensor6.1 张量的获取与设置6.2 张量的信息获取与设置 7 加载推理数据7.1 获取输入张量…

ChatGPT在测试计划中的应用策略

简介 测试计划是指描述了要进行的测试活动的范围、方法、资源和进度的文档。它主要包括测试项、被测特性、测试任务和风险控制等。 所以在使用ChatGPT输出结果之前,我们需要先将文档的内容框架梳理好,以及将内容范围划定好,必要的时候&#x…

【Hello Algorithm】暴力递归到动态规划(三)

暴力递归到动态规划(三) 最长公共子序列递归版本动态规划 最长回文串子序列方法一方法二递归版本动态规划 象棋问题递归版本动态规划 咖啡机问题递归版本动态规划 最长公共子序列 这是leetcode上的一道原题 题目连接如下 最长公共子序列 题目描述如下…

【Golang】grpc环境踩的坑

关于’protoc-gen-go’ 不是内部或外部命令 这个问题的出现是因为没有这个文件导致的 这个文件要通过我们下载的google.golang.org这个文件编译生成的 这里建议下载google提供的grpc包 protobuf的源码: git clone https://github.com/golang/protobuf 下载好之后进…

MATLAB——RBF、GRNN和PNN神经网络案例参考程序

欢迎关注“电击小子程高兴的MATLAB小屋” GRNN_PNN程序 %% I. 清空环境变量 clear all clc %% II. 训练集/测试集产生 %% % 1. 导入数据 load iris_data.mat %% % 2 随机产生训练集和测试集 P_train []; T_train []; P_test []; T_test []; for i 1:3 temp_input …

Spring框架

文章目录 Spring 框架1 概述2 IOC3 Bean管理3.1 XML配置方式3.2 Java注解方式3.3 Java代码方式3.4 对象之间调用示例3.5 自动装配 4 单例和多例4.1 单例(Singleton)4.2 多例(Prototype) 5 生命周期6 注解管理Bean6.1 Component、S…

【数据可视化】—大屏数据可视化展示

【数据可视化】—大屏数据可视化展示 一、数据可视化 数据可视化的目的:借助于图形化工具,清晰有效的传达与沟通信息。 数据可视化可以把数据从冰冷的数字转换成图形,揭示蕴含在数据中的规律和道理。 二、 免费数据可视化库 Echarts 百度…

stable-diffusion-webui sdxl模型代码分析

采样器这块基本都是用的k-diffusion,模型用的是stability的原生项目generative-models中的sgm,这点和fooocus不同,fooocus底层依赖comfyui中的models,comfy是用load_state_dict的方式解析的,用的load_checkpoint_guess…

【从零开始学习Redis | 第三篇】在Java中操作Redis

前言: 本文算是一期番外,介绍一下如何在Java中使用Reids ,而其实基于Java我们有很多的开源框架可以用来操作redis,而我们今天选择介绍的是其中比较常用的一款:Spring Data Redis 目录 前言: Spring Data…