vim编写C代码的一些设置

来源:互联网 发布:风险矩阵评价法 编辑:程序博客网 时间:2024/05/28 01:36
  首先当然要装Taglist和Ctag两个插件了,具体的安装过程就不说了.

一些写代码时候常用,而且灰常有用的命令(类似上下左右的基础命令就不说了):

ctags -R    循环创建目录下所有ctags文件

:Tlist          显示函数列表
ctr + ]        切换到结构体定义处
ctr + o        切换回到上一个文件窗口
ctr + ww    函数定义窗口/代码窗口切换 两个文件窗体之间切换 

       用来进行小括号、中括号和大括号的匹配。这要看当前光标指向的是什么符号了。

Ctrl+u        向文件首翻半屏
Ctrl+d        向文件尾翻半屏
Ctrl+f        向文件尾翻一屏
Ctrl+b        向文件首翻一屏 

[[        转到上一个位于第一列的“{”
]]        转到下一个位于第一列的“{”

       转到上一个空行
       转到下一个空行

/string        向前找
?string        向后找

       撤消
       重复


/etc/vimrc 文件设置(fc9下)的一些参数:

1) 打开vimrc,添加以下语句来使得语法高亮显示:
syntax on
2) 如果此时语法还是没有高亮显示,那么在/etc目录下的profile文件中添加以下语句:
export TERM=xterm-color
3、设置Windows风格的C/C++自动缩进(添加以下set语句到vimrc中)
1)不讨论制表符为8还是为4较好,这里设置(软)制表符宽度为4:
set tabstop=4
set softtabstop=4
2)设置缩进的空格数为4
set shiftwidth=4
3)设置自动缩进:即每行的缩进值与上一行相等;使用 noautoindent 取消设置:
set autoindent
4)设置使用 C/C++ 语言的自动缩进方式:
set cindent
5)设置C/C++语言的具体缩进方式(以我的windows风格为例):
set cinoptions={0,1s,t0,n-2,p2s,(03s,=.5s,>1s,=1s,:1s
6)如果想在左侧显示文本的行号,可以用以下语句:
set nu
7)最后,如果没有下列语句,就加上吧:
if &term=="xterm"
set t_Co=8
set t_Sb=^[[4%dm
set t_Sf=^[[3%dm
endif

PS:
自动缩进有两个选项:
代码:
set autoindent
set cindent

autoindent 就是自动缩进的意思,当你在输入状态用回车键插入一个新行,或者在 normal 状态用 o 或者 O 插入一个新行时,autoindent 会自动地将当前行的缩进拷贝到新行,也就是"自动对齐”,当然了,如果你在新行没有输入任何字符,那么这个缩进将自动删除。

cindent 就不同了,它会按照 C 语言的语法,自动地调整缩进的长度,比如,当你输入了半条语句然后回车时,缩进会自动增加一个 TABSTOP 值,当你键入了一个右花括号时,会自动减少一个 TABSTOP 值。


用vim和其他工具整理代码缩进的方法:

可以拿 indent 整理代码 
同样可以拿 indent 把代码打乱 

现在俺不用indent格式化代码了,只用vim ggVG=    说明 ggvG全选   =格式化. 
上面命令等同命令   gg=G 

lz 的情况只要在 VC 里全选然后 Alt+F8 一下就 OK 了,好像是这个快捷键。 

emacs 
单个函数: M C + h     M C + \ 
整个文件: C + x h   M C + \ 

要我就用find . -type f -exec perl -i -pe 's/xx/yy' {} \;把文本的函数名,变量都全部替换一下 
也就几条命令就ok了 
不影响编译,不影响功能 

打乱代码没有用. 用CB(C BEAUTIFY)等工具转换一次就好了. 比原来还美丽. 

要真故意不让人明白, 最可怕的是将变量名字全部替换为无意义的新名字. 不影响编译,同时大大降低可读. 

没用扰码器 
看来还是手下留情了



去除C注释的三类方法

1、strip_c_comment1.awk 正则方法 
BEGIN { ORS = "" } 

{ code = code $0 "\n" } 

END { 
        while ( length(code) ) 
        code = process( code ) 


function process( text ) 

        if ( c99 ) { 
                if ( match( text, /"|'|\/\*|\/\// ) ) 
                        return span( text ) 
        } else { 
                if ( match( text, /"|'|\/\*/ ) ) 
                        return span( text ) 
        } 
        print text 
        return "" 


function span( text , starter ) 

        print substr( text, 1, RSTART - 1 ) 
        starter = substr( text, RSTART, RLENGTH ) 
        text = substr( text, RSTART + RLENGTH ) 

        if ( "\"" == starter || "'" == starter ) 
                return quoted( text, starter ) 
        if ( "//" == starter ) 
                return remove( text, "\n", "\n" ) 
        ## Allow for 
        ## ") { 
                state = 0 
                c = " " 
        } 

        if (state < 2) 
                printf("%s", c) 



if (state == 3 && !/\\$/) 
        state = 0 

if (state < 2) 
        print "" 



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

--------------------------------------------------------------------------------------------------------------- 
3、借用C预处理器,, 
#!/bin/sh 

sed 's/#/-_-!/g' "$1" | 
cpp - | sed '/#/d' | 
sed 's/-_-!/#/g' 


----------------------------------------------------------------------------------------
原创粉丝点击