超越编辑器的边界:掌握 Vs Code + Vim 最强操作技巧

看完这篇文章,从此刻开始你将成为一名真正的 “键盘侠”

作为程序员我们知道,当我们编写代码的时候频繁的操作鼠标是一件非常费劲的一件事,我们的很多时间都会浪费到去使用鼠标定位光标选中文本等等,要知道使用快捷键肯定是比我们使用鼠标操作来的效率更高,包括博主本人也经常来回的在鼠标和键盘上来回切换。

为此我写下这篇文章就是监督自己摆脱鼠标的控制,编写代码全程不用鼠标只用键盘来操作,坚持下去让习惯形成自己的肌肉记忆,我相信编码的效率一定会大大提高(主要也很帅),当然这篇文章不只是讲解 vim ,也会参杂一些提高编码效率的相关插件操作,勉励自己也鼓励你们!!!

目录

vim插件使用

vim插件安装配置

vim模式讲解

相关拓展


vim插件使用

Vim(全称为Vi IMproved)是一款文本编辑器,也被视为一种文本编辑工具。它是从另一款编辑器 Vi(Visual)发展而来的,并在功能和性能上进行了增强和改进。其在程序员中非常受欢迎,因为它提供了大量的功能和快捷键,可以提高编辑和操作文本的效率。以下是其相关特定:

模态编辑

vim 是一个模态编辑器,有多个模式(Normal、Insert、Visual、Command 等)。每个模式下,按键的功能不同,使得编辑过程更加高效。

快速移动和导航

vim 提供了丰富的快捷键和命令,可以快速在文档中移动、跳转和搜索,例如使用 h、j、k、l 进行左、下、上、右的移动,或者使用 / 进行正向搜索。

强大的编辑功能

vim支持各种编辑操作,包括复制、粘贴、删除、替换、撤销等。它还提供了一些高级操作,如宏录制和批量编辑。

插件和定制

vim具有广泛的插件系统,可以根据个人需求进行扩展和定制。这使得编程环境可以根据用户的喜好和需求进行个性化配置。

尽管初学者可能需要一些时间来适应 Vim 的工作流程和快捷键,但一旦熟悉和掌握了 Vim,它将成为一个高效而强大的编辑工具,最终也是摆脱不了 “真香定律”。

vim插件安装配置

首先打开vscode编辑器的插件菜单,在搜索框输入vim,找到第一个插件Vim进行下载即可,当然我这里是以及下载好的,大家第一次使用直接下载即可:

这里注意一下,如果你的Windows用户的话安装这个插件直接使用即可如果你的Mac用户的话需要安装该插件给你的细节进行相应的操作,这里简单的提一下:

如果不知道如何打开setting.json文件,可以 Ctrl + shift + p 打开命令面板输入setting.json即可:

vim模式讲解

Vim 模式是指 Vim 编辑器中的不同工作模式或编辑模式。Vim 模式分为多个模式,每个模式下按键的功能和行为不同。只有通过vim和操作符+动作的配合才能产高效:

普通模式(Normal):Normal模式是默认的启动模式,用于导航、执行命令和编辑操作。在Normal 模式下,按键被解释为命令或快捷键,而不是直接输入文本。你可以使用 Normal 模式下的命令来移动光标、删除、粘贴等。

接下来将简单讲解一下在普通模式下光标的移动操作

在普通模式下进行上下左右的操作是,这里有一个技巧就是,记住按键j在键盘突起的位置就是向下箭头。h在最左边就向左移动;l在最右边就向右移动。

这里描述了在普通模式下如何在一个单词中进行快速跳转

这里描述了在普通模式下如何在整体单词句子中进行快速的跳转

这里描述了在普通模式下如何快速查找字符的位置,可以大家这里会有点懵,我这里出一个动态图进行一个相应的简单展示的效果吧。

这里也描述了在普通模式下如何进行删改复制操作:

比如说你想删除:进入普通模式点击d键选中当前的单词在按下d键就直接进行删除

比如说你想修改:进入普通模式点击c键进行编辑,编辑当前单词选择iw,编辑整条句子c

比如说你想复制:进入普通模式点击y键进行复制操作,在点击y和p键进行向下复制

如果想切换大小写的话可以采用下面的方式:

为了加深自己的理解,给出如下案例:

// 修改字符串 -- ciw
const str = 'HelloWorld'// 修改泛型或删除泛型 -- ci<(修改) 或 di<(删除) 或 da<(删除)
const count = ref<number>(0)// 删除括号中的内容 -- di( 或 dib
console.log('foo')// 删除或修改数组里的内容 -- di[ 或 ci[
const arr = [1,2,3,4,5]// 删除或修改模板字符串的内容 -- di` 或 ci`
const templateString = `foo${arr}`// 删除2行 -- 2dd
const a = 11
const b = 22// 删除template标准里面的所有内容 -- dit 或 cit
<template><Suspense><Count></Count></Suspense>
</template>

当然还有一些小Tis:

查看函数底层的细节:gd

切换标签页:gt(往后切换标签页)、gT(往前切换标签页)、2gt(加上数字代码往第几个跳)

