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

news2024/11/23 15:16:56

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.coloradmin.cn/o/1831197.html

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

相关文章

案例7.7_使用SFC/DISM工具修复系统

问题分享 用什么方法可以检测系统文件是否受损&#xff0c;又该如何修复呢?Windows 10操作系统可以用文件检查器检查和修复系统的受损文件&#xff0e;防范故障于未然。 &#xff08;1&#xff09;右击“开始”按钮.在弹出的快捷菜单中选择“命令提示符&#xff08;管理员&am…

全域推广和标准推广可以一起做吗?可行性分析结果如何?

作为全域时代的新赛道&#xff0c;全域推广从出现之日起便备受关注&#xff0c;许多创业者经常将其与标准推广进行对比或捆绑&#xff0c;类似于全域推广和标准推广的区别、全域推广和标准推广哪个好以及全域推广和标准推广可以一起做吗等问题也因此长期霸占该赛道相关话题榜单…

【docker实战】使用Dockerfile的COPY拷贝资源遇到的问题

事情是这样的。 在我负责的golang项目中&#xff0c;使用硬代码验证某块逻辑。比如&#xff1a; 于是&#xff0c;为了解决硬代码的问题&#xff0c;我制作了表格工具&#xff1a;【开源项目】Excel数据表自动生成工具v1.0版 – 经云的清净小站 (skycreator.top)。 使用表格工…

Pytorch深度解析:Transformer嵌入层源码逐行解读

前言 本部分博客需要先阅读博客&#xff1a; 《Transformer实现以及Pytorch源码解读&#xff08;一&#xff09;-数据输入篇》 作为知识储备。 Embedding使用方式 如下面的代码中所示&#xff0c;embedding一般是先实例化nn.Embedding(vocab_size, embedding_dim)。实例化的…

Comfy UI使用最新SD3模型,并解决报错‘NoneType‘ object has no attribute ‘tokenize‘【实测可行】

解决Comfy UI使用最新SD3模型报错’NoneType’ object has no attribute ‘tokenize’ 前几天SD3发布了&#xff0c;所以想着尝尝鲜&#xff0c;便去下载了SD3来玩一玩。使用的是Comfy UI而不是Stable Diffusion UI&#xff0c;这是一个比SD UI更加灵活的UI界面&#xff0c;使用…

【Gradio】Building With Blocks 块中的状 态 + 动态应用程序与渲染装饰器

State in Blocks 块中的状态 我们介绍了接口中的状态&#xff0c;这个指南将看看块中的状态&#xff0c;其工作原理大致相同。 全局状态 块中的全局状态与接口中的工作原理相同。在函数调用外创建的任何变量都是所有用户共享的引用。 会话状态 Gradio 支持会话状态&#xff…

大模型-人类病理学的语言视觉AI助手

论文摘要翻译与评论 论文标题&#xff1a; A Multimodal Generative AI Copilot for Human Pathology 摘要翻译&#xff1a; 计算病理学领域已经在任务特定的预测模型和任务无关的自监督视觉编码器的发展方面取得了显著进展。然而&#xff0c;尽管生成性人工智能快速增长&a…

DBA常用论坛

1.ITPUB ITPUB技术论坛_专业的IT技术社区 2.ASKTOM Ask TOM

APP IOS

APP IOS苹果源生应用程序 APP Android-CSDN博客

编写乘法器求解算法表达式

描述 编写一个4bit乘法器模块&#xff0c;并例化该乘法器求解c12*a5*b&#xff0c;其中输入信号a,b为4bit无符号数&#xff0c;c为输出。注意请不要直接使用*符号实现乘法功能。 模块的信号接口图如下&#xff1a; 要求使用Verilog HDL语言实现以上功能&#xff0c;并编写tes…

scrapy模块的基础使用

scrapy模块是爬虫工作者最常用的一个模块之一&#xff0c;因它有许多好用的模板&#xff0c;和丰富的中间件&#xff0c;深受欢迎。 一&#xff0c;scrapy的安装 可以通过pypi的指引进行安装 在终端内输入以下代码&#xff1a; pip install scrapy 二&#xff0c;项目的建…

【学习笔记】MySQL(Ⅱ)

MySQL(Ⅱ) 7、 进阶篇 —— 存储引擎 7.1、MySQL 体系结构 7.2、存储引擎 7.2.1 InnoDB 7.2.2 MyISAM 7.2.3 Memory 7.2.4 InnoDB、MyISAM、Memory 的比较8、 拓展篇 —— 在 Linux 上安装数据库9、进阶篇 —— 索引 …

SmartEDA、Multisim、Proteus大比拼:电路设计王者之争?

在电路设计领域&#xff0c;SmartEDA、Multisim和Proteus无疑是三款备受瞩目的软件工具。它们各自拥有独特的功能和优势&#xff0c;但在这场电路设计王者的竞争中&#xff0c;谁才是真正的领跑者&#xff1f;让我们深入探究这三款软件的异同&#xff0c;揭示它们各自的魅力所在…

rabbitMQ的简单使用

rabbitMQ的介绍 RabbitMQ是一个开源的消息代理和队列服务器&#xff0c;主要用于在不同的应用程序之间传递消息。它基于AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;协议&#xff0c;提供了一种可靠的方式来处理异步通信。RabbitMQ使用Erlang语言编写&…

【VUE3学习手札】

VUE3学习手札 vue3成长之路学习笔记 文章目录 VUE3学习手札前言一、markRaw1.1 代码示例1.2 应用场景1.3 拓展&#xff08;toRaw&#xff09;1.4 实际应用 前言 主要用于自己的一个备忘&#xff0c;对知识点的查缺补漏 一、markRaw 将一个对象标记为不可被转为代理。返回该对象…

北京大学数字普惠金融指数(2011-2022年)

北京大学数字普惠金融指数&#xff08;2011-2022年&#xff09;&#xff0c;包含省市县三级数据 数据年限&#xff1a;省级、地级市&#xff08;2011-2022年&#xff09;&#xff1b;区县&#xff08;2014-2022年&#xff09; 数据格式&#xff1a;excel、pdf 数据来源&#xf…

java-数据结构与算法-02-数据结构-01-数组

文章目录 1. 概述2. 动态数组3. 二维数组4. 局部性原理5. 越界检查6. 习题 1. 概述 定义 在计算机科学中&#xff0c;数组是由一组元素&#xff08;值或变量&#xff09;组成的数据结构&#xff0c;每个元素有至少一个索引或键来标识 In computer science, an array is a dat…

subversion

subversion Install # CentOS安装Subversion yum install subversion mkdir /var/svn/ systemctl restart svnserve# Docker安装Subversion&#xff08;参考&#xff1a;https://github.com/garethflowers/docker-svn-server&#xff09; docker run \--name my-svn-server \…

气体传感器的工作原理探究

气体传感器的工作原理主要基于其内部的感应元件与目标气体之间的相互作用。不同的气体传感器可能采用不同的工作原理&#xff0c;但其核心目的都是将气体的浓度或成分转化为可测量和处理的电信号。 PID气体传感器 以常见的电化学式气体传感器为例&#xff0c;其工作原理涉及气体…

T113 Tina5.0 添加板级支持包

文章目录 环境介绍Tina5.0 SDK说明添加buildroot板级支持包添加板级支持包修改配置文件验证 添加openwrt板级支持包添加板级支持包修改配置文件验证其它 总结 环境介绍 硬件&#xff1a;韦东山T113工业板 软件&#xff1a;全志Tina 5.0 Tina5.0 SDK说明 需要明确的是&#x…