无题
注意:本文中所有的 command键 等价于 ctrl键
1、vim 三种基本的工作模式
vim有三种基本的工作模式,分别为:命令模式、末行模式、编辑模式。关于这三种工作模式的介绍,请见下文。
1.1、命令模式
使用vim打开文件之后,首先进入命令模式,它是vim编辑器的入口模式。在命令模式下,通过使用命令对文件进行常规的编辑操作,例如:复制、粘贴、删除、定位、翻页等等。
1.2、末行模式
末行模式是vim编辑器的出口,要退出vim,必须要在末行模式下。在末行模式下,执行退出文件、保存并退出文件等操作。
1.3、编辑模式
正常的编辑文字模式。
2、三种模式的切换操作
(1)vim打开一个文件进入的就是命令模式,另外两种模式需要回到命令模式才能进入彼此。
(2)在命令模式中按下i,I,o,O,a,A,r,R
任何一个字母后进入编辑模式,进入编辑模式后,下方会出现INSERT
或者REPLACE
字样,按Esc
键退出编辑模式,回到命令模式。
(3)在命令模式中按下:,/,?
中任意一个即可进入末行模式,末行模式可以对文档或者vim环境进行操作,例如查找、读取、存盘、替换、离开、显示行号等。
3、各种模式切换
普通模式 - - NORMAL - - ———> 插入模式 - - INSERT - -
insert
i 在光标前插入
I 在行首插入
open a new line
o 在下一行插入
O 在上一行插入
append
- a 在光标后插入
- A 在行尾插入
普通模式 - - NORMAL - - <——— 插入模式 - - INSERT - -
- ESC
- jj / CapsLock
普通模式 - - NORMAL - - ———> 可视模式 - - VISUAL - -
- v
普通模式 - - NORMAL - - <——— 可视模式 - - VISUAL - -
- v
- Esc
普通模式 - - NORMAL - - ———> 命令模式
- :
普通模式 - - NORMAL - - <——— 命令模式
- Esc
总结
4、光标移动
解释:
- w : word
- b : begin
- e : end
- ge : 不太常用
字符 | 单词 | 行 | 跳转 | 句和段 |
---|---|---|---|---|
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行 | , 反向查找上次的查找 |
5、动作 motion
- it : inner tag
- is : inner sentence
- ip : inner paragraph
6、操作符
操作符 | 说明 |
---|---|
d(delete) | 删除 |
c(change) | 修改(删除并且进入插入模式) |
y(yank) | 复制 |
v(visual) | 选中并且进入 VISUAL 模式 |
p(paste) | 粘贴 |
b(bracket) | 小括号的简写 |
B(Bracket) | 大括号的简写 |
e(entire) | 全选 |
7、大小写
- ‘g’ means goto
- ‘U’ means Uppercase
- ‘u’ 与上一个相反
Tips
- gd : goto definition 跳转到定义
- ctrl + o : 跳回
- gh : goto (mouse) hover 鼠标悬浮
- gt : goto tab 跳转下一个标签页
- gT : 与上一个相反 跳转上一个标签页
- ngt / ngT : 跳转到第n个标签页
VSCode中的Vim
vscode中<leader>默认为space
<leader><leader> S{Charactor} : 寻找某个字符
<leader><leader> xxx : 详见配置
Motion Command | Description |
---|---|
<leader><leader> s <char> |
Search character |
<leader><leader> f <char> |
Find character forwards |
<leader><leader> F <char> |
Find character backwards |
<leader><leader> t <char> |
Til character forwards |
<leader><leader> T <char> |
Til character backwards |
<leader><leader> w |
Start of word forwards |
<leader><leader> b |
Start of word backwards |
<leader><leader> l |
Matches beginning & ending of word,
camelCase, after _ , and after # forwards |
<leader><leader> h |
Matches beginning & ending of word,
camelCase, after _ , and after # backwards |
<leader><leader> e |
End of word forwards |
<leader><leader> ge |
End of word backwards |
<leader><leader> j |
Start of line forwards |
<leader><leader> k |
Start of line backwards |
<leader><leader> / <char>... <CR> |
Search n-character |
<leader><leader><leader> bdt |
Til character |
<leader><leader><leader> bdw |
Start of word |
<leader><leader><leader> bde |
End of word |
<leader><leader><leader> bdjk |
Start of line |
<leader><leader><leader> j |
JumpToAnywhere motion; default behavior
matches beginning & ending of word, camelCase, after _
and after # |
<leader><leader> (2s|2f|2F|2t|2T) <char><char>
and
<leader><leader><leader> bd2t <char>char>
are also available. The difference is character count required for
search. For example,
<leader><leader> 2s <char><char>
requires two characters, and search by two characters. This mapping is
not a standard mapping, so it is recommended to use your custom
mapping.
- surround
Surround Command | Description |
---|---|
y s <motion> <desired> |
Add desired surround around
text defined by <motion> |
d s <existing> |
Delete existing surround |
c s <existing> <desired> |
Change existing surround to
desired |
S <desired> |
Surround when in visual modes (surrounds full selection) |
Some examples:
"test"
with cursor inside quotes typecs"'
to end up with'test'
"test"
with cursor inside quotes typeds"
to end up withtest
"test"
with cursor inside quotes typecs"t
and enter123>
to end up with<123>test</123>
多光标功能
🖱️ Multi-Cursor Mode
:warning: Multi-Cursor mode is experimental. Please report issues in our feedback thread.
Enter multi-cursor mode by:
- On OSX,
cmd-d
. On Windows,ctrl-d
. gb
, a new shortcut we added which is equivalent tocmd-d
(OSX) orctrl-d
(Windows). It adds another cursor at the next word that matches the word the cursor is currently on.- Running "Add Cursor Above/Below" or the shortcut on any platform.
Once you have multiple cursors, you should be able to use Vim commands as you see fit. Most should work; some are unsupported (ref PR#587).
- Each cursor has its own clipboard.
- Pressing Escape in Multi-Cursor Visual Mode will bring you to Multi-Cursor Normal mode. Pressing it again will return you to Normal mode.
vscode中可以使用 cmd + d 批量修改
vim中可以使用 gb 批量膝盖
将光标定位到终端
在settings.json添加如下快捷键
//由editor 转到 terminal |
space + t 即可跳转到终端中
跳转Tab
进入命令模式 :
- 输入 tabn : tab next 即进入下一个标签页
- 输入 tabp : tab prev 即进入下一个标签页