要想在VScode里使用Vim需要先行按照插件

安装 vim 插件

VS Code 中输入快捷键 shift + ctrl + x, 或直接打开 扩展安装导航

搜索 vim, 选择 Vim

, 点击 install 安装

安装结束后就可以使用 vscode 下的 vim 模式了

推荐: 关闭 vim 扩展的 useCtrlKeys, 保留一些 VS Code 自身的一些常用快捷键, 在 settings.json 里面添加配置 "vim.useCtrlKeys": false,

——————————正文开始——————————

vim 入门

在 vs code 中打开文件时, 文件状态为默认为 vim 下的 Normal 模式

输入 i, 从 Normal 模式切换至 Insert 模式, 此时就可以正常输入文本了

单击 ESC 可以返回 Normal 模式

在 Normal 模式下可以进行如下操作

命令(按键) 作用
i 进入 Insert 模式
ESC Insert 模式退回 Normal 模式
:q 退出文件编辑 (vs code 下用不到)
:w 保存修改文件 (vs code 下用不到)
:wq 保存 + 推出文件 (vs code 下用不到)

vim 定位

vim 光标定位命令

光标上下左右

命令 作用 模式
h 光标向左移动一格 Normal
l 光标向右移动一格 Normal
j 光标向下移动一行 Normal
k 光标向上移动一行 Normal
上下左右键 上下左右切换光标 Normal & Insert

: banlk 字符是指 空格, tab, 换行, 回车等

行内光标定位

命令 作用 模式
0 到当前行开头 Normal
home 到当前行开头 Normal & Insert
^ 到当前行第一个不是 blank 字符的位置 Normal
$ 到当前行末尾 Normal
g_ 到当前行最后有一个不是 blank 字符的位置 Normal
gg 到第一行 Normal
nG n 为行编号, 到第 n 行 Normal
G 到最后一行 Normal

词汇定位

1、默认方式, 一个单词由字母,数字和下划线组成

命令 作用 模式
w w(小写), 到下一个单词的开头 Normal
e e(小写), 到下一个单词的结尾 Normal

2、如果单词以 blank 字符分隔, 使用 大写的 E 或 W 分隔

3、单词匹配

命令 作用 模式
* 移动到与当前光标匹配的下个单词(目前装的VS Code Vim 组件不生效) Normal
# 移动到与当前光标匹配的上个单词 Normal

括号匹配

命令 作用 模式
% 定位与光标所在括号相对应的另一半,(使用前要将光标定位在某个括号上) Normal

vim 插入

vim 插入命令,光标定位完成后,进行插入操作前的命令, 命令执行后切换至 Insert 模式

命令 作用 模式
a 在光标后插入, 光标定位后输入 i 命令默认是光标前插入的 Normal
o 小写 o 在当前行之后插入新的一行,相当与回车效果 Normal
O 大写 O 在当前行之前插入新的一行 Normal

vim 查找

vim 是通过正则匹配来实现的

在 Normal 模式下, 先输入 /, 进入搜索模式

输入想要搜索的词汇, 此时在 vs code 中会高亮所有匹配项

单击 enter(回车) 键后, 点击 n 键就可以光标一个个定位匹配项

vim 替换

以下介绍的替换在 VS Code 中无法使用, 可以使用 其自带的 Ctrl + H 的替换

语法: vim 的替换语法为: :[addr]s/待替换字符/替换字符/[option]

: (英文冒号)

表示替换命令开始

[addr] 检索范围

1、.(小数点) 表示前按行

2、$: 表示文件最后一行

3、%: 表示整个当前文件

4、n(行号): 表示第 n 行

5、n1,n2: 表示 第 n1 行到第 n2 行

6、n, $: 表示 第 n 行到文档最后一行

7、., $: 表示 当前行到文档最后一行

8、., n: 表示当前行到文档第 n 行

s 替换操作

字母 s 表示替换操作

[option] 操作类型

[option] 表示操作类型

1、g: 表示全局替换, 在检索范围内替换所有匹配项

2、c: 表示确认替换, 在替换时需要 输入 y 一一确认

3、p: 表示显示替代结果, 按 enter 后执行替换

4、option 省略时仅对每行第一个匹配字符串进行替换

例子

:.s/from/to/ 将当前行中的第一个from,替换成to。如果当前行有多个from,则只会替换其中的第一个。

:%s/from/to/g 将文档中所有的 from 替换成 to

:1,5s/from/to/c 将文档的第 1 到第 5 行, 每行的第一个 from 替换成 to , 并需要确认

:6,$s/from/to/gc 从第 6 行开始至最后一行, 将所有的 from 换从成 to, 并需要确认

:.,7s/from/to/p 从当前行到第 7 行,将每行地一个 from 替换成 to, 替换前显示替换结果, 按回车后生效

vim 拷贝/粘贴/删除

vim 拷贝粘贴命令

