文档章节

vim c语言开发配置

j
 jamal117
发布于 2016/07/03 16:54
字数 1675
阅读 85
收藏 1

vim c 开发配置

链接:http://blog.163.com/023_dns/blog/static/1187273662012125112426472/

介绍

Vim强大的功能,其来源基本上就两个地方:Vim插件以及Vim配置文件。 Vim本身的系统配置文件夹是在/usr/share/vim/和/etc/vim/两个文件夹下。一般情况下,我们不会去改变这两个文件夹下的配置文件,而是在用户文件夹/home/user下建立自己的配置文件。进入用户文件夹之后,新建一个名叫.vimrc的文件

基本配置

在.vimrc里面加上以下的代码:

set nocompatible
if has("syntax")
    syntax on
endif
    colorscheme ron
filetype on
filetype plugin on
set background=dark
if has("autocmd")
    au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
    filetype plugin indent on
endif
set autowrite        " 自动把内容写回文件: 如果文件被修改过,在每个 :next、:rewind、:last、:first、:previous、:stop、:suspend、:tag、:!、:make、CTRL-] 和 CTRL-^命令时进行;用 :buffer、CTRL-O、CTRL-I、'{A-Z0-9} 或 `{A-Z0-9} 命令转到别的文件时亦然。
set autoindent        " 设置自动对齐(缩进):即每行的缩进值与上一行相等;使用 noautoindent 取消设置
set tabstop=4        " 设置制表符(tab键)的宽度
set softtabstop=4     " 设置软制表符的宽度    
set shiftwidth=4    " (自动) 缩进使用的4个空格
set cindent            " 使用 C/C++ 语言的自动缩进方式
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s     "设置C/C++语言的具体缩进方式
set showmatch        " 设置匹配模式,显示匹配的括号
set linebreak        " 整词换行
set whichwrap=b,s,<,>,[,] " 光标从行首和行末时可以跳到另一行去
set mouse=a            " Enable mouse usage (all modes)    "使用鼠标
set number            " Enable line number    "显示行号
set history=50        " set command history to 50    "历史记录50条
set laststatus=2 " 总显示最后一个窗口的状态行;设为1则窗口数多于一个的时候显示最后一个窗口的状态行;0不显示最后一个窗口的状态行
set ruler            " 标尺,用于显示光标位置的行号和列号,逗号分隔。每个窗口都有自己的标尺。如果窗口有状态行,标尺在那里显示。否则,它显示在屏幕的最后一行上。
set showcmd            " 命令行显示输入的命令
set showmode        " 命令行显示vim当前模式
set incsearch        " 输入字符串就显示匹配点
set hlsearch 

然后新建的文件就会有一些规则了(换行等)

ctags安装

ctags可以建立源码树的标签索引(标签就是一个标识符被定义的地方,如函数定义),使程序员在编程时能迅速定位函数、变量、宏定义等位置去查看原形

yum install ctags

ctags需要建立源码索引才能使用,因此我们在我们编写的源码下面:

ctags -R *

建立索引。 在.vimrc文件中加入:

"--ctags setting--
" 按下F5重新生成tag文件,并更新taglist
set tags=tags
set tags+=./tags "add current directory's generated tags file
set tags+=~/arm/linux-2.6.24.7/tags "add new tags file(刚刚生成tags的路径,在ctags -R 生成tags文件后,不要将tags移动到别的目录,否则ctrl+]时,会提示找不到源码文件)

set tags+=./tags表示在当前工作目录下搜索tags文件 set tags+=~/arm/linux-2.6.24.7/tags表示在搜寻tags文件的时候,也要搜寻~/arm/linux-2.6.24.7/文件夹下的tags文件。 然后保存并退出vi。这样,你就可以用vim在任意地方查看有关Linux的函数原形。 tag命令用法: Ctrl+]  跳到当前光标下单词的标签 Ctrl+O  返回上一个标签 Ctrl+T  返回上一个标签 :tag TagName 跳到TagName标签 以上命令是在当前窗口显示标签,当前窗口的文件替代为包标签的文件,当前窗口光标跳到标签位置。如果不希望在当前窗口显示标签,可以使用以下命令: :stag TagName 新窗口显示TagName标签,光标跳到标签处 Ctrl+W + ]  新窗口显示当前光标下单词的标签,光标跳到标签处 当一个标签有多个匹配项时(函数 (或类中的方法) 被多次定义),":tags" 命令会跳转到第一处。如果在当前文件中存在匹配,那它将会被首先使用。 可以用这些命令在各匹配的标签间移动: :tfirst    到第一个匹配 :[count]tprevious 向前 [count] 个匹配 :[count]tnext  向后 [count] 个匹配 :tlast    到最后一个匹配 或者使用以下命令选择要跳转到哪一个 :tselect TagName 输入以上命令后,vim会为你展示一个选择列表。然后你可以输入要跳转到的匹配代号 (在第一列)。其它列的信息可以让你知道标签在何处被定义过。 以下命令将在预览窗口显示标签 :ptag TagName 预览窗口显示TagName标签,光标跳到标签处 Ctrl+W + }  预览窗口显示当前光标下单词的标签,光标跳到标签处 :pclose   关闭预览窗口 :pedit file.h 在预览窗口中编辑文件file.h(在编辑头文件时很有用) :psearch atoi 查找当前文件和任何包含文件中的单词并在预览窗口中显示匹配,在使用没有标签文件的库函数时十分有用。   最简单的使用方法举例 用vi在任意目录写一个Test.c文件,内容如下:

int main(void)
    {
            printf("Hello World!\n");
            return 0;
    }

写好后末行模式输入w保存好(不要退出vi),按Esc回到指令模式,把光标停留在printf上 然后按 Ctrl + ],vi会自动跳到Linux系统函数printf()处,这时我们能查看printf()的原形,查看完了,按Ctrl+o(回到上一个标签) 就回到原来的地方

vim自动补全——OmniCppComplete

vim的自动补全功能可通过其插件OmniCppComplete实现。 安装OmniCppComplete; 配置OmniCppComplete; 在vim配置文件/home/user/.vimrc中加入如下的配置:

"-- omnicppcomplete setting --
imap <F3> <C-X><C-O>   " 按下F3自动补全代码,注意该映射语句后不能有其他字符,包括tab;否则按下F3会自动补全一些乱码
imap <F2> <C-X><C-I>   " 按下F2根据头文件内关键字补全
set completeopt=menu,menuone " 关掉智能补全时的预览窗口
let OmniCpp_MayCompleteDot = 1 " autocomplete with .
let OmniCpp_MayCompleteArrow = 1 " autocomplete with ->
let OmniCpp_MayCompleteScope = 1 " autocomplete with ::
let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert)
let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included files
let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype in popup window
let OmniCpp_GlobalScopeSearch=1 " enable the global scope search
let OmniCpp_DisplayMode=1 " Class scope completion mode: always show all members
"let OmniCpp_DefaultNamespaces=["std"]
let OmniCpp_ShowScopeInAbbr=1 " show scope in abbreviation and remove the last column
let OmniCpp_ShowAccess=1 

© 著作权归作者所有

j
粉丝 0
博文 9
码字总数 7612
作品 0
杭州
私信 提问
生成函数声明列表工具 - gft4c

gft4c 功能说明 gft4c是一款为C语言开发者提供的小工具。用来为C语言程序生成函数声明列表。 比如,我们有c源码文件如下: spxprivate void dosomething1(int varg1,int varg2){ //some code...

xuhf
2018/04/28
0
0
好玩的GitHub项目

快速配置vim 快速配置vim 打开终端,执行下面的命令就自动安装好了: 极路由穿墙插件安装 极路由 新版hiwifi 使用项目根目录下的 shadow.sh 脚本进行安装, 建议使用以下一键命令: 快速配置z...

_昭昭_
2017/12/13
0
0
工作中,在linux下开发是什么样子的?

RT,主要是想问C语言,C++,java ,python,在工作中,分别更偏向于用什么工具在什么模式下开发呢? 后三个不清楚,C语言好象更偏向于vim/emacs+gcc+gdb。感觉C++应该和C的方法类似。 目前我...

年轻的小蜜蜂
2015/08/20
2.8K
21
APUE2学习之旅 - 前传

我与C的故事 谈到C,真是一个痛,记得大一时就开设了C语言课程,只怪当年太年轻,坐在前排睡觉了,真是为难老师了,梦中只听到只言片语,所以到现在都只了解C的基本语法,一知半解,才是最大...

LianyouCQ
2013/09/19
0
0
2018FFmpeg音视频核心技术精讲与实战(已完结)最全

第1章 课程导学与准备工作 全民娱乐时代,需要音视频等多媒体产品层出不穷,但会处理音视频数据的工程师却极度匮乏,进入音视频开发领域正当时,这门课程就是为这样的你而生。来吧!加入我们...

weixin_44210556
2018/12/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Datatables插件1.10.15版本服务器处理模式ajax获取分页数据实例解析

一、问题描述 前端需要使用表格来展示数据,找了一些插件,最后确定使用dataTables组件来做。 后端的分页接口已经写好了,不能修改。接口需要传入页码(pageNumber)和页面显示数据条数(pageSi...

OSC首席混子
15分钟前
0
0
基于虹软的Android的人脸识别SDK使用测试

现在有很多人脸识别的技术我们可以拿来使用;但是个人认为还是离线端的SDK比较实用;所以个人一直在搜集人脸识别的SDK;原来使用开源的OpenCV;最近有个好友推荐虹软的ArcFace, 闲来无事就下...

是哇兴哥棒棒哒
25分钟前
0
0
Netty内存池之PoolThreadCache详解

PoolThreadCahche是Netty内存管理中能够实现高效内存申请和释放的一个重要原因,Netty会为每一个线程都维护一个PoolThreadCache对象,当进行内存申请时,首先会尝试从PoolThreadCache中申请,...

爱宝贝丶
38分钟前
10
0
除了Reader、Inbox之外 谷歌“关门部”还关闭了哪些服务或产品?

我们经常调侃称谷歌的“关门部”和微软的“更名部”是 IT 界的两大传奇,那么除了比较熟悉的 RSS 订阅服务 Google Reader、电子邮件服务 Inbox 和 Facebook 竞品 Google+ 之外,你还知道谷歌...

linux-tao
38分钟前
0
0
从B站的代码泄露事件中,我们能学到些什么?

先声明一下,本文不聊ISSUE中的七七八八,也不聊代码是否写的好,更不聊是不是跟蔡徐坤有关之类的吃瓜内容。仅站在技术人的角度,从这次的代码泄露事件,聊聊在代码的安全管理上,通常都需要...

程序猿DD
43分钟前
46
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部