Vim基础操作:常用命令、安装插件、在VS Code中使用Vim及解决Vim编辑键盘错乱

Vim模式

  1. 普通模式(Normal Mode)
    • 这是 Vim 的默认模式,用于执行文本编辑命令,如复制、粘贴、删除等。
    • 在此模式下,你可以使用各种 Vim 命令来操作文本。
  2. 插入模式(Insert Mode)
    • 在这个模式下,你可以像在普通的文本编辑器中一样输入文本。
    • 从普通模式切换到插入模式,可以使用以下命令:
      • i:在当前光标位置之前插入文本。
      • I:在当前行的开头插入文本。
      • a:在当前光标位置之后插入文本。
      • A:在当前行的末尾插入文本。
      • o:在当前行下方新开一行并进入插入模式。
      • O:在当前行上方新开一行并进入插入模式。
  3. 命令模式(Command-line Mode)
    • 在这个模式下,可以在 Vim 底部的命令行中输入命令。
    • 从普通模式切换到命令模式,只需在普通模式下输入 :
  4. 可视模式(Visual Mode)
    • 在这个模式下,你可以选择文本块并进行操作。
    • 从普通模式切换到可视模式,可以使用 v(选择字符)、V(选择行)或 Ctrl+v(选择块)。
  5. 替换模式(Replace Mode)
    • 在这个模式下,可以直接替换文本而不是插入新文本。
    • 从普通模式切换到替换模式,可以使用 R 命令。

常用Vim命令

执行这些命令前需要先按 esc键 退出插入模式。

1. 撤销与重做:`u`撤销上一次操作,`Ctrl+r`重做被撤销的操作。
2. 保存与退出:`:w`保存文件,`:q`退出Vim,`:wq`或`:x`保存并退出Vim,`:q!`强制退出Vim不保存更改。
3. 可视模式:在普通模式下按`v`进入可视模式,可以选择文本块进行复制、删除等操作。

在VS Code中使用Vim

 先下载插件

 安装完成后按快捷键 Ctrl+,进入设置界面

找到 vim.leader 设置,将 ‘ \ ’ 更改为 ‘<space>’即可启用VS Code模拟Vim的功能
 

输入的保存退出等命令在左下角:

安装Vim插件

先安装git

sudo apt install git

 输入命令克隆Vundle仓库:

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

编辑主目录下的.vimrc文件,这个是Vim的配置文件,修改.vimrc内容为:
安装的目录树插件 nerdtree

set nocompatible              " be iMproved, required  
filetype off                  " required  " set the runtime path to include Vundle and initialize  
set rtp+=~/.vim/bundle/Vundle.vim  
call vundle#begin()  
" alternatively, pass a path where Vundle should install plugins  
"call vundle#begin('~/some/path/here')  " let Vundle manage Vundle, required  
Plugin 'VundleVim/Vundle.vim' 
Plugin 'scrooloose/nerdtree' " Add your plugins here (note older versions of Vundle used Bundle instead of Plugin)  
" Plugin 'some-plugin-name'  " All of your Plugins must be added before the following line  
call vundle#end()            " required  
filetype plugin indent on    " required

 随后按 esc 退出插入模式,按 键后输入安装命令:

PluginInstall

安装完成 

在Vim的普通模式 中输入命令行命令即可启用目录树插件:

NERDTree

 

解决Vim编辑键盘错乱

有时在使用Vim时会发现在Vim中的键盘输入和对应键盘不匹配,比如按了上下左右键而Vim中输入的是"ABCD",需要解决它的键盘错乱问题。

先在终端输入命令查询Vim版本:

vim --version

显示找不到命令vim,有可能是vim安装错误或安装了默认的简化版本 ,输入命令从新安装vim

sudo apt update
sudo apt install vim

 现在可以查询Vim的版本了

输入命令编辑一个文件试下:

vi hello.py

i 进入插入模式,按 esc 退出插入模式 

 键盘输入值恢复正常:

esc 退出插入模式后输入命令保存代码并退出:

:wq

 内容随即保存成功

非插入模式下的常用快捷键

一、移动光标

1. **基本移动**
   - `h`:向左移动一个字符
   - `j`:向下移动一个字符
   - `k`:向上移动一个字符
   - `l`:向右移动一个字符

2. **按行移动**
   - `0`:跳至行首
   - `$`:跳至行尾
   - `^`:跳至行首的非空白字符
   - `gg` 或 `G`:跳至文首或文尾
   - `数字+G`:跳至指定行数,如`5G`跳至第5行

3. **按页或段落移动**
   - `ctrl-u`:上翻半页
   - `ctrl-d`:下翻半页
   - `ctrl-f`:上翻一页
   - `ctrl-b`:下翻一页
   - `{` 或 `}`:上翻或下翻一个段落

