为什么用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文件中。

  1. 将光标定位到标题那一行按下‘数字+;‘就能插入#号,比如'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>
  1. 按下‘gvd‘在markdown将选中的代码中用c包含
autocmd Filetype markdown vmap gvd s```vim<CR><CR>```<Esc>kp
  1. 有时候要快速定位的文件中的某一行只记得大概位置,文件很长不想一页一页翻,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行处,不管文件多长只需两次按键就能定位到大概位置。

  1. 选中文字按下‘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
  1. 每次在当前行定位列非常不方便,按键‘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>
  1. $和^这两个符号的按键很不方便,因此重新设置:
noremap gl g$
noremap gh g^
  1. 每次想要换一行时按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>
  1. 插件,很多人喜欢用置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
  1. 当然在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 国际」许可协议进行许可。

posted @   仰望星空_22  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题