以前都是在windows下开发的,习惯使用了sourceinsight等开发工具。
后来转为linux内核开发,在windows下利用ssh远程服务器,还是可以利用samba或者是其它的一些软件将代码进行远程共享,然后使用windows下的图形界面进行代码分析。
但是由于kernel的代码非常多,除非非常熟悉的人,只在sourceinsight里添加一部分的代码,否则使用sourceinsight在进行一些搜索操作时,耗时其实是挺长的。
一直知道vim的存在,但是由于vim都是命令行操作,对于命令行的操作有一定的恐惧心里,所以一直没提上日常。
后来开发环境变成了ubuntu,vim的使用变成了势在必行的事情,所以着手使用vim开发,发现vim结合shell其实是非常好的开发工具,加上vim的一些插件,更是如虎添翼。
vim的使用还需继续探索,在这篇文档里逐步补充。
---------------------------------------------------------------------------------------------------------------------------------
vim插件管理工具:Pack&Vundle
个人电脑建议使用Pack安装和管理插件,比较方便便捷。
服务器的单个用户,建议使用Vundle安装和管理插件,因为毕竟最好不要改变整体环境。
Pack的使用参照:
vim插件管理工具pack (smslit.cn)https://blog.smslit.cn/2018/06/25/vim-pack/Vundle的使用参照:
vim实战:插件安装(Vundle,NerdTree) (shuzhiduo.com)https://www.shuzhiduo.com/A/gVdnGVWEzW/
安装好插件管理工具后,除了部分小众插件,近乎都可以从github上搜索到,通过上面两个插件管理工具均可以很方便的安装。
---------------------------------------------------------------------------------------------------------------------------------
插件的配置:~/.vimrc
插件安装好后,可以对各种插件进行自己喜欢方便的配置。
配置的方式可谓是多种多样了,网上搜索vimrc即可出现很多教程,
这里列举几个网页供参考:
(97条消息) vim配置vimrc详解_Commander-CSDN博客_vimrc配置详解https://blog.csdn.net/u014805066/article/details/62891622(97条消息) Vim的终极配置方案,完美的写代码界面! ——.vimrc_amoscykl的博客-CSDN博客_vimrchttps://blog.csdn.net/amoscykl/article/details/80616688(97条消息) 最全最好用的vim配置(即.vimrc文件的配置),附加vim操作技巧_大数据开发-CSDN博客_vimrc配置https://blog.csdn.net/zytbft/article/details/74551299贴一个我的vimrc供参考吧:
"According to the line Number"
set number
"set nonu"
"Syntax highlighting"
syntax enable
syntax on
"Support mouse"
set mouse=a
"set mouse-=a"
"Lines highlighted"
set cursorline
"Search ignores case"
set ignorecase
"Highlight the keywords found in the search"
set hlsearch
"Indented style"
set autoindent
set cindent
set tabstop=4
set softtabstop=4
set shiftwidth=4
"Taglist"
set expandtab
set cino=g0,:0
let Tlist_WinWidth=60
let Tlist_Exit_OnlyWindow=1
"let Tlist_Use_SingltClick=1"
"let Tlist_Auto_Open=1"
let Tlist_Show_One_File=1
"Cscope"
set cscopequickfix=s-,c-,d-,i-,t-,e-
if has("cscope")
set csprg=/usr/bin/cscope
set csto=0
set cst
set nocsverb
set cspc=3
"add any database in current dir
if filereadable("cscope.out")
cs add cscope.out
"else search cscope.out elsewhere
else
let cscope_file=findfile("cscope.out", ".;")
let cscope_pre=matchstr(cscope_file, ".*/")
if !empty(cscope_file) && filereadable(cscope_file)
exe "cs add" cscope_file cscope_pre
endif
endif
endif
"Winmanager"
let g:winManagerWindowLayout="TagList|FileExplorer,BufExplorer"
let g:AutoOpenWinManager = 1
"airline"
let g:airline#extensions#tabline#enabled = 1
"shortcuts"
"F1"
nmap <F1> :set mouse-=a<cr>
"F2"
nmap <F2> :set nonu<cr>
"F3"
map <F3> N
"F4"
map <F4> n
"F5"
map <F5> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
imap <F5> <ESC>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR> :TlistUpdate<CR>
set tags=tags
set tags+=./tags
"F7"
map <F7> gg
"F8"
map <F8> G
"F9"
nmap <F9> :WMToggle<cr>
"F10"
"The new session"
"F11"
"Full screen"
"F12"
nmap <F12> :u<cr>
"Alt+->"
map <M-right> <ESC>:bn<RETURN>
"Alt+<-"
map <M-left> <ESC>:bp<RETURN>
"Ctrl+m"
map <C-m> <ESC>:set mouse=a<cr>
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
Plugin 'vim-airline/vim-airline'
Plugin 'vim-scripts/taglist.vim'
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
---------------------------------------------------------------------------------------------------------------------------------
我使用的主要插件
ctag :主要是用于查找定义
cscope:ctag的加强版,也主要是查找功能
neocomplete:代码补全,此功能可能需要重新编译vim,下一板块介绍
nerdtree:显示文件路径结构
vim-airline vim-airline-themes :装饰vim界面的
taglist:图形界面显示ctag的
winmanager:窗口管理的
---------------------------------------------------------------------------------------------------------------------------------
插件安装过程中可能遇到的问题:
大部分的插件使用网上都很全,配置也讲的比较详细。
这里只说一下neocomplete。
neocomplete是一款代码补全插件,总体使用效果还不错,但是他需要一个vim里的lua功能,ubuntu默认vim是没有这个功能的,就需要重新编译vim。
vim 重新编译,支持lua (compile vim with lua) - spch2008 - 博客园 (cnblogs.com)https://www.cnblogs.com/spch2008/p/4593370.html因为首次接触,所以重新编译vim的过程弄的很慌乱,每次编完,重新打开VIM都是满屏的红色报错,甚是吓人,第一反应,装错了,重装,反复搞了好几次,还是满屏红色报错,遂冷静下来看看报的是啥错。
经过仔细排查,是几个跟插件有关的错,把先前已经安装的插件卸载,然后重启,就不报错了。在不报错的基础上,重新编译好vim,lua功能也加上了。再把喜欢的插件加回来,所有插件都可以正常使用了。完美。