开工三个月了,逐渐学着使用VIM,放弃了曾经钟爱的VSCode ,以及尝试使用的CLion,原因是,工作中需要看Chromium源码,体量太大,后两者会让电脑呼呼的响,我心疼。下面说一些常用的点。
目录
1.<~/.vimrc>
set nocompatible "关闭与VI的兼容
set number "显示行号
filetype on
set history=1000
set background=dark "设置背景为灰色
syntax on "打开语法高亮显示
set autoindent "自动对齐,使用上一行的对齐方式
set smartindent "智能对齐方式
set tabstop=4 "tab占空格数
set showmatch "设置匹配模式,类似当输入一个左括号时匹配上相应的那个右括号
set ruler "在编辑过程中,在右下角显示光标位置的状态行
set incsearch "搜索自动定位
set mouse=a "接收鼠标事件
set shiftwidth=4 "缩紧识别
"设置不同文件不同缩进
autocmd FileType c,cpp set ts=2
autocmd FileType c,cpp set sw=2
autocmd FileType java set ts=4
autocmd FileType java set sw=4
"nerdtree文件管理器
nnoremap <silent> <F4> :NERDTree<CR>
execute pathogen#infect()
"添加查找路径find grep用到
"添加wildmenu,使用tab切换find的文件
set wildmenu
"添加根据缩进进行折叠设置
set foldmethod=indent
set foldlevel=1
2.跳转
文件内跳转(粒度从小到大)
hjkl 上下左右,尽量仅在跳一个字符的时候使用,训练自己使用其他命令
w e :在一行中往后走的时候用
Esc o 换行
$ 行尾 ^ 行首 % 匹配对应括号
*上一个出现光标所在词的位置,#与*相反 gd 到第一次出现的位置
查询后 n 下一个 N 上一个
{ }段前后跳转,代替jk
H 屏幕开头 L屏幕结尾 M屏幕中央
zz让光标所在行置中,zt让光标行上去,可以看下面,zb与zt相反
gg 文件头 G文件尾 448G 448行
control o 之前光标的位置
control i 之后光标的位置
control f/b 上下翻一整页,control e/y 上下滚动一行,control d/u 上下翻半页
v高亮选择 ggvG全选
文件间跳转
:find
:grep
:ls & :b1
:cs find s funcA
mM + `M
gf
:vsp 新建分屏
control w 切屏
3.修改文件
x i a r u I A U Control+r
删除一个字符,字母前插,字母后续,替换一个,撤销一个,行前查,行后续, 撤销整行,撤销之前的撤销
p 剪切和复制的东西放置在下一行上
/xxx 查找
d的使用感觉很玄学,删除一段内容,至于是多少,习惯决定,还有dap这种神奇的删除段内容
dd是合成命令,并非d+motion的形式 2dd删除两行
iterm中使用vim复制有问题,请使用 <“+Y>命令
>>, << 增加和减少本行的缩进。
多行注释:control v, shift i, "//", Esc Esc
4.控制文件
zr zR zM 分别是打开本折叠,打开全部折叠和关闭全部折叠
寄存器的使用,待学习,目前指挥“+Y组合技,还不能选词,整行来才行
:!ls 使用外部命令
:w Test 写入文件Test
:e 打开一个文件,或者刷新加载当前文件,比如git 外部修改后需要刷新。
5.控制VIM
:set statusline 修改状态栏
*表示目录下的任意文件 **表示目录及子目录下的文件
vim 下内置了pwd ls cd 等好用的命令
control w 切换窗体 :vsp 垂直新建窗体
:set xxx设置参数
更多见vimrc
6.命令模式下常用
cd <workspace>
vim
:set path? #查看当前查找路径,对find命令很好用,一般包括当前路径等
:pwd cd #查看当前路径和更改路径
grep -ir xxx * #查找要找的字符串
find **/xxx #<tab><tab>直到匹配上要找的文件
:cs find s xxx #cscope插件对C++代码有效
#vimgrep比grep好的地方,可以识别vim的模式