1.vscode+vim
学习资源链接
[学习视频推荐]( 指尖飞舞:vscode + vim 高效开发(系列视频)_哔哩哔哩_bilibili )
[csdn文章]( (121条消息) [Vim]Vscode 配置 Vim_Nutlets的博客-CSDN博客_vscodevim配置 )
vscode的配置文件
可以通过修改settings.json文件自己去配置自己的快捷键
"update.mode": "manual",
"vim.easymotion": true,
"vim.incsearch": true,
"vim.useSystemClipboard": true,
"vim.useCtrlKeys": true,
"vim.hlsearch": true,
"vim.insertModeKeyBindings": [
{
"before": [
"j",
"k"
],
"after": [
"<Esc>"
]
}
],
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": [
"<leader>",
"d"
],
"after": [
"d",
"d"
]
},
{
"before": [
"<C-n>"
],
"commands": [
":nohl"
]
},
{
"before": [
"K"
],
"commands": [
"lineBreakInsert"
],
"silent": true
},
{
"before": [
"<Up>"
],
"after": [
"<Nop>"
]
},
{
"before": [
"<Down>"
],
"after": [
"<Nop>"
]
},
{
"before": [
"<Left>"
],
"after": [
"<Nop>"
]
},
{
"before": [
"<Right>"
],
"after": [
"<Nop>"
]
}
],
"vim.leader": "<space>",
//cancel those vim shortcuts reflections,use normal shortcuts
"vim.handleKeys": {
"<C-a>": false, //collect all
"<C-f>": false,
"<C-v>": false,
"<C-c>": false
}
键盘图
vim键盘图
[完整链接]( 史上最全Vim快捷键键位图(入门到进阶) | 菜鸟教程 (runoob.com) )
2.VIM的快速入门
1.为什么学习vim
装逼
快
2.vim的四种模式
- normal模式
- insert模式
i在光标前插入–infront ,a在光标后面插入–after,o向下另起一行进行插入编辑,O向上另起一行
- visual 模式
- command 模式
按:(英文冒号)键
3.光标移动(普通模式下)
左 | 下 | 上 | 右 |
---|---|---|---|
h | j | k | l |
-
w 跳到下一个单词的开头(常用)
-
b if光标在本单词开头,跳到上一个单词开头,否则本单词开头**(begin)**(常用)
-
e if 光标在本单词结尾,跳到下一个单词结尾,否则本单词结尾**(end)**
-
ge 上一个单词结尾(get end)
-
0 跳到行首
-
^ 跳到行首开始的第一个非空字符(可用H代替,映射)
-
$ 跳到行尾(可用大写L代替,映射)
-
gg 第一行 10gg或10G跳转到第10行
-
G 最后一行
f{char} | 向后找字母char |
---|---|
F{char} | 只能在这一行向前找字母char |
; | 重复上次的字符查找操作 |
全文搜索
全文查找:/
;用法是按下正斜线/
,进入命令行模式,输入待查找的字符,然后回车,光标即可移动到匹配处;n
(即next的缩写)移动到下一个匹配处,N
移动到上一个匹配处。
全局替换
:[替换起始位置,末位置]/被替换/替换他的/参数[g]或[c]
全选删除和全选复制
ggdG
ggyG
动作
i(inner) | a(around) | ||
---|---|---|---|
i" | “(foo)” | (“foo”) | a" |
iw | (foo) | ( foo)foo前空格 | aw |
ps:()中为选中内容
诸如"",(),{},[]等对称结构符号,i为选其中内容不包括符号,a包括内容和符号
4.操作符
- x 删除当前光标下的字符
- d(delete) dd删除一行,die(删除所有),dw删除一个单词
- c(change) cc删除一行,并进入插入模式,cie(修改所有)
- y(yank) yyp复制这一行,并复制到下一行
- v(visual) 进入visual模式,可视模式=>选择?? 例子----"vjjjjj+y 选择多行复制
ps:d和c有剪切效果
- u 撤销
- . 重复上次操作
- p (小写)粘贴到光标后
- P(大写)粘贴到光标前
- s 用一个新文本替换光标处字符
- S 用新文本替换这一行
- r字符换字符 (replace)
- R 新文本替换与他等长的字符
组合键
-
ciw 选中单词删除并进入插入模式
-
yiw 选中并复制单词
-
diw 选中并删除单词
-
ci< 选中被<>包围的单词并修改
-
h+dd/cc/yy 向下删除/修改/复制n行,包括当前行
-
d/c/y+ f{char} 删除/修改/复制到向后的char字符
-
d/c/y+^/$ 删除/修改/复制到开头/结尾切换大小写
5. 切换大小写
- ~ 将光标下的改变大小写
- 3~ 将光标位置开始的3个字母改变大小写
- g~~ 改变当前行的字母大小写
- gUU 改当前行全部为大写
- guu 当前行全部为小写
- gUaw 将光标下的单词改成小写
- guaw 将光标下的单词改成大写
6.tips
- g+d go to document相当于ctrl+左点击
- 如何缩进
在插入模式下,tab键即可
normal模式下,** >> 缩进, << **取消缩进
7.问题及解决办法
1.在insert模式下按jj无法变成normal模式
**解决办法:**将settings.json文件复制到全局设置中去
8.vi与vim与neovim
[vi与vim的区别以及常用命令]( (122条消息) vi与vim的区别以及常用命令_巴卡巴卡哇的博客-CSDN博客_vi和vim )
’ vim’是vi的升级版
9.翻屏
Ctrl+f: 向下翻一屏;
Ctrl+b: 向上翻一屏;
Ctrl+d: 向下翻半屏; //d可理解为down
Ctrl+u: 向上翻半屏 //u可理解为up
3.vim+IDEA
配置文件 .ideavimc
inoremap jk <ESC>
nnoremap <Down> <Nop>
nnoremap <Up> <Nop>
nnoremap <Right> <Nop>
nnoremap <Left> <Nop>
nnoremap L $
nnoremap H ^
" vim的默认寄存器与系统剪切板共存
set clipboard+=unnamed
set history=100000
set keep-english-in-normal
"" plugins
Plug 'https://github.com/tpope/vim-surround'
set surround
set scrolloff=5
" Do incremental searching.
set incsearch
" Don't use Ex mode, use Q for formatting.
map Q gq
如何在normal模式下禁止中文输入,将中文输入全部变为英文输入
[解决方法]( (124条消息) 改善编程体验: IdeaVimExtension介绍 _weixin_34405925的博客-CSDN博客 )
4.vim+linux
自定义配置文件
vim ~/.vimrc
1"set 前加冒号:与不加,一样
2 : set nu
3 inoremap jk <ESC>
4 : syntax on
5 "设置行号
6 set number
7 :set clipboard=""
8 "关闭报错音
9 set noeb
10 "设置背景 参数为[dark][light]
11 set bg=dark
12 set ruler
13 set showmode
14 set hlsearch
文件操作
vim 文件名??
q 退出quit
w 保存write
:wq 保存退出
:q! 不保存退出
:e!放弃修改,恢复原样
vim与寄存器
寄存器:存储文件内容的容器,类似于windows系统下的剪切板clipboard
查看寄存器内容
:reg [寄存器名称]
Type说明:
In the output above, the Type column means the type of the content. It may contain three different values:
- c – characterwise text
- l – linewise text
- b – blockwise text
寄存器分类
无名寄存器 “” | 缓存最后一次操作内容 |
---|---|
数字寄存器 "0-"9 | “0 缓存最近一次复制操作 "1~"9最近一到九次删除操作 |
具名寄存器 ”a"z或“A"Z | 定义寄存器的名字 |
模式寄存器 ”/ | 缓存最近搜索命令 |
只读寄存器 “:”. "% "# | 最近插入命令,最近插入文本 ,当前文件名 ,当前交替文件名 |
黑洞… | |
表达式… | |
选择与拖曳… | |
行内… |
关于寄存器的复制与粘贴操作
"nyy n可以为字母或数字,复制到"n寄存器中
"b3yy 复制当前行和下面2行 到 “b 字母寄存器
“ap 粘贴 “a 字母寄存器的内容
[相关问题]( (126条消息) vim中寄存器使用和vim标记。_rainysia的博客-CSDN博客_vim 寄存器 )