为什么用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 <buffer> <silent> 1; 0i# <ESC> autocmd Filetype markdown nmap <buffer> <silent> 2; 0i## <ESC> autocmd Filetype markdown nmap <buffer> <silent> 3; 0i### <ESC> autocmd Filetype markdown nmap <buffer> <silent> 4; 0i#### <ESC>
- 按下‘gvd‘在markdown将选中的代码中用c包含
autocmd Filetype markdown vmap gvd s```vim<CR><CR>```<Esc>kp
- 有时候要快速定位的文件中的某一行只记得大概位置,文件很长不想一页一页翻,gg和G只能定位到第一行和最后一行。也不想用‘数字键+gg’的形式,文件只有几十行还好要是几千行上万行要按4次数字键2次g,很不方便。因此可以这样配置:
noremap 1<space> 10<S-%> noremap 2<space> 20<S-%> noremap 3<space> 30<S-%> noremap 4<space> 40<S-%> noremap 5<space> 50<S-%> noremap 6<space> 60<S-%> noremap 7<space> 70<S-%> noremap 8<space> 80<S-%> noremap 9<space> 90<S-%>
按下‘数字+空格’可以定位到文件的百分之几处,比如文件有2000行按下‘5+空格’就能定位到文件中的1000行处,不管文件多长只需两次按键就能定位到大概位置。
- 选中文字按下‘gvx’加粗,按下‘gvf’加颜色,按下‘gvc’将图片移至网页中部。
" 设置gvx键将选中的文字加**号 autocmd Filetype markdown vmap gvx s****<Esc>hhp " 设置gvf键将选中的文字加上<font>标签 autocmd Filetype markdown vmap gvf s<font color=red></font><Esc>bbp " 设置gvc键将选中的文字加上<center>标签 autocmd Filetype markdown vmap gvc s<center><CR><CR><CR></center><Esc>kp " 设置gv`键将选中的文字加上``标签 autocmd Filetype markdown vmap gv` s``<Esc>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 <silent> t :<c-u>call LOCA_COL(v:count)<CR>
- $和^这两个符号的按键很不方便,因此重新设置:
noremap gl g$ noremap gh g^
- 每次想要换一行时按o都要按Esc退出来,干脆重新映射快捷键。
:nnoremap <c-k> a<CR><ESC> " 按Ctrl+k鼠标当前字符后分割为两行 :nnoremap <NL> i<CR><ESC> " 按Ctrl+j鼠标当前字符前分割为两行
" 按ctl+l在当前行下方添加一行,按ctl+h在当前行上方添加一行
nmap <C-l> o<ESC> nmap <C-h> O<ESC>
- 插件,很多人喜欢用置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 <C-a> ggvG"y+ " 在视图和选择模式下按ctrl+c,复制选中的内容 vnoremap <C-c> "+y " 设置在常规模式下按下ctrl+v,粘贴"+p中的内容 noremap <C-v> "+p imap <C-v> <ESC>"+p " 剪切 vmap <C-x> "+x " 保存ctrl+s nmap <C-s> :w<CR> vmap <C-s> <C-C>:w<CR> imap <C-s> <Esc>:w<CR>
作者:yangsail
出处:https://www.cnblogs.com/yangsail/p/17810908.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」