切换到文件选择:crtl+0

在拆分窗口的情况下进行窗口切换:crtl + 1(切换到第一个窗口)

当然如果想设置快捷键打开终端的话,需要对settings.json进行如下配置:这个可以自定义配置,当我输入2t的时候就会自动打开终端被聚焦,输入完命令之后然后可以crtl+1进入到第一个页面

  "vim.normalModeKeyBindingsNonRecursive":[{"before":["2","t"],"commands":["workbench.action.terminal.focus"]},   ],

插入模式(Insert):用于直接输入文本。在Normal模式下,按下i或I、a或A、o或O等键即可进Insert模式。在Insert模式下,你可以像在普通编辑器中一样,直接键入文本内容。

可视模式(Visual):用于选择或高亮文本。你可以使用各种命令和操作来选择、复制、删除、修改选定的文本。Visual 模式有多个子模式,如字符选择模式、行选择模式和块选择模式。

命令模式(Command-line):用于执行 Ex 命令,例如保存文件、查找替换、设置配置选项等。在Normal模式下,按下冒号 : 即可进入 Command-line 模式,然后输入相应的命令并按下回车键执行。

Vim 的模式切换非常灵活,可以根据需要快速切换不同的模式以进行不同的操作。例如,你可以从 Normal 模式切换到 Insert 模式来输入文本,然后再切换回 Normal 模式执行其他命令。

相关拓展

在谷歌浏览器当中有一款插件和vim类似,也是通过快捷键的方式来操作页面,如下:

下载这款插件之后,当我们进行浏览网页的时候,就不再需要使用鼠标进行操作了,一张键盘足以,当然我们安装这个插件之后,该插件有一个操作说明书,里面记载着快捷键的使用方法,如下

在谷歌浏览器打出问号就会弹出这个框,里面讲解着快捷键的说明

快捷键的作用和我们在vscode中使用到的几乎差不多,当你灵活使用了vim之后,再使用这个插件就会感觉到浏览网页是如此的丝滑。

本篇文章仅仅是简单的介绍了一下关于vim的说明和一些简单的使用,如果这篇文章的浏览量破500的话,博主会继续深入讲解vim具体的操作

抛弃鼠标,成为真正的键盘侠!!!

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

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

相关文章

学生信息管理系统MIS(前端)

改造HTML文件 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>学生信息管理系统MIS</title><!-- link在HTML文件中,引入外部的css文件 rel的值是固定写法,stylesheet样式表href用来指定样式表的位置--><lin…

volatile 关键字 与 CPU cache line 的效率问题

分析&回答 Cache Line可以简单的理解为CPU Cache中的最小缓存单位。目前主流的CPU Cache的Cache Line大小都是64Bytes。假设我们有一个512字节的一级缓存&#xff0c;那么按照64B的缓存单位大小来算&#xff0c;这个一级缓存所能存放的缓存个数就是512/64 8个。具体参见下…

jmeter单接口和多接口测试

最近接触到了多接口串联&#xff0c;接口串联的技术会在其他帖子有说明&#xff0c;其核心技术点就是通过正则表达式和变量来实现接口的关联。目前为止呢笔者用到的地方还只有一个&#xff0c;就是关于session保持的时候。但是看到很多资料都说测试过程中经常遇到b接口需要用a接…

微信小程序地图应用总结版

1.应用场景&#xff1a;展示公司位置&#xff0c;并打开第三方app&#xff08;高德&#xff0c;腾讯&#xff09;导航到目标位置。 &#xff08;1&#xff09;展示位置地图 uniapp官网提供了相关组件&#xff0c;uniapp-map组件 具体用法&#xff1a; html结构 <map sty…

Docker 容器学习笔记

Docker 容器学习笔记 容器的由来 早先&#xff0c;虚拟机通过操作系统实现相互隔离&#xff0c;保证应用程序在运行时相互独立&#xff0c;避免相互干扰。但是操作系统又笨又重&#xff0c;耗费资源严重&#xff1a; 容器技术只隔离应用程序的运行时环境但容器之间共享同一个…

【git】从一个git仓库迁移到另外一个git仓库

在远端服务器创建一个新的仓库 用界面创建&#xff0c;当然也可以用命令创建 拉去源仓库 git clone --bare git192.168.10.10:java/common.gitgit clone --bare <旧仓库地址>拉去成功以后会出现 进入到文件夹内部 出现下面信息&#xff1a; 推送到新的远端仓库 git …

Java从入门到精通-流程控制(一)

流程控制 1.复合语句 复合语句&#xff0c;也称为代码块&#xff0c;是一组Java语句&#xff0c;用大括号 {} 括起来&#xff0c;它们可以被视为单个语句。复合语句通常用于以下情况&#xff1a; - 在控制结构&#xff08;如条件语句和循环&#xff09;中包含多个语句。 - …

ROS机器人编程---------(二)ROS中的核心概念

ROS机器人编程 ROS中的核心概念 ROS的通信机制 在ROS中结点是最小单元&#xff0c;比如说机器人的遥控器可以作为一个控制结点&#xff0c;机器人上的摄像头也可以看作一个结点&#xff0c;ROS通过协调各个结点来实现 在启动任何ROS结点之前&#xff0c;都必须先启动ROS Mas…

