笔记本电脑维修查询_硅基智慧

编译VIMIDE(适用于C语言开发人员)

笔记本无法开机 Linux

================================

使用vim打造IDE, 针对C语言开发者

建议使用gvim

================================

先上两个截图

编译VIMIDE(适用于C语言开发人员)

编译VIMIDE(适用于C语言开发人员)

# 安装ctags

1. 下载地址: http://ctags.sourceforge.net/

# 安装cscope

1. 下载地址: http://cscope.sourceforge.net/
2. 修改源码,使其支持递归搜索文件夹的软链接

修改文件: dir.c

修改方式: 替换函数调用 lstat 全部替换为 stat

3. 编译源码可能出现的错误

错误: fatal error: curses.h: No such file or directory

解决: sudo apt install libncurses5-dev libncursesw5-dev

# 安装ruby, command-t插件会用到

sudo apt install ruby ruby-dev

# 安装vim, vim-gtk

sudo apt install vim vim-gtk

# 在home目录下创建 .vimrc 并编辑

1. 将附录1中 vimrc 的内容拷贝进去

# 在home目录下创建 .vim 目录

1. 进入 .vim 目录

2. 创建目录 autoload bundle colors syntax

# 在 ~/.vim/colors 目录中创建 mycolor.vim 并编辑

1. 将附录2中 mycolor.vim 的内容拷贝进去

# 在 ~/.vim/syntax 目录中创建 c.vim 并编辑

1. 将附录3中 c.vim 的内容拷贝进去

# 下载插件 vundle 到 ~/.vim/bundle

1. git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

2. 需要安装 git

3. vundle 可以自动安装和更新其他vim插件

# 下载插件 pathogen 到 ~/.vim/autoload

1. curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

2. 需要安装 curl

3. pathogen 可以自动加载插件

# 安装其余 vim 插件

1. 打开 vim 或 gvim

2. 执行 :PluginInstall

# 编译 command-t插件

1. 进入 ~/.vim/bundle/command-t/ruby/command-t目录

2. 执行 ruby extconf.rb

3. 执行 make

# 编译 YouCompleteMe 插件

1. 进入 ~/.vim/bundle/YouCompleteMe

2. 执行 ./install.py --clang-completer

3. 需要安装 cmake

# 创建 tag 生成和高亮脚本

1. 找一个地方创建 htags.sh 文件,注意同时修改 .vimrc 中该脚本的路径

2. 将附录4中 htags.sh 的内容拷贝进去

3. 给htags.sh增加执行权限 chmod u+x htags.sh

# 生成 ctags 和 cscope 的标签并高亮

1. 在工程的根目录打开 gvim 或 vim

2. 使用快捷键 t 创建 ctags的标签

3. 使用快捷键 c 创建 cscope的标签

4. 使用快捷见 ht 对重新高亮标签

*每次启动vim时会自动导入一次, 如果没有

重新生成标签就不要重新导入

# 使用YouCompleteMe的自动补全功能

1. 在工程的根目录或创建 .ycm_extra_conf.py

2. 将附录5中 .ycm_extra_conf.py 内容拷贝到其中

3. 根据工程修改其中的头文件路径

附录1 .vimrc

view sourceprint?001.'===================通用配置======================

002.

003.'文件搜索路径

004.set path=.,/usr/include,,

005.

006.' 控制

007.set nocompatible '关闭vi兼容

008.filetype off '关闭文件类型侦测,vundle需要

009.set fileencodings=utf-8,gbk '使用utf-8或gbk编码方式

010.syntax on '语法高亮

011.set backspace=2 '退格键正常模式

012.set whichwrap=<,>,[,] '当光标到行首或行尾,允许左右方向键换行

013.set autoread '文件在vim外修改过,自动重载

014.set nobackup '不使用备份

015.set confirm '在处理未保存或只读文件时,弹出确认消息

016.set scrolloff=3 '光标移动到距离顶部或底部开始滚到距离

017.set history=1000 '历史记录数

018.set mouse= '关闭鼠标

019.set selection=inclusive '选择包含最后一个字符

020.set selectmode=mouse,key '启动选择模式的方式

021.set completeopt=longest,menu '智能补全,弹出菜单,无歧义时才自动填充

022.set noswapfile '关闭交换文件

023.set hidden '允许在有未保存的修改时切换缓冲区

024.

025.'显示

026.colorscheme mycolor '选择配色方案

027.set t_Co=256 '可以使用的颜色数目

028.set number '显示行号

029.set laststatus=2 '显示状态行

030.set ruler '显示标尺

031.set showcmd '显示输入的命令

032.set showmatch '高亮括号匹配

033.set matchtime=1 '匹配括号高亮的时间(十分之一秒)

