建立、编辑linux内核工程

用过source insight、vim(未使用插件)建立编写linux内核工程,一直想找个更合适的工具。毕竟,source insight是商业软件,而vim如果不使用插件还是不怎么方便。了解到vim和emacs都可以用插件构建出源码工程,尝试过emacs没能成功,也许是我用vim已经习惯了,最近用vim尝试了一下,就没有问题。

vim的linux内核工程主要参考了《Linux内核开发环境管理和搭建(Git&Vim)》。Ubuntu系统下。

(1)从https://www.kernel.org/下载最新稳定版本linux-4.16.4.tar.xz,运行tar -xvf linux-4.16.4.tar.xz解压。

(2)在https://download.csdn.net/download/notbaron/9907972 下载所需要的插件。

(3)运行cd后,在当前用户主目录建立文件夹.vim/autoload/,.vim/syntax/,.vim/doc/,.vim/plugin/。

(4)将plug.vim复制到.vim/autoload/ ; 

taglist的doc文件夹内容复制到.vim/doc/,plugin文件夹内容复制到.vim/plugin/ ;

winmanager的doc文件夹内容复制到.vim/doc/,plugin文件夹内容复制到.vim/plugin/ ;

minibufexpl.vim复制到.vim/plugin/ ;

a.vim复制到.vim/plugin/ ;

grep.vim复制到.vim/plugin/ ;

visualmark.vim复制到.vim/plugin/ 。

(5)对于supertab.vmb

vim supertab.vmb

:so %

(6)ctags 在Ubuntu上自带。

内核源码linux-4.16.4中执行make tags,会生成tags

(7)tar -xzvf cscope-15.8b.tar.gz 解压cscope, sudo make & make install编译安装

在源码根目录linux-4.16.4中执行如下:

$ cscope -Rbq

会生成三个文件, cscope.in.out, cscope.out, cscope.po.out

(8)运行cd后,在当前用户主目录建立文件.vimrc,内容如下:

" Specify a directory for plugins
" - For Neovim: ~/.local/share/nvim/plugged
" - Avoid using standard Vim directory names like 'plugin'
call plug#begin('~/.vim/plugged')

" Make sure you use single quotes
" 注意要使用单引号

" Shorthand notation; fetches https://github.com/junegunn/vim-easy-align
" 如果插件在 GitHub 的地址是 https://github.com/junegunn/vim-easy-align
" 可以缩写成下面这样
Plug 'junegunn/seoul256.vim'
Plug 'junegunn/vim-easy-align'

" Any valid git URL is allowed
" 或者直接给定插件 git 地址
Plug 'https://github.com/junegunn/vim-github-dashboard.git'

" Multiple Plug commands can be written in a single line using | separators
" 多个 `Plug` 命令可以写在一行,用 `|` 符号分割
Plug 'SirVer/ultisnips' | Plug 'honza/vim-snippets'

" On-demand loading
Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }

" Using a non-master branch
Plug 'rdnetto/YCM-Generator', { 'branch': 'stable' }

" Using a tagged release; wildcard allowed (requires git 1.9.2 or above)
Plug 'fatih/vim-go', { 'tag': '*' }

" Plugin options
Plug 'nsf/gocode', { 'tag': 'v.20150303', 'rtp': 'vim' }

" Plugin outside ~/.vim/plugged with post-update hook
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }

" Unmanaged plugin (manually installed and updated)
Plug '~/my-prototype-plugin'

" Initialize plugin system
call plug#end()

syntax enable

syntax on

colorscheme desert

set tags=/home/yong/linux-4.16.4/tags

let Tlist_Show_One_File=1

let Tlist_Exit_OnlyWindow=1

let g:winManagerWindowLayout='FileExplorer|TagList'

nmap wm :WMToggle

set cscopequickfix=s-,c-,d-,i-,t-,e-

cs add /home/yong/linux-4.16.4/cscope.out /home/yong/linux-4.16.4

let g:miniBufExplMapCTabSwitchBufs = 1

let g:miniBufExplMapWindowNavVim = 1

filetype plugin indent on

set completeopt=longest,menu

let g:SuperTabRetainCompletionType=2

let g:SuperTabDefaultCompletionType="<C-X><C-O>"
 
(9) Vim-plug (plug.vim)是一个 mini 的插件管理器

打开vim后执行:PlugInstall来安装插件,:PlugUpdate来更新插件,执行 :PlugClean来移除未使用的插件,:PlugUpgrade来更新vim-plug本身。PlugStatus:查看插件状态。

(10)进入源码linux-4.16.4目录,运行vim,在vim中执行wm,或者:WMToggle。https://blog.csdn.net/sxw1002/article/details/54866124

常用操作

ctrl + w + h  光标focus左侧树形目录

ctrl + w + l  光标focus右侧文件显示窗口

ctrl + w + w  光标自动在左右侧窗口切换

ctrl + w + r  移动当前窗口的布局位置

O  递归打开选中结点下的所有目录

x  合拢选中结点的父目录

X  递归合拢选中结点下的所有目录

P  跳到根结点

p  跳到父结点

K  跳到当前目录下同级的第一个结点

J  跳到当前目录下同级的最后一个结点

k 跳到当前目录下同级的前一个结点

j  跳到当前目录下同级的后一个结点


试用了一下,觉得不好用,想查找include/linux/mm.h文件中的typedef struct page,最后vim卡住不动了。

猜你喜欢

转载自blog.csdn.net/eidolon_foot/article/details/80169664