4. **按单词或句子移动**
   - `w` 或 `W`:跳到下一个单词首
   - `e` 或 `E`:跳到下一个单词尾
   - `b` 或 `B`:跳到上一个单词首
   - `(` 或 `)`:跳到上一个或下一个句子

 二、删除、复制与粘贴

1. **删除**
   - `dd`:删除当前行
   - `dw`:删除一个单词
   - `d$` 或 `D`:删除至行尾
   - `x` 或 `dl`:删除当前字符
   - `X` 或 `dh`:删除前一个字符

2. **复制与粘贴**
   - `yy`:复制当前行
   - `yw`:复制一个单词
   - `y$` 或 `Y`:复制到行尾
   - `p`:在当前行之下粘贴
   - `P`:在当前行之上粘贴

三、插入模式

- `i`:从当前光标处进入插入模式
- `I`:进入插入模式,并置光标于行首
- `a`:追加模式,置光标于当前光标之后
- `A`:追加模式,置光标于行末
- `o`:在当前行之下新加一行,并进入插入模式
- `O`:在当前行之上新加一行,并进入插入模式

四、编辑与撤销

- `J`:将下一行和当前行连接为一行
- `cc` 或 `S`:删除当前行并进入编辑模式
- `cw` 或 `ce`:删除当前单词,并进入编辑模式
- `c$` 或 `C`:擦除从当前位置至行末的内容,并进入编辑模式
- `s`:删除当前字符并进入编辑模式
- `u`:撤销上一次操作
- `ctrl+r`:重做被撤销的操作

五、查找与替换

- `/pattern`:向后搜索字符串`pattern`
- `?pattern`:向前搜索字符串`pattern`
- `:%s/src/dst/g`:全部替换,将`src`替换为`dst`
- `n`:查找下一个匹配项
- `N`:查找上一个匹配项

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

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

相关文章

【Python日志模块全面指南】:记录每一行代码的呼吸,掌握应用程序的脉搏

文章目录 &#x1f680;一、了解日志&#x1f308;二、日志作用&#x1f308;三、了解日志模块⭐四、日志级别&#x1f4a5;五、记录日志-基础❤️六、记录日志-处理器handler&#x1f3ac;七、记录日志-格式化记录☔八、记录日志-配置logger&#x1f44a;九、流程梳理 &#x…

如何在linux中下载R或者更新R

一、问题阐述 package ‘Seurat’ was built under R version 4.3.3Loading required package: SeuratObject Error: This is R 4.0.4, package ‘SeuratObject’ needs > 4.1.0 当你在rstudio中出现这样的报错时&#xff0c;意味着你需要更新你的R 的版本了。 二、解决方…

Openldap集成Kerberos

文章目录 一、背景二、Openldap集成Kerberos2.1kerberos服务器中绑定Ldap服务器2.1.1创建LDAP管理员用户2.1.2添加principal2.1.3生成keytab文件2.1.4赋予keytab文件权限2.1.5验证keytab文件2.1.6增加KRB5_KTNAME配置 2.2Ldap服务器中绑定kerberos服务器2.2.1生成LDAP数据库Roo…

第二十五篇——信息加密:韦小宝说谎的秘诀

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 加密这件事&#xff0c;对于这个时代的我们来说非常重要&#xff0c;那么…

ElasticSearch学习笔记(二)文档操作、RestHighLevelClient的使用

文章目录 前言3 文档操作3.1 新增文档3.2 查询文档3.3 修改文档3.3.1 全量修改3.3.2 增量修改 3.4 删除文档 4 RestAPI4.1 创建数据库和表4.2 创建项目4.3 mapping映射分析4.4 初始化客户端4.5 创建索引库4.6 判断索引库是否存在4.7 删除索引库 5 RestClient操作文档5.1 准备工…

模拟原神圣遗物系统-小森设计项目,设计圣遗物(生之花,死之羽,时之沙,空之杯,理之冠)抽象类

分析圣遗物 在圣遗物系统&#xff0c;玩家操控的是圣遗物的部分 因此我们应该 物以类聚 人与群分把每个圣遗物的部分&#xff0c;抽象出来 拿 生之花&#xff0c;死之羽为例 若是抽象 类很好的扩展 添加冒险家的生之花 时候继承生之花 并且名称冒险者- 生之花 当然圣遗物包含…

求职难遇理想offer!!【送源码】

现在的求职行情确实不太好&#xff0c;有很多抱怨自己找到的工作技术栈落后的同学&#xff0c;我也是建议他们接下先干着。不能幻想毕业之后还能找到更合适的工作&#xff0c;那个时候就基本只能参加社招了&#xff0c;没有工作经验参加社招想要获得满意 offer 的更是地狱难度。…

【尚庭公寓SpringBoot + Vue 项目实战】移动端登录管理(二十)