1、粘贴

命令 作用 模式
p 小写 p, 在光标之后插入拷贝项 Normal
P 大写 P, 在光标之前插入拷贝内容 Normal
np(nP) 重复复制 n 次 Normal

2、拷贝

命令 作用 模式
y 拷贝当前行以及其后面一行,共两行 Normal
yy 拷贝当前行 Normal
nyy n 为大于数字, 拷贝 n 行, 第一行为光标所在行 Normal
ye 从光标位置开始拷贝,至遇到第一个空后结束(不包括空格) Normal
yw 从光标位置开始拷贝,至遇到第一个空后结束(包括空格) Normal
y$ 从光标位置开始拷贝,到当前行行末, 包括空格 Normal
y0 从光标位置开始拷贝,到当前行行首, 包括空格 Normal
ynl 从光标位置开始, 向右拷贝 n 个字符 Normal
ynB 从光标位置开始,向左拷贝 n 个单词 Normal

如何拷贝某一块区域, 比较精确的选择拷贝区域?

在 Normal 模式下, 将光标定位至目标拷贝区域的开始或结束位置,

输入命令 v(小写) 进入试图模式

移动光标,光标所经过的位置都被选中,(跟鼠标选中形式一样)

区域选定结束后, 输入 y 命令, 复制成功

如果输入 大写 V 命令, 此时只能以行为单位选中区域

如何实现跨文件拷贝/粘贴?

在文件 A 复制的内容在文件 B 中使用,

使用命令 +y, 即将复制的内容添加到系统的剪切板, 供其他程序使用 (这个命令在 debian 下不好用, 只在全选复制的情况下有用, 复制部分的话使用右键复制,)

使用命令 +p, 可以将系统剪切板中的内容,粘贴到当前文件 (这个命令不好用)

在 Insert 模式下 (VS Code 中 Normal 模式也可以), 使用快捷键 shift+insert 可以将系统剪切板中的内容,粘贴到当前文件, (推荐使用)

3、删除

命令 作用 模式
dd 剪切当前行 Normal
ndd 剪切 n 行, 当前行为第一行 Normal
dw 从光标位置开始剪切, 至遇到第一个空后结束(包括空格) Normal
de 从光标位置开始剪切, 至遇到第一个空后结束(不包括空格) Normal
d$ 从光标开始位置剪切, 至当前行行末, 包括空格 Normal
d0 从光标开始位置剪切, 至当前行行首, 包括空格 Normal
dl 删除光标所在字符 Normal
dh 删除光标所在位置之前字符 Normal
dnl 从光标位置开始, 向右剪切 n 个字符 Normal
dnh 剪切光标之前的 n 个字符(不包括光标所在字符) Normal
dH 剪切当前光标之前所有内容 Normal
dL 剪切当前光标之后所有内容(包括光标所在字符) Normal

如何删除胡一块区域, 比较精确地删除区域

同上文的拷贝一样, 只需把 拷贝命令 y 换成 删除命令 d 即可

撤销/取消撤销修改

撤销修改命令 和 取消撤销修改命令

命令 作用 模式
u 撤销上步修改 Normal
ctrl+r 恢复被撤销的修改 Normal

补充

1、重复之前的命令 Normal 模式下输入 .(小数点), n. 重复之前命令 n 次