034.set matchpairs={:},(:) '匹配括号'{}''()'

035.set hlsearch '检索时高亮匹配项

036.set incsearch '边检索边显示匹配

037.set go-=T '去除gvim的toolbar

038.

039.'格式

040.set noexpandtab '不要将tab转换为空格

041.set shiftwidth=4 '自动缩进的距离,也是平移字符的距离

042.set tabstop=4 'tab键对应的空格数

043.set autoindent '自动缩进

044.set smartindent '智能缩进

045.

046.

047.'===================按键映射======================

048.

049.'按键映射的起始字符

050.let mapleader = ''

051.

052.'使用Ctrl-l 和 Ctrl+h 切换标签页

053.nnoremap gt

054.nnoremap gT

055.

056.'在行末加上分号

057.nnoremap ; :a;

058.'保存

059.nnoremap :w

060.'替换

061.nnoremap :%s/=expand('')/=expand('')

062.'===================插件管理======================

063.

064.' 下载vundle

065.' git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

066.

067.' 下载pathogen

068.' curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

069.

070.' 将vundle加入到runtime path

071.set rtp+=~/.vim/bundle/Vundle.vim

072.

073.' 下载到bundle目录的插件

074.call vundle#begin()

075.

076.' plugin on GitHub repo

077.Plugin 'VundleVim/Vundle.vim'

078.Plugin 'scrooloose/nerdtree'

079.Plugin 'Lokaltog/vim-powerline.git'

080.Plugin 'wincent/command-t'

081.Plugin 'Valloric/YouCompleteMe'

082.Plugin 'tomtom/tlib_vim'

083.Plugin 'tomtom/viki_vim'

084.

085.' plugin from http://vim-scripts.org/vim/scripts.html

086.Plugin 'taglist.vim'

087.Plugin 'EasyGrep'

088.

089.' Git plugin not hosted on GitHub

090.' Plugin 'git://...'

091.

092.' git repos on your local machine

093.' Plugin 'file://...'

094.

095.call vundle#end()

096.

097.filetype plugin indent on ' required

098.

099.'===================插件配置======================

100.

101.'-----pathogen-----

102.execute pathogen#infect()

103.

104.'-----NERDTree-----

105.let g:NERDTreeCaseSensitiveSort = 1

106.let g:NERDTreeWinSize = 25

107.let g:NERDTreeWinPos = 'right'

108.nnoremap t :NERDTreeToggle

109.nnoremap o :NERDTreeFind

110.

111.'-----Powerline-----

112.set fillchars+=stl: ,stlnc:

113.let g:Powerline_symbols = 'compatible'

114.let g:Powerline_stl_path_style = 'filename' '只显示文件名

115.

116.'-----Command-T-----

117.let g:CommandTFileScanner = 'ruby' '使用ruby作为文件浏览器

118.let g:CommandTTraverseSCM = 'dir' '根目录为执行vim时所在的目录

119.'打开文件跳转

120.nnoremap f :CommandT

121.

122.'-----taglist-----

123.let Tlist_Show_One_File = 1 '只显示当前文件的taglist

124.let Tlist_Exit_OnlyWindow = 1 'taglist是最后一个窗口时退出vim

125.let Tlist_Use_Left_Window = 1 '在左侧窗口显示taglist

126.let Tlist_GainFocus_On_ToggleOpen = 1 '打开taglist时,光标停在taglist窗口

127.let Tlist_Auto_Update = 1 '自动更新

128.' 打开标签浏览器

129.nnoremap dt :Tlist

130.' 重新生成标签

131.nnoremap bt :!~/Myfiles/Tool/sh/ctags/hitags.sh

132.' 高亮标签

133.nnoremap ht :so tags.vim

134.

135.'-----cscope-----

136.'加载cscope库

137.if filereadable('cscope.out')

138.cs add cscope.out

139.endif

140.set cscopequickfix=s-,c-,d-,i-,t-,e- '使用quickfix窗口显示结果

141.set cst '跳转时也使用cscope库

142.'打开引用窗口

143.nnoremap cw :cw

144.'重新生成索引文件

145.nnoremap bc :!cscope -Rbq

146.'s: 查找本C符号

147.'g: 查找本定义

148.'d: 查找本函数调用的函数

149.'c: 查找调用本函数的函数

150.'t: 查找本字符串

151.'e: 查找本egrep模式

152.'f: 查找本文件

153.'i: 查找包含本文件的文件

154.nnoremap s :scs find s =expand('word>')

155.nnoremap g :scs find g =expand('word>')

156.nnoremap c :scs find c =expand('')

157.nnoremap t :scs find t =expand('')

158.nnoremap e :scs find e =expand('')

159.nnoremap f :scs find f =expand('')