Upload-labs 1~15 通关详细教程

文章目录 Upload-labs 1~15 通关详细教程Pass-01-前端js验证Pass-02-后端MIME验证Pass-03-黑名单验证Pass-04-黑名单验证.htaccessPass-05-文件后缀名大小写绕过Pass-06-文件后缀名空格绕过Pass-07-文件后缀名点绕过Pass-08-文件后缀名::$DATA绕过Pass-09-点空格点空格绕过Pass…

【小沐学Unity3d】3ds Max 骨骼动画制作(CAT、Character Studio、Biped、骨骼对象)

文章目录 1、简介2、 CAT2.1 加载 CATRig 预设库2.2 从头开始创建 CATRig 3、character studio3.1 基本描述3.2 Biped3.3 Physique 4、骨骼系统4.1 创建方法4.2 简单示例 结语 1、简介 官网地址&#xff1a; https://help.autodesk.com/view/3DSMAX/2018/CHS https://help.aut…

R语言nlme、nlmer、lme4用(非)线性混合模型non-linear mixed model分析藻类数据实例...

原文链接&#xff1a;http://tecdat.cn/?p23426 混合线性模型&#xff0c;又名多层线性模型(Hierarchical linear model)。它比较适合处理嵌套设计(nested)的实验和调查研究数据&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 相关视频 序言 此外&#xff0…

使用Python进行Base64编码和解码

假设您有一个想要通过网络传输的二进制图像文件。您很惊讶对方没有正确接收该文件 - 该文件只是包含奇怪的字符&#xff01; 嗯&#xff0c;您似乎试图以原始位和字节格式发送文件&#xff0c;而所使用的媒体是为流文本而设计的。 避免此类问题的解决方法是什么&#xff1f;答…

【Vue3】组件递归

【Vue3】组件递归 实现效果 通过传入一个数字&#xff0c;实现数字次循环 父组件 <script setup> import { ref } from "vue"; import RecursionMe from "./components/RecursionMe/index.vue";const level ref(0);const add () > level.val…

接口自动化测试 —— JMeter断言基本使用

断言 断言&#xff1a;就是让程序判断预期结果和实际结果是否一致 注意&#xff1a;请求发起成功了&#xff0c;不代表着一定符合预期的结果。 JMeter中常用断言 响应断言 JSON断言 持续时间断言 响应断言 步骤&#xff1a;&#xff1a;线程组——HTTP取样器——断言——…

解决springboot项目中的groupId、package或路径的混淆问题

对于像我一样喜欢跳跃着学习的聪明人来说&#xff0c;肯定要学springboot&#xff0c;什么sevlet、maven、java基础&#xff0c;都太老土了&#xff0c;用不到就不学。所以古代的聪明人有句话叫“书到用时方恨少”&#xff0c;测试开源项目时&#xff0c;编译总是报错&#xff…

Linux-Centos7安装Docker

文章目录 一、前言二、Docker安装1、Docker及系统版本2、Docker的自动化安装3、Docker手动安装3.1、卸载Docker&#xff08;可选&#xff09;3.2、设置源仓库3.3、Docker安装3.4、Docker启动3.5、验证是否安装成功3.5.1、拉取镜像3.5.2、查看镜像3.5.3、运行镜像 3.6、删除Dock…

http和https的区别?

什么是 HTTP&#xff1f; HTTP是一种互联网数据传输协议&#xff0c;用于在网络服务器和客户端之间进行数据传输。作为万维网的基础&#xff0c;HTTP协议允许网络浏览器向网络服务器发送请求&#xff0c;服务器则会返回响应。HTTP协议基于文本&#xff0c;因此传输的数据是人类…

多源最短路径算法:Floyd-Warshall算法分析

文章目录 图的邻接矩阵 一.Floyd-Warshall算法思想(基于动态规划)二.Floyd-Warshall算法接口笔记附录:单源最短路径--Bellman-Ford算法1.Bellman-Ford算法接口核心部分2.Bellman-Ford算法接口 图的邻接矩阵 namespace Graph_Structure {//Vertex是代表顶点的数据类型,Weight是…

Approaching (Almost) Any Machine Learning Problem中译版

前言 Abhishek Thakur&#xff0c;很多kaggler对他都非常熟悉&#xff0c;2017年&#xff0c;他在 Linkedin 发表了一篇名为Approaching (Almost) Any Machine Learning Problem的文章&#xff0c;介绍他建立的一个自动的机器学习框架&#xff0c;几乎可以解决任何机器学习问题…

JY901B智能9轴加速度计陀螺仪角度传感器

今日学习使用JY901B智能9轴加速度计陀螺仪角度传感器 本文会先使用上位机获取数据作演示&#xff0c;后介绍它的数据表发送原理。 文章提供详细的原理讲解&#xff0c;测试工程下载&#xff0c;代码讲解&#xff0c;本人有多注释的习惯&#xff0c;希望对大家有帮助。 我的J…