编辑
2022-11-16
开发工具
0
请注意,本文编写于 548 天前,最后修改于 544 天前,其中某些信息可能已经过时。

目录

VSCode VIM 的基本操作
前言
VIM 模式
普通 -> 插入
插入 -> 普通
普通与可视
普通与命令
光标移动
上下左右移动
单词间移动
行首行尾移动
通过当前行字符跳转光标
其他
操作符(operator)
操作符的简单用法:
动作 motion
i(inner) 和 a(around) 的区别
基本的使用
操作符跟动作的结合
切换大小写
其他
tips
值得记住的组合拳
easymotion
vim-surround

VSCode VIM 的基本操作

前言

这篇文章是我学习在 VSCode 下使用 VIM 的笔记,主要参考的是 B 站 up 主 薄涛 TV 和 Learn VIM 教程。

VIM 模式

普通 -> 插入

普通模式 --NORMAL-- 转换为 插入模式 --INSERT-- 的几种方法:

  • i 在光标前插入
  • I 在行首插入
  • o 在下一行插入
  • O 在上一行插入
  • a 在光标后插入
  • A 在行尾插入

插入 -> 普通

这个主要就是使用 ESC 键退出插入模式,在 VSCode 中,我把它映射成了 jj

普通与可视

进入 --VISUAL-- 模式:v 在可视模式中再按一次 v 即可由可视模式退出到普通模式,或者直接 ESC

普通与命令

  • 进入命令模式::
  • 退出命令模式:ESC

光标移动

普通模式下:

上下左右移动

  • h : 向左移动
  • j : 向下移动
  • k : 向上移动
  • l : 向下移动

单词间移动

  • w : 跳到下一个单词的开头
  • b : 跳到本单词或者上一个单词的开头(当光标在本单词的开头,则前往上一个单词的开头)
  • e : 跳到本单词或者下一个单词的结尾
  • ge : 跳到上一个单词的结尾

行首行尾移动

  • 0 : 跳到行首
  • ^ : 跳到从行首开始的第一个非空字符
  • $ : 跳到行尾
  • gg : 跳到第一行
  • G : 跳到最后一行
  • nG : 跳到第 n 行
  • :n : 跳到第 n 行

通过当前行字符跳转光标

  • f{char} : 光标跳到下个 {char} 所在位置
  • F{char} : 反向移动到上一个 {char} 所在位置
  • t{char} : 光标跳到下一个 {char} 的前一个字符的位置
  • T{char} : 光标跳到下一个 {char} 的后一个字符的位置
  • ; : 重复上次的字符查找命令
  • , : 反向查找上次的查找命令

其他

Ctrl + d : 向下滚动半屏 Ctrl + u : 向上滚动半屏 zt 将当前行置于屏幕顶部附近 zz 将当前行置于屏幕中央 zb 将当前行置于屏幕底部 H 跳转到屏幕的顶部 M 跳转到屏幕的中间 L 跳转到屏幕的底部 ( 跳转到上一个句子 ) 跳转到下一个句子 { 跳转到上一个段落 } 跳转到下一个段落

操作符(operator)

普通模式下:

  • d : 删除(delete)
  • c : 修改(删除并进入插入模式)(change)
  • y : 复制(yank)
  • v : 选中并进入 VISUAL 模式

操作符的简单用法:

dd : 删除一整行。类似的还有 ccyyNdd : 其中 N 表示的是数字,例如 2dd 表示删除两行(向下执行),同样还有 NccNyy

小 tip: dc 附带剪切效果,也就是可以用 p 复制删除的内容。

动作 motion

i(inner) 和 a(around) 的区别

  • i + object : 内部文本对象
  • a + object : 外部文本对象 简单的说就是,i 不包括包围文本对象的空白或者括号等,而 a 包括了包围文本对象的空白或者括号等。

基本的使用

iw / aw i( / a( 或 ib / ab i{ / a{ 或 iB / aB i" / a" i' / a' i` / a` i< / a< i[ / a[

操作符跟动作的结合

结合跳转的一些例子:

  • y$ : 复制当前位置到行尾的所有内容
  • dw : 删除当前位置到下一个单词的开头
  • c} : 修改当前位置到这个段落的结尾
  • d( : 删除到句子的开头

结合数字的一些例子:

  • y2h : 向左拷贝两个字符
  • d2w : 删除后两个单词
  • c2j : 修改后面两行

结合 i 和 a 的一些例子:

  • di( : 删除括号内的内容
  • di{ : 删除大括号内的内容
  • diw : 删除光标所在的单词
  • da( : 删除括号和括号内的内容
  • da{ : 删除大括号和大括号内的内容
  • daw : 删除光标所有的单词以及周围的空白
  • df<char> : 删除到下一个 char 字符

切换大小写

  • ~ : 将光标下的字母改变大小写
  • 3~ : 将光标位置开始的 3 个字母改变其大小写
  • g~~ : 改变当前行的大小写
  • gUU : 将当前行的字母改为大写
  • guu : 将当前行的字母改成小写
  • gUaw(gUiw) : 将光标下的单词改成大写
  • guaw(guiw) : 将光标下的单词改成小写

其他

  • u : 撤销
  • Ctrl + r : 恢复撤销
  • p : 粘贴
  • x : 删除当前光标所在的字符
  • r : 替换当前光标所在的字符

tips

一些使用 VSCode 开发中常用的操作:

  1. 函数定义之类:
  • gd : 进入函数定义
  • Ctrl+o : 从函数定义中返回
  • gh : 查看函数参数等信息
  1. 切换标签页:
  • gt : 切换到下一个标签页
  • gT : 切换到上一个标签页
  • 4gt : 切换到第 4 个标签页
  1. 其他: 可以使用 Ctrl + 0 来将光标从编辑器跳转到文件栏,在文件栏可以使用 jk 进行移动,可以使用 Space 展开或者关闭文件夹,使用 l 可以将光标选中的文件在编辑器中打开。

还有如果使用侧边栏打开文件,可以使用 Ctrl + 1Ctrl + 2 实现跳转。

值得记住的组合拳

  • xp : 调换相邻的两个字符
  • ddp : 调换相邻的两行 这种组合拳最好是形成肌肉记忆,而不是去试图理解它的意思。

easymotion

VSCode 的 VIM 插件默认将 <leader> 设为 Space.

  • <leader><leader> s <char> : 搜索 char 字符

其他的一些操作可以查看 VSCode 的 VIM 插件的介绍页

vim-surround

  • ds" : 删除两侧的 "
  • y s <motion> <desired> : 通过 motion 在指定内容两侧增加字符
  • cs"' : 把两侧的 " 改为 '

本文作者:歪比巴卜

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!