vim学习和在vscode中使用vim

作者: 虎虎 分类: 常用 发布时间: 2023-04-11 16:20 阅读次数:539

1.在 vscode 中安装vim插件

https://marketplace.visualstudio.com/items?itemName=vscodevim.vim
如何vscode中可以快速的移动 / 配置
https://github.com/VSCodeVim/Vim#mac

vim模式:
normal模式
insert模式

会基本的光标移动:



会插入文字:
I(insert)
a(append)

退出insert模式:
esc
ctrl+[

在终端中使用vim/如何退出:
:wq
:q!

Ctrl和caps调换位置:
系统键盘修改修饰键

Esc还可以修改成别的键嘛

如何可以快速的移动:
配置
修改键盘设置

tips:
习惯Insert完就立马回到normal模式

2.掌握行相关的命令

移动:
行首:
0
^:到本行第一个不是blank字符的位置--------blank--------空格、tab、换行、回车键,推荐改键

行尾:
$
g:到本行最后一个不是blank字符的位置,推荐改键

插入:
行首:I
行尾:A
行前:O
行后:o

复制当前行:yy

粘贴:p

删除当前行:dd

扩展:认识vim配置的几个模式:insert和normal
vim2 / 扩展 / 认识 vim 配置的⼏个模式
https://github.com/VSCodeVim/
Vim#viminsertmodekeybindingsvimnormalmodekeybindingsvimvisualmodekeybindingsvimoperatorpendingmodekey
bindings

3.掌握vim的语法

vim语法:操作(operation)+动词(范围)
操作:
删除--d
删除并且进入insert模式--c
复制--y

基于单词/字串的移动
e--移动到单词的结尾
b--移动到上一个单词的开头
w--移动到单词的开头
ge--移动到上一个单词的结尾

组合:
cw--删除当前单词
ea--ea在当前单词结尾处添加

4.更有效率的处理单字符&undo/redo

删除光标所在的字符--x
删除光标前的字符--X
删除当前光标的字符并进入insert模式--s
删除当前光标所在行并进入insert模式--S
替换一个字符--r
替换多个字符--R

undo/redo:
可撤销块--进入插入模式开始,直到返回普通模式为止,在此期间输入或删除的任何内容都被当成一次修改
undo--u
redo--C-r

5.掌握可视化模式

可视化模式:
字符--v
行--V
块--C-v

退出:
esc
Ctrl-[
v
V

导航:
配合动作范围
o--切换可视区的光标位置
gv--回到上一次选择的选择区域
语法:选中+操作

技巧:
跨多行编辑:给多个行的后面加分号; --配合A或者I
赋值粘贴:利用系统的剪切板
尽可能的少用可视化模式--会增加操作的步骤

6.掌握文本对象

认识文本对象:
文本是结构化的,可以快速选择
范围

语法:
operator+(内部/外部)+文本对象
可视化模式+(内部/外部)+文本对象

内部--i
外部--a

对象:
w--一个单词
(或)--一对()
b--一对()
[或]--一对[]
{或}--一对{}
B--一对块{}
<或>--一对<>
t--XML标签
'--一对'
"--一对"
--一对
s--一个句子
p--一个段落

vim-textobj-arguments:
ia--不包含分隔符
aa--包含分隔符
技巧:
删除一个参数--daa
修改一个参数--cia

vim-textobj-entire:
ae--删除当前文本所有内容
ie--删除当前文本所有内容,但是不包含前面和后面的空格

7.在单文件中移动的更快

滚动:
向下滚动一屏--Ctrl-f(forward)
向下滚动一屏--Ctrl-b(backward)
向下滚动半屏--Ctrl-d
向上滚动半屏--Ctrl-u
向下滚动一行--Ctrl-e
向上滚动一行--Ctrl-y
基于配置(更容易记忆):
上5行--shift+k
下5行--shift+j
配置:normal和visual

将当前行置于屏幕中央--zz
将当前行置于屏幕顶部附近--zt(top)
将当前行置于屏幕底部--zb(bottom)
跳到文件首--gg
跳到文件尾--G
跳到指定行:行数+gg或行数+G

8.掌握搜索

单行:
f--正向移动到下一个{char}所在之处
F--反向移动到上一个{char}所在之处
t--正向移动到下一个{char}所在之处的前一个字符上
T--反向移动到上一个{char}所在之处的后一个字符上
;--重复上次的字符查找命令
,--反转方向查找上次的字符查找命令
使用技巧:移动的时候用f和结合c/d使用t

全局:
/--向后查
?--向前查
n/N
查看搜索历史--/+下下方向键
技巧--写单词的前几个字母就可以
向上查--/#
向下查--/*

9.更高效的移动-想去哪里就去哪里

vim-easymotion:
Start of word forwards-- w
Start of word backwards-- b
End of word forwards-- e
End of word backwards-- ge
Matches beginning & ending of word,camelCase,after ,and after #forwards-- l
Matches begining & ending of word,camelCase,after
,and after # backwards-- h
Start of line forwards---- j
Start of line backwards---- k
JumpToAnywhere motion;default behavior matches beginning & ending of word,camelCase,after _ and after #---- j

vim-sneak:
s+2个字符
改键:替换原生的f功能和利用映射来实现原有的s/S/z/Z
v/normol+f+2char
operation+z+2char

10.认识数字&&点的威力

数字:
语法:数字+operator+动作(范围)或operator+数字+动作(范围)
好处--保持了连贯的撤销历史记录
坏处--需要有思考的时间

点:
重复上一次的修改:
做了更新:增加/删除/修改
离开插入模式之前的全部按键操作都记录

在删除一个单词的命令选择上:bde或dbx或diw
核心:一键移动 一键操作(加分号:jLa;或jA;)
查找手动替换
能够重复就不要用次数--执行重复回退

11.掌握多文件之间的跳转

定位:
标记:单文件(m+小写字母--mm)和多文件(m+大写字母--mM)
跳转:'跳转到标记的行和`跳转到标记的行和列(更精准)

jump to definition--gd

跳转:
理解跳转:
任何大于一个单词或超过当前行导航的移动都是一个跳转
命令:
'跳转到标记的行
`跳转到标记的位置(行和列)
gg
/向后搜索
?向前搜索
n重复上一次搜索,相同方向
N重复上一次搜索,相反方向
gd
{跳转上一个段落
}跳转下一个段落
不会记录的命令:翻页和shift+jk
特别说明vim-sneak的跳转只记录一次

记录跳转:Vim保留了你移动前位置的记录或使用:jumps查看

向后跳--ctrl+i
向前跳--ctrl+o

12.处理包裹字符的符号

vim-surround:
Change existing surround to desired--c s < desired>
Add desired surround around text defined by-- y s
Delete existing surround-- d s
Surround when in visual modes (surrounds full selection)-- S

13.替换字符串

替换命令:substitute:
公式--:[range]s[ubstitute]/{pattern}/{string}/{flags}
rang--范围:
$--到尾部
%--全文
number,number
flag:g或c
可视化模式下--全部替换

多选操作:gb--adds another cursor on the next word it finds which is the same as the word under the cursor

14.掌握悬浮显示&大小写&注释

悬浮显示:gh--hover
大小写:
nomal--gu或gU
可视化--u或U
大小写互换--~

注释:
gc--单行注释
gC--多行注释
tip--normal和可视化模式通用

15.掌握窗口的管理

新建窗口:
左右--C-w v
上下--C-w s
窗口切换:
C-w hjkl
C-w w
关闭窗口:
C-w+c
只保留当前窗口,关闭其他所有的窗口--C-w o

扩展:
利用vscode的自定义快捷键
新建窗口:
Command+\
Command+ctrl+\
关闭窗口:
command+w
command+k+w
窗口切换:
shift+方向键
没改键的话使用--shift+ctrl+jkhl

16.如何删除一个函

%--匹配括号
vim-indent-object
方式:
dap--基于段落text-object
dal--基于vim-indent-object
v$%d--优化--使用配置或参数多个的话,那么使用两次--v$%$%

17.掌握宏

宏--可以录制一系列动作
开始录制--qa--a是寄存器的名字,也可以用别的
结束录制--q
查看录制好的宏--:reg a
使用--@a--a是寄存器的名字
调用最后一次执行的宏--@@--对于茜个宏需要连续调用的话,这个命令十分有用
重复执行--数字+@+寄存器--10@a
安全机制--报错就停
追加--qA
修改一个已知的宏

技巧:
先规范好光标的位置
移动的时候使用相对位置:
比如w e textObject / f t都可以
但是jkhl就是绝对的位置

18.vim调用vscode的命令

格式化文档:
shift+alt+f

+f+d

重命名:
f2
+r+n
折叠代码:
alt+cmd+[
+[

#### 19.操作文件
切到files explorer区域
切到editor区域:
vim--shift+ctrl+l
vscode--ctrl+'

创建文件:
在files explorer --a
在editor--vim--leader+n+f
vscode--cmd+n
使用插件file Utils

创建文件夹:
在files explorer--A
在editor--vim--leader+n+d
使用插件file Utils

不足之处望指正

发表评论

邮箱地址不会被公开。 必填项已用*标注

标签云