VSCode中Vim使用(详细)
Vim基础vim模式及转换普通模式 NORMAL插入模式 INSERT可视模式 VISUAL命令模式 :替换模式REPLACE
Vim基础
键映射
{
/* vim */
"vim.incsearch": true,
"vim.useSystemClipboard": true,
// "vim.hlsearch": true, 对/字符串的搜索方式来说,搜索到的结果一直高亮显示,不设置这一项美观些
"vim.easymotion": true, // 启用vim-easymotion
"vim.leader": "<space>", // easymotion中,leader键映射为空格键
"vim.sneak": true, // 启用vim-sneak
"vim.insertModeKeyBindings": [
{
"before": ["j", "j"],
"after": ["<Esc>"]
}
],
"vim.normalModeKeyBindingsNonRecursive": [
// 到行首^映射为H,到行尾$映射为L
{
"before": ["H"],
"after": ["^"]
},
{
"before": ["L"],
"after": ["$"]
},
// easymotion快速跳转映射,s + <char>
{
"before": ["<leader>", "s"],
"after": ["<leader>", "<leader>", "s"]
},
// leader+u/d 代替 Ctrl+u/d 使页面向上/下滚动半屏
{
"before": ["leader", "u"],
"after": ["<C-u>"]
},
{
"before": ["leader", "d"],
"after": ["<C-d>"]
},
// 删到行首/行尾 暂时只能用leader + H/L,若dH/L会删除此处到代码开头/结尾
{
"before": ["leader", "H"],
"after": ["d", "^"]
},
{
"before": ["leader", "L"],
"after": ["d", "$"]
}
],
// 可视模式
"vim.visualModeKeyBindingsNonRecursive": [
{
"before": ["H"],
"after": ["^"]
},
{
"before": ["L"],
"after": ["$"]
}
],
"vim.useCtrlKeys": true, //结合下面的"vim.handleKeys"配置
"vim.handleKeys": {
"<C-a>": false,
"<C-f>": false,
// 带有vim插件的vscode,它的Ctrl+w是由vscode控制,非vim插件扩展快捷键控制。若改为true,则就是了。
"<C-w>": false
}
}
模式
普通模式 Normal 插入模式 Insert 可视模式 Visual 命令模式 : 替换模式Replace
注
:若配置了"vim.sneak": true
则s与S就不起作用
光标移动
字符 | 单词 | 行 | 跳转 | 句和段 |
---|---|---|---|---|
h 左 | w下一个单词开头 | 0 行首 | f char 跳到char位置 | ( 到句首 |
j 下 | b本单词或上一个单词开头 | ^ 行首非空字符 | F char 反向 | ) 到句尾 |
k 上 | e本单词或下一个单词结尾 | $ 行尾 | t char char前一位置 | { 到段首 |
l 右 | ge上一个单词结尾 | gg 首行 | T char char后一位置 | } 到段尾 |
W长单词 E长单词 B长单词 | G 尾行 | ; 重复上次的跳转 | ||
ngg 第n行 | , 反向查找上次的查找 |
%
移动到与光标所在括号相对应的另一半括号上(对小括号,中括号和大括号有用,尖括号无用)
注
:比较的全面,但是看每个人的习惯不同,惯用的就会不同。上述是普通模式和可视模式的光标移动,它们完全一致,由于插入模式下的光标移动快捷键和很多VSCode内置快捷键冲突,这里就不介绍了,在文章末尾有写
方便编辑和阅读代码的操作如下(不仅仅限于光标移动,包含tricks等):
类型1
zt
屏幕滚动使得当前行成为屏幕的最上面一行
zz
中间一行
zb
最下面一行
zc
关闭代码块
zo
打开代码块
za
打开或关闭代码块
类型2
Ctrl + 0
:跳转到侧边栏,并可以用jk上下移动,空格打开文件或者文件夹
Ctrl + 2
:增加一个工作区栏,以此类推,Ctrl + 1
:跳到第一个工作区栏
Ctrl + N
:新建文件 Ctrl + Shift + N
:新建文件夹(这两个在Settings -> Keyboard Shortcuts -> 搜索explorer.new -> 自定义
l
:从侧边栏回到未跳转前的文件工作区,或者新打开的文件工作区
gt
(go to tab):跳到下一个标签页
gT
(go to tab):跳到上一个标签页
ngt
(go to tab):跳到第n个标签页
类型3
gh
(go to hover):悬浮查看一些文档,签名
gd
(go to destination):跳转到定义声明或具体描述的地方
Ctrl + o
:回到跳转之前的地方 Ctrl + i
:与之相反
gb
:光标置于单词的任意位置,输入一个gb,就选中一相同的单词(想选中4个相同的单词就连续输入gb4次
==
:格式化代码
gcc
:注释本行代码
gcnj
/ngcj
:注释从本行和下方n行的代码
gcnk
/ngck
:注释从本行和上方n行的代码
编辑技巧
操作符opertator 4个 |
---|
d 剪切(delete) |
x 剪切光标所停留的那个字符 X 剪切光标所停留的前一个字符 |
c 删除并进入插入模式(change) |
y 复制(yink) |
介词 2个 |
---|
i 表示里面 |
a 表示外面 |
名词 9个 |
---|
光标移动之字符 h j k l |
光标移动之单词 w b e… |
光标移动之行 ^ $ ngg… |
光标移动之跳转 f F … |
光标移动之句段 ( { |
( { [’`" 各种括号引号 |
t 标签 |
a 全部 |
e 全文 |
公式1:操作符
dd
:剪切一行 3dd
/d3d
:剪切包括本行在内的三行 以此类推
公式2:操作符 + 名词(前五个)
3dh
/d3h
:剪切光标所停留字符的左三个字符 3dj
/d3j
:剪切光标所在行及下面三行
db
:剪切光标所停留单词到开头
dngg
:剪切本行到第n行
dfn
:剪切到当前行到下一个n字符
d{
:剪切到段落开头
公式3:操作符 + 介词 + 名词(重点后四个)
diw
剪切当前光标所停留单词,或输入gbw
di(
:删除( )
中的所有内容
da(
:删除( )
中同时包括( )
的所有内容
dit
:剪切标签对中的内容,不包含标签对
dat
:剪切标签对中的内容,包含标签对
yia
:这个我试了以下,在for…in和for…of里面可以复制,其它的暂且不知
yie
:复制全文
其它操作符及编辑技巧 6个 |
---|
rx 用字符x替换光标位置的字符 nrx 用x字符替换光标位置前的n个字符 R 进入替换模式 |
p 粘贴到当前光标的右边/下一行 P 粘贴到当前光标的左边/上一行 np(nP) 重复粘贴内容n次 |
<< 向前缩进 |
>> 向后缩进 |
u 撤销操作 |
. 再次执行刚执行过的命令 |
注
:上述展示的都是很常用的Vim普通模式下的编辑技巧
常用命令
相信尝试过上述的Vim基础后,用一段时间的你,一定能够掌握好适合的常用命令
小技巧
:
- Ctrl 键有时候可以用小拇指指根摁
- VSCode内置的
Alt + ↑/↓
将当前行或者块(visualmode选择即可)上/下移
- 大写字母可以使用 Shift + 字母
自带插件
vim-easymotion:Vim插件介绍里vim-easymotion有详细说明,常用的有以下(键映射中有)
vim-surround:同上,可以自己尝试,以下例子
Old text Command New text Hello world vS" "Hello world" "Hello world" ds" Hello world Hello world ysiw[ [ Hello ] world Hello world ysiw] [Hello] world [Hello] world cs]" "Hello" world "Look ma, I'm *HTML!" cs"<q> <q>Look ma, I'm HTML!</q> <div>Yo!*</div> dst Yo! <div>Yo!*</div> cst<p> <p>Yo!</p>
vim-sneak:同上,和easymotion有些像,但是有自己的方便之处
其他
切换大小写
~
将光标下的字母改变大小写
3~
将光标位置开始的3个字母改变其大小写
g~
改变当前行字母的大小写,
gUU
将当前行的字母改成大写
guu
将当前行的字母改成小写
gUaw或gUiw
将光标下的单词改成大写
guaw或gUaw
将光标下的单词改成小写
其它跳转方式
/string,n下翻查询结果,N上翻查询结果,enter跳转(string代表你想查找的内容)
插入模式下的光标移动
个人习惯是,在插入模式下且移动的范围很小的时候,选择性的使用插入模式下的光标移动,它的原生vim中的快捷键如下(不过很多与VSCode内置快捷键是冲突的,我是直接使用↑/↓/←/→新手使用Vim先适应模式切换,暂且不用插入模式下的光标移动可能更锻炼一些)
快捷键 | 作用 |
---|---|
Ctrl + p | up |
Ctrl + n | down |
Ctrl + b | left |
Ctrl + f | right |
Ctrl + a | 到行首 |
Ctrl + e | 到行尾 |
Ctrl + h | delete 1 |
Ctrl + w | delete back 1 word |
Ctrl + u | delete back to start of line |
屏幕滚动
原生vim的快捷键如下
快捷键 | 功能 |
---|---|
Ctrl + v | 向上滚屏 |
Ctrl + e | 向下滚屏 |
Ctrl + u | 向上滚半屏 |
Ctrl + d | 向下滚半屏 |
Ctrl + b | 向上滚整屏 |
Ctrl + f | 向下滚整屏 |
参考链接
非常感谢!!!
更多推荐
所有评论(0)