160.nnoremap i :scs find i =expand('')

161.nnoremap d :scs find d =expand('')

162.

163.'-----YouCompleteMe-----

164.let g:ycm_server_python_interpreter= '/usr/bin/python2'

165.let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py' '默认配置文件

166.let g:ycm_key_invoke_completion = '' '跨文件补全

167.let g:ycm_confirm_extra_conf = 0 '关闭加载配置文件提示

168.let g:ycm_cache_omnifunc = 0 '关闭补全缓存

169.let g:ycm_enable_diagnostic_signs = 0 '关闭诊断提示符

170.let g:ycm_enable_diagnostic_highlighting = 1 '关闭诊断高亮

171.'let g:ycm_show_diagnostics_ui = 0 '关闭诊断ui

172.let g:ycm_min_num_of_chars_for_completion = 3 'n字符开始自动补全

173.'获取变量类型

174.nnoremap yt :YcmCompleter GetType

175.'跳转定义或声明

176.nnoremap yg :YcmCompleter GoTo

177.'跳转包含文件

178.nnoremap yi :YcmCompleter GoToInclude

179.'打开诊断信息

180.nnoremap yd :YcmDiags

181.

182.'-----EasyGrep-----

183.let EasyGrepMode = 2 '根据文件类型搜索相应文件

184.let EasyGrepRecursive = 1 '递归搜索

185.let EasyGrepCommand = 1 '使用grep

186.let EasyGrepJumpToMatch = 0 '不要跳转

附录2 mycolor.vim

view sourceprint?001.' Vim color file

002.' Maintainer: Hans Fugal

003.' Last Change: $Date: 2004/06/13 19:30:30 $

004.' Last Change: $Date: 2004/06/13 19:30:30 $

005.' URL: http://hans.fugal.net/vim/colors/desert.vim

006.' Version: $Id: desert.vim,v 1.1 2004/06/13 19:30:30 vimboss Exp $

007.

008.' cool help screens

009.' :he group-name

010.' :he highlight-groups

011.' :he cterm-colors

012.

013.set background=dark

014.if version > 580

015.' no guarantees for version 5.8 and below, but this makes it stop

016.' complaining

017.hi clear

018.if exists('syntax_on')

019.syntax reset

020.endif

021.endif

022.let g:colors_name='desert'

023.

024.hi Normal guifg=White guibg=grey20

025.

026.' highlight groups

027.hi Cursor guibg=khaki guifg=slategrey

028.'hi CursorIM

029.'hi Directory

030.'hi DiffAdd

031.'hi DiffChange

032.'hi DiffDelete

033.'hi DiffText

034.'hi ErrorMsg

035.hi VertSplit guibg=#c2bfa5 guifg=grey50 gui=none

036.hi Folded guibg=grey30 guifg=gold

037.hi FoldColumn guibg=grey30 guifg=tan

038.hi IncSearch guifg=slategrey guibg=khaki

039.'hi LineNr

040.hi ModeMsg guifg=goldenrod

041.hi MoreMsg guifg=SeaGreen

042.hi NonText guifg=LightBlue guibg=grey30

043.hi Question guifg=springgreen

044.hi Search guibg=peru guifg=wheat

045.hi SpecialKey guifg=yellowgreen

046.hi StatusLine guibg=#c2bfa5 guifg=black gui=none

047.hi StatusLineNC guibg=#c2bfa5 guifg=grey50 gui=none

048.hi Title guifg=indianred

049.hi Visual gui=none guifg=khaki guibg=olivedrab

050.'hi VisualNOS

051.hi WarningMsg guifg=salmon

052.'hi WildMenu

053.'hi Menu

054.'hi Scrollbar

055.'hi Tooltip

056.

057.' syntax highlighting groups

058.hi Comment guifg=SkyBlue

059.hi Constant guifg=#ffa0a0

060.hi Identifier guifg=palegreen

061.hi Statement guifg=khaki

062.hi PreProc guifg=indianred

063.hi Type guifg=darkkhaki

064.hi Special guifg=navajowhite

065.'hi Underlined

066.hi Ignore guifg=grey40

067.'hi Error

068.hi Todo guifg=orangered guibg=yellow2

069.

070.' color terminal definitions

071.hi SpecialKey ctermfg=darkgreen

072.hi NonText cterm=bold ctermfg=darkblue

073.hi Directory ctermfg=darkcyan

074.hi ErrorMsg cterm=bold ctermfg=7 ctermbg=1

075.hi IncSearch cterm=NONE ctermfg=yellow ctermbg=green

076.hi Search cterm=NONE ctermfg=grey ctermbg=blue

077.hi MoreMsg ctermfg=darkgreen

078.hi ModeMsg cterm=NONE ctermfg=brown