【尚庭公寓SpringBoot Vue 项目实战】移动端登录管理&#xff08;二十&#xff09; 文章目录 【尚庭公寓SpringBoot Vue 项目实战】移动端登录管理&#xff08;二十&#xff09;1、登录业务2、接口开发2.1、获取短信验证码2.2、登录和注册接口2.3、查询登录用户的个人信息 1、…

【BES2500x系列 -- RTX5操作系统】CMSIS-RTOS RTX -- 实时操作系统的核心,为嵌入式系统注入活力 --(一)

&#x1f48c; 所属专栏&#xff1a;【BES2500x系列】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f49…

动态住宅代理IP:多账号矩阵管理的使用

如果您要处理多个在线帐户&#xff0c;选择正确的代理类型对于实现流畅的性能至关重要。但最适合这项工作的代理类型是什么&#xff1f; 为了更好地管理不同平台上的多个账户并优化成本&#xff0c;动态住宅代理IP通常作用在此。 一、什么是轮换代理&#xff1f; 轮换代理充当…

数据仓库与数据库的区别

在数据管理和分析的过程中&#xff0c;我们常常会听到“数据库”和“数据仓库”这两个术语。 虽然它们看起来相似&#xff0c;但实际上它们在设计目的、结构和使用场景上都有显著的区别。 数据库是什么&#xff1f; 数据库&#xff08;Database&#xff09;是一个用于存储和管…

idea2023开发插件入门

idea2023开发插件入门 创建工程 通过 idea plugin 来创建工程 修改 开发语言 默认创建的工程是用scala开发的&#xff0c;但是我不会&#xff0c;就会java,所以改成java创建 build.gradle.kt 为 build.gradlesettings.gradle.kt 为 settings.gradle build.gradle修改为以…

英语恶补ing

ing的词组都有停下来做某事的感觉了。 second hand是形容词了。 wouldnt buy这里的would是情态动词&#xff0c;也是助动词 助动词不能单独使用&#xff0c;要搭配实义动词&#xff0c;这样才能构成谓语 情态动词&#xff08;modals&#xff09;在英语中有多种作用&#xff…

随机森林算法详解

随机森林算法详解 随机森林&#xff08;Random Forest&#xff09;是一种集成学习方法&#xff0c;通过构建多个决策树并将它们的预测结果结合起来&#xff0c;来提高模型的准确性和稳定性。随机森林在分类和回归任务中都表现出色&#xff0c;广泛应用于各类机器学习问题。本文…

【机器学习】基于稀疏识别方法的洛伦兹混沌系统预测

1. 引言 1.1. DNN模型的来由 从数据中识别非线性动态学意味着什么&#xff1f; 假设我们有时间序列数据&#xff0c;这些数据来自一个&#xff08;非线性&#xff09;动态学系统。 识别一个系统意味着基于数据推断该系统的控制方程。换句话说&#xff0c;就是找到动态系统方…

XXL-Job实战(一)

​需求介绍&#xff1a;构建一个分布式短信发送系统&#xff0c;应对双十一活动需向1000万用户快速推送营销短信的挑战&#xff0c;每条数据的业务处理逻辑为0.1s。对于普通任务来说&#xff0c;只有一个线程来处理 可能需要10万秒才能处理完&#xff0c;业务则严重受影响。 常…

5款堪称变态的AI神器,焊死在电脑上永不删除!

一 、AI视频合成工具——Runway&#xff1a; 第一款RunWay&#xff0c;你只需要轻轻一抹&#xff0c;视频中的元素就会被擦除&#xff0c;再来轻轻一抹&#xff0c;直接擦除&#xff0c;不喜欢这个人直接擦除&#xff0c;一点痕迹都看不出来。 除了视频擦除功能外&#xff0c;…

【AI大模型】Transformers大模型库(十):repetition_penalty惩罚系数

目录​​​​​​​ 一、引言 二、惩罚系数repetition_penalty 2.1 概述 2.2 使用说明 2.3 使用示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库&#xff0c;为huggingface上数以万计的预训练大模型提供预测、训练等服务。 &#x1f917; T…

韩顺平0基础学Java——第27天

p548-568 明天开始坦克大战 Entry 昨天没搞明白的Map、Entry、EntrySet&#xff1a;//GPT教的 Map 和 Entry 的关系 1.Map 接口&#xff1a;它定义了一些方法来操作键值对集合。常用的实现类有 HashMap、TreeMap 等。 2. Entry接口&#xff1a;Entry 是 Map 接口的一个嵌…

vivado TILE

TILE是包含一个或多个SITE对象的设备对象。可编程逻辑TILE 包括各种各样的对象&#xff0c;如SLICE/CLB、BRAM、DSP、I/O块、时钟资源&#xff0c;以及 GT块。从结构上讲&#xff0c;每个瓦片都有许多输入和输出&#xff0c;并且可编程 互连以将瓦片的输入和输出连接到任何其他…