2、对括号内内容操作 (将光标定位至左括号)

  • ci’、ci”、ci(、ci[、ci{、ci< 分别更改这些配对标点符号中的文本内容
  • di’、di”、di(或dib、di[、di{或diB、di< 分别删除这些配对标点符号中的文本内容
  • yi’、yi”、yi(、yi[、yi{、yi< 分别复制这些配对标点符号中的文本内容
  • vi’、vi”、vi(、vi[、vi{、vi< 分别选中这些配对标点符号中的文本内容

3、全选(复制/删除)

Normal模式下, 首先全选文档: ggVG/ggvG => (gg 让光标移动到首行, v/V 进入Vision 模式, G 移动到最后一行)

输入 d 删除选中内容, 输入 y 复制选中内容

4、代码缩进

Normal 模式下, 进入 Vision 模式, 选中目标代码块,

快捷键 shift+> 向右缩进

快捷键 shift+< 向左缩进

——————————正文结束——————————

对于vi/vim:这是一个你不需要使用鼠标,不需使用小键盘,只需要使用大键盘就可以完成很多复杂功能文本编辑的编辑器。不然,Visual Studio也不就会有vim的插件了

VIM 入门手册, (VS Code)的更多相关文章

  1. Node.js 入门手册:那些最流行的 Web 开发框架

    这篇文章与大家分享最流行的 Node.js Web 开发框架.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编 ...

  2. Vim入门基础

    公司新员工学习有用到,Vim官网的手册又太大而全,而网上各方资料要么不全面,要么不够基础.在网上搜集各方资料,按照自己的框架整理一份Vim入门基础教程,分享出来.特点是偏向基础,但对入门者来说足够全面 ...

  3. Github快速入门手册

    最近在试用Github,开源的思想也让人觉得把一些经验分享出来是非常好的事情.附件是doc文件,如有需要请注意查收.希望能对你有帮助. GITHUB基于互联网的版本控制快速入门手册 如有不妥,欢迎指正 ...

  4. vim帮助手册汉化

    vim帮助手册汉化 vim帮助手册汉化 下载vimcdoc-1.9.0.tar.gz 安装vimcodc-1.9.0 vim命令模式下输入help可以查看vim的帮助手册.美中不足的是这个帮助手册是英 ...

  5. Vim入门教程

    尽管网上有成打的Vim在线教程,但是要么艰深晦涩,要么太过肤浅.本教程的目标让每个阶段都有斩获,从理解它的哲学(将和你终身相伴)到超越现在编辑技巧,成为其中的牛人. 简单来说,本教程的学习方式将使你终 ...

  6. DPDK2.1 linux上开发入门手册

    1引言 本文档主要包含INTEL DPDK安装和配置说明.目的是让用户快速的开发和运行程序.文档描述了如何在不深入细节的情况下在linux应用开发环境上编译和运行一个DPDK应用程序. 1.1文档总览 ...

  7. 推荐vim学习教程--《Vim 练级手册》

    非常不错的vim学习资源,讲解的简单明了,可以作为速查工具,在忘记时就翻下.地址如下: <Vim 练级手册>

  8. Mybatis-Plus3.0入门手册

    Mybatis-Plus3.0入门手册   ref: https://blog.csdn.net/moshowgame/article/details/81008485 Mybatis-Plus简介 ...

  9. 电子书下载:Delphi XE 5 移动开发入门手册(完整版)

    更多电子书请到: http://maxwoods.400gb.com 下载:Delphi XE5移动开发入门手册(完整版)

  10. MyBean 框架入门手册<感谢[青铜]整理的如此细致和系统>

    MyBean 框架入门手册 2014/9/15 by lighttop 目 录 MyBean 框架学习笔记............................................... ...

随机推荐

  1. 【scipy 基础】--统计分布

    scipy.stats子模块包含大量的概率分布.汇总和频率统计.相关函数和统计测试.掩蔽统计.核密度估计.准蒙特卡罗功能等等. 这个子模块可以帮助我们描述和分析数据,进行假设检验和拟合统计模型等. 1 ...

  2. 【外包杯】【无语的报错】意想不到的逗号Unexpected comma.(已解决)

    解决了,答案是没保存,看见那些文件是型号了吗,就是这个原因.

  3. 普冉PY32系列(十三) SPI驱动WS2812全彩LED

    目录 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境 普冉PY32系列(三) P ...

  4. MCube动态化与原生工程结合最佳实践

    跨端动态化开发方案重要性日益凸显,本文对我们团队MCube动态化实践做了总结,为大家提供经验和借鉴. 接入背景 随着我们工程的需求迭代,暴露出了业务需求量大,分端开发和发版更新成本高等痛点,使用H5页 ...

  5. 使用动画曲线编辑器打造炫酷的3D可视化ACE

    前言 在制作3D可视化看板时,除了精细的模型结构外,炫酷的动画效果也是必不可少的.无论是复杂的还是简单的动画效果,要实现100%的自然平滑都是具有挑战性的工作.这涉及到物理引擎的计算和对动画效果的数学 ...

  6. Head First Java学习:第十一章-异常处理

    第十一章 异常处理 1.方法可以抓住其他方法所抛出的异常:异常总是丢回给调用方 有风险.会抛出异常的程序代码: 负责声明异常:创建Exception对象并抛出 调用该方法的程序代码: 在try中调用程 ...

  7. Feign远程调用超时问题

    1.问题概述 上图的场景,每次重启项目后openFeign都会报一个超时异常,异常信息如下 2.为什么会产生这个异常? 当项目刚启动时,数据库连接池的中的连接并不会创建;第一次请求的时候才会初始化各种 ...

  8. java,ArrayList类

    ArrayList 是一个数组列表,可以将多个对象放入数组中,是一个长度可变的集合,提供了增删改查的功能. public class Test2 { public static void main(S ...

  9. sudo: unable to execute /bin/rm: Argument list too long

    Linux,删除文件夹下所有内容,数据太多时,报错too long sudo rm -r /var/lib/jenkins/workspace/test_1/allure-report/data/at ...

  10. 为什么在使用onnxruntime-gpu下却没有成功调用GPU?

    20240105,记. 最近在使用GPU对onnx模型进行加速过程中(仅针对N卡,毕竟也没有别的显卡了..),遇到了点问题:就是明明在安装了合适版本的显卡驱动和CUDA后,onnx还是不能够成功调用G ...