为什么用vim

最开始用的是notepadd++,后来听说其作者是个台独分子,因此坚决不用。那就用vim吧反正在linux上也用,学习一遍windows、linux上都可以用。

后来看Linux内核代码必须要用到vim,为什么?因为windows下文件名相同大小写不同不能同时存在一个文件夹中,比如main.c和MAIN.C不能同时存在一个文件夹中。Linux内核和一些C/C++库有很多这样的文件。因此必须在Linux操作系统阅读这些库源码。

而我的工作电脑是Windows,Linux的装在虚拟机中,为了减少内存使用提高运行速度就将图形界面删掉了,因此source insight和vscode都不能用了只能用vim。其实vim配合cscope和ctags挺好用的,没有图形界面的拖累即便在虚拟机中速度也很快,比物理机上的source insight还快。

后来发现用vim写markdown是真方便。

学习vim配置花了很长时间,逐步摸索适合自己的vim配置。熟练了以后就离不开了。下面是我的vim配置,linux下放在~/.vimrc文件中,windows下放在vim的安装目录/Vim/_vimrc文件中。

将光标定位到标题那一行按下‘数字+;‘就能插入#号,比如'3;'就会在当前行开始处插入‘### ’。另外按‘]’可以跳到下一个标题处,同理‘[’跳到上一个标题处。

autocmd Filetype markdown nmap 1; 0i#

autocmd Filetype markdown nmap 2; 0i##

autocmd Filetype markdown nmap 3; 0i###

autocmd Filetype markdown nmap 4; 0i####

按下‘gvd‘在markdown将选中的代码中用c包含

autocmd Filetype markdown vmap gvd s```vim```kp

有时候要快速定位的文件中的某一行只记得大概位置,文件很长不想一页一页翻,gg和G只能定位到第一行和最后一行。也不想用‘数字键+gg’的形式,文件只有几十行还好要是几千行上万行要按4次数字键2次g,很不方便。因此可以这样配置:

noremap 1 10

noremap 2 20

noremap 3 30

noremap 4 40

noremap 5 50

noremap 6 60

noremap 7 70

noremap 8 80

noremap 9 90

按下‘数字+空格’可以定位到文件的百分之几处,比如文件有2000行按下‘5+空格’就能定位到文件中的1000行处,不管文件多长只需两次按键就能定位到大概位置。

选中文字按下‘gvx’加粗,按下‘gvf’加颜色,按下‘gvc’将图片移至网页中部。

" 设置gvx键将选中的文字加**号

autocmd Filetype markdown vmap gvx s****hhp

" 设置gvf键将选中的文字加上标签

autocmd Filetype markdown vmap gvf sbbp

" 设置gvc键将选中的文字加上

标签

autocmd Filetype markdown vmap gvc s

kp

" 设置gv`键将选中的文字加上``标签

autocmd Filetype markdown vmap gv` s``P

每次在当前行定位列非常不方便,按键‘gm’只能定位到屏幕行中央,干脆设置按下‘数字+t’可以定位到屏幕行的百分比处,比如按下‘5+t’将跳到屏幕行中间位置。

function! LOCA_COL(count)

let aaa = v:count

:exe 'normal' 'g^'

let scol_gs = virtcol('.')

:exe 'normal' 'g$'

let scol_ge = virtcol('.')

:exe 'normal' (scol_gs + float2nr(round((scol_ge - scol_gs + 1) * min([9, aaa]) / 10.0))) . '|'

endfunction

nnoremap t :call LOCA_COL(v:count)

$和^这两个符号的按键很不方便,因此重新设置:

noremap gl g$

noremap gh g^

每次想要换一行时按o都要按Esc退出来,干脆重新映射快捷键。

:nnoremap a " 按Ctrl+k鼠标当前字符后分割为两行

:nnoremap i " 按Ctrl+j鼠标当前字符前分割为两行

" 按ctl+l在当前行下方添加一行,按ctl+h在当前行上方添加一行

nmap o

nmap O

插件,很多人喜欢用置Vundle管理vim插件,其实根本不需要,vim8.0后就自带插件管理器了。到~/.vim/pack/dist/start目录(没有就创建一个)中执行git clone 插件github地址就可以安装插件,vim启动时会自动加载插件。

在~/.vim/pack/dist/start目录中安装插件:

" markdow浏览

git clone https://github.com/iamcco/markdown-preview.nvim.git

" 写markdow时,粘贴图片会用到

git clone https://github.com/img-paste-devs/img-paste.vim.git

" 代码补全,比较难安装

git clone https://github.com/ycm-core/YouCompleteMe.git

" 多光标编辑,类似vscode中ctrl+d多处选中

git clone https://github.com/terryma/vim-multiple-cursors.git

" 注释用的

git clone https://github.com/tpope/vim-commentary.git

" 树形目录显示

git clone https://github.com/preservim/nerdtree.git

" 底部状态栏

git clone https://github.com/vim-airline/vim-airline.git

当然在windows下还可以设置ctrl+c、ctrl+v等可以复制粘贴到其他窗口。

" 全选

nnoremap ggvG"y+

" 在视图和选择模式下按ctrl+c,复制选中的内容

vnoremap "+y

" 设置在常规模式下按下ctrl+v,粘贴"+p中的内容

noremap "+p

imap "+p

" 剪切

vmap "+x

" 保存ctrl+s

nmap :w

vmap :w

imap :w

友情链接