079.hi LineNr ctermfg=3

080.hi Question ctermfg=green

081.hi StatusLine cterm=bold,reverse

082.hi StatusLineNC cterm=reverse

083.hi VertSplit cterm=reverse

084.hi Title ctermfg=5

085.hi Visual cterm=reverse

086.hi VisualNOS cterm=bold,underline

087.hi WarningMsg ctermfg=1

088.hi WildMenu ctermfg=0 ctermbg=3

089.hi Folded ctermfg=darkgrey ctermbg=NONE

090.hi FoldColumn ctermfg=darkgrey ctermbg=NONE

091.hi DiffAdd ctermbg=4

092.hi DiffChange ctermbg=5

093.hi DiffDelete cterm=bold ctermfg=4 ctermbg=6

094.hi DiffText cterm=bold ctermbg=1

095.hi Comment ctermfg=darkcyan

096.hi Constant ctermfg=brown

097.hi Special ctermfg=5

098.hi Identifier ctermfg=6

099.hi Statement ctermfg=3

100.hi PreProc ctermfg=5

101.hi Type ctermfg=2

102.hi Underlined cterm=underline ctermfg=5

103.hi Ignore cterm=bold ctermfg=7

104.hi Ignore ctermfg=darkgrey

105.hi Error cterm=bold ctermfg=7 ctermbg=1

106.

107.'vim: sw=4

附录3 c.vim

view sourceprint?01.'not wrap

02.set nowrap

03.

04.if filereadable('tags.vim')

05.so tags.vim

06.endif

07.

08.hi cFunction guifg=LightGreen

09.hi cMacro guifg=LightRed

10.hi cGlobal guifg=LightBlue

11.hi cMember guifg=LightMagenta

12.hi def link cTypedef cType

附录4 htags.sh

view sourceprint?01.#!/bin/bash

02.

03.ctags -R --fields=+l ;

04.awk -F ''' '$2 ~ /^ f/ {print $1 '

05.'}' tags | awk '$1 ~ /^[a-zA-Z]/ {print 'syn keyword cFunction ' $1}' 1> tags.vim ;

06.awk -F ''' '$2 ~ /^ [de]/ {print $1 '

07.'}' tags | awk '$1 ~ /^[a-zA-Z]/ {print 'syn keyword cMacro ' $1}' 1>> tags.vim ;

08.awk -F ''' '$2 ~ /^ t/ {print $1 '

09.'}' tags | awk '$1 ~ /^[a-zA-Z]/ {print 'syn keyword cTypedef ' $1}' 1>> tags.vim ;

10.awk -F ''' '$2 ~ /^ v/ {print $1 '

11.'}' tags | awk '$1 ~ /^[a-zA-Z]/ {print 'syn keyword cGlobal ' $1}' 1>> tags.vim ;

附录5 .ycm_extra_conf.py

view sourceprint?01.import os

02.

03.flags = [

04.'-x',

05.'c',

06.'-Wall',

07.'-DOS=Linux',

08.'-I./mycode/igmpsnoop/h',

09.'-I./mycode/mldsnoop/h',

10.'-I./mycode/head_files',

11.'-I./mycode/g8132/inc',

12.'-I./mycode/nqa/inc',

13.'-I./mycode/mplste/inc',

14.'-I./mycode/mplsoam/inc',

15.'-I./mycode/cli',

16.'-I./mycode/trill/inc',

17.'-I./mycode/igmpsnoop_onu/inc',

18.'-I./mycode/hqos/inc',

19.'-I./mycode/qos/inc',

20.'-I./mycode/mplsqos/inc',

21.'-I./mycode/pim/inc',

22.'-I./USP_HEADFILE/protocol/acl/h',

23.'-I./USP_HEADFILE/protocol/hwroute/h',

24.'-I./USP_HEADFILE/protocol/uspIf/inc',

25.'-I/home/taopeng/Workspace/vmware/linux_share/osal_linux/inc',

26.'-I/home/taopeng/Workspace/vmware/linux_share/usp_linux3.12.17/inc'

27.]

28.

29.def MakeFinalFlag():

30.

31.workDir = os.path.dirname(os.path.abspath(__file__))

32.

33.finalFlags = []

34.for flag in flags:

35.

36.if flag.startswith('-I'):

37.path = flag[len('-I'):]

38.flag = '-I' + os.path.join(workDir, path)

39.

40.finalFlags.append(flag)

41.

42.return finalFlags

43.

44.

45.def FlagsForFile(fileName, **kwargs):

46.

47.return {

48.'flags': MakeFinalFlag(),

49.'do_cache': True

50.}

51.

52.

53.if __name__ == '__main__':

54.print(FlagsForFile('test'))

标签:C语言开发人员