linux

一、autocomplpop代码(普通变量函数)的自动弹出

(1)下载:http://www.vim.org/scripts/script.php?script_id=1879 
(2)安装:
   先解压:unzip vim-autocomplpop.zip
   同其他脚本插件的安装方法一致,将解压后的文件autoload,doc,plugin拷贝到~/.vim/ 下的相应目录里,重新打开vim即可使用。
  • 1
  • 2
  • 3
  • 4

此时:
(1)只有输入两个字符,才会提示,并且提示内容没有颜色
(2)只提示之前出现过的字符串,并且不能自动提示结构类。

解决第一个问题:
在vimrc中添加内容:
sudo vim /etc/vim/vimrc

"autocomplpop插件,一个字母即可补全  
let g:acp_behaviorKeywordLength = 1  
let g:AutoComplPop_MappingDriven = 1  
"color  
hi Pmenu guibg=#444444  
hi PmenuSel ctermfg=7 ctermbg=4 guibg=#555555 guifg=#ffffff  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(2)解决第二个问题我们就需要安装ctags工具和OmniCppComplete插件。 ctags是用来对文件做标记的工具,OmniCppComplete是在c和c++语言范畴内,对上述智能补全的增强版。

二、 ctags

1、安装ctags

1) sudo apt-get install ctags 或者
2) 在http://ctags.sourceforge.net/ 下载源代码包之后,解压缩生成源代码目录
进入源代码目录执行./configure & make & make install

2、vim中ctags简单使用

1)生成tags文件
在源码根目录下执行ctags -R命令来为程序源代码生成标签文件,其-R选项表示递归操作,同时为子目录也生成标签文件,vim利用生成的标签文件,可以进行检索,并在不同的文件、元素之间来回切换。
也可以用ctags file_name1.c filename2.c filename3.h来产生ctags文件或者ctags .c .h

2)字段补全(比如可以提示结构成员,前提还要安装OmniCppComplete)
为了使得字段补全有效,在生成tags时需要一些额外的参数,推荐的c++参数主要是:

ctags -R --c++-kinds=+px --fields=+iaS --extra=+q
其中:
选项c++-kinds 用于指定C++语言的 tags记录类型,  --c-kinds用于指定c语言的,  通用格式是  --{language}-kinds
选项 fileds 用于指定每条标记的扩展字段域
extra 选项用于增加额外的条目:   f表示为每个文件增加一个条目,  q为每个类增加一个条目
  • 1
  • 2
  • 3
  • 4
  • 5

3)指定tags文件位置
在vim命令行中输入或者修改.vimrc文件 set tags=./tags(当前路径下的tags文件)

4)跳转到指定函数
在变量或函数处 ctrl+] 来跳转到变量或者函数定义的地方。ctrl+t返回到跳转前的位置。
或者使用命令:tag func_name 来跳转到变量或者函数定义的地方。
ctags不会生成局部变量的索引。
:tags会列出查找/跳转过程

3、ctags的局限性
tags文件只能查看函数,类或变量的定义,而没有被调用信息。
如果要知道一个函数在什么地方被使用,需要使用cscope工具。
添加的tags最好是source code的索引,对于include头文件索引没有效果

三、c/c++代码(类的 . , ->, :: 操作符)的自动补全 OmniCppComplete

配合ctags即可提示类成员:ctags -R –c++-kinds=+px –fields=+iaS –extra=+q

   下载:http://www.vim.org/scripts/script.php?script_id=1520
   安装:
   先解压:unzip omnicppcomplete-0.41.zip
   同其他脚本插件的安装方法一致,将解压后的文件autoload,doc,after拷贝到~/.vim/ 下的相应目录里:
  • 1
  • 2
  • 3
  • 4

四、taglist

taglist插件是以vim脚本的形式存在,因此只需要将其下载下来放到相应的目录即可。taglist基于ctags才能发挥作用,因此要确保安装了ctags。

1、安装taglist

1)从http://vim-taglist.sourceforge.net/index.html 下载taglist安装包。
2)进入~/.vim目录,将taglist安装包解压,将解压后的/doc和/plugin目录复制到.vim目录下
3)打开配置文件~/.vimrc,加入以下两行:
let Tlist_Show_One_File=1
let Tlist_Exit_OnlyWindow=1
到此安装已经完成。
在vim命令行下运行:Tlist打开Taglist窗口,
运行:Tlist或者q关闭Taglist窗口,

我们可以通过ctrl+w快捷键或者鼠标点击在Taglist窗口和编辑区之间切换焦点,在Taglist窗口选选择某个符号并回车,就可以跳转到该符号定义的位置。

2、其他一些选项可在~/.vimrc脚本中添加。

如:
“设置ctags路径
let Tlist_Ctags_Cmd = ‘/usr/bin/ctags’
“启动vim后自动打开taglist窗口
let Tlist_Auto_Open = 1
“不同时显示多个文件的tag,仅显示一个
let Tlist_Show_One_File = 1
“taglist为最后一个窗口时,退出vim
let Tlist_Exit_OnlyWindow = 1
“taglist窗口显示在右侧,缺省为左侧
let Tlist_Use_Right_Window =1
“设置taglist窗口大小
“let Tlist_WinHeight = 100
let Tlist_WinWidth = 40
“设置taglist打开关闭的快捷键F8
noremap :TlistToggle
“更新ctags标签文件快捷键设置
noremap :!ctags -R

Linux的文本编辑命令除了vi(vim),还有哪些?

文本编辑器有很多,比如图形模式的gedit、kwrite、OpenOffice ... ... ,文本模式下的编辑器有vi、vim(vi的增强版本)和nano,ed,ex。vi和vim是我们在Linux中最常用的编辑器。


Linux nano命令
nano是一个字符终端的文本编辑器,有点像DOS下的editor程序。它比vi/vim要简单得多,比较适合Linux初学者使用。某些Linux发行版的默认编辑器就是nano。 nano命令可以打开指定文件进行编辑,默认情况下它会自动断行,即在一行中输入过长的内容时自动拆分成几行,但用这种方式来处理某些文件可能会带来问题,比如Linux系统的配置文件,自动断行就会使本来只能写在一行上的内容折断成多行了,有可能造成系统不灵了。因此,如果你想避免这种情况出现,就加上-w选项吧。
参考: http://man.linuxde.net/nano

 

 

Linux ed命令是文本编辑器,用于文本编辑。
ed是Linux中功能最简单的文本编辑程序,一次仅能编辑一行而非全屏幕方式的操作。
ed命令并不是一个常用的命令,一般使用比较多的是vi 指令。但ed文本编辑器对于编辑大文件或对于在shell脚本程序中进行文本编辑很有用。
参考:http://www.runoob.com/linux/linux-comm-ed.html

 

 

Linux ex命令用于在Ex模式下启动vim文本编辑器。
ex执行效果如同vi -E,使用语法及参数可参照vi指令,如要从Ex模式回到普通模式,则在vim中输入":vi"或":visual"指令即可。
参考:http://www.runoob.com/linux/linux-comm-ex.html 

windows常用的都是vs 、vs,OSX用clang,clang的错误提示比其他要好很多语言支持比较好,但是编出来的程序性能比gcc差很多,很多细粒度的优化没有人做。

用gdb进行调试纠错前必须要在编译选项中添加“-g”,“-g”标志是对程序进行调试性编译时常用的选项。我们需要给每一个需要调试的源文件都加上这个选项。它将使用特殊版本的C语言标准库完成编译和链接操作,给库函数加上程序调试方面的支持。编译器会把这些标志自动传给链接器。

readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。这里的elf-file(s)就表示哪些被检查的文件。可以支持32位,64位的elf格式文件,也支持包含elf文件的文档(这里一般指的是使用ar命令将一些elf文件打包之后生成的例如lib*.a之类的“静态库”文件)。这个程序和objdump提供的功能相似,但是它显示的信息更为具体,并且它不依赖BFD库(BFD是一个GNU项目,它的目标就是希望通过一种统一的接口来处理不同的目标文件),所以即使BFD库有什么bug存在的话也不会影响到readelf程序。运行readelf时,除了-v和-H之外,其他的选项必须有一个被指定。

命令参数:<1>-h或者--file-header。显示在elf文件头里包含的所有信息。

                 <2>-l  显示程序头表信息, 包括有几个段,每个段的属性,以及每个段中包含有哪几个节

                 <3>-S  显示节区表内所有的信息,包括每个节的属性

                 <4>-h 显示所有头的信息,包括elf文件头,程序头和节头,即“-l,-h,-S”的组合。

                 <5>-s 显示符号表的信息,包含静态符号表和动态符号表。如果指关心动态符号表,可以直接用“-d”。

                 <6>-r 显示所有定位入口的信息。

首先建立一个新的文件,touch progress_bar.c 执行该vim progress_bar.c命令,写进度条的程序。写进一个进度条程序:

#include<stdio.h>
#include<unistd.h>
#include<string.h>

void progress()
{
    int i = 0;
    char bar[102];
    memset(bar,0,102*sizeof(char));
    const char* lable="|/-\\";
    while(i <= 100)
    {
        bar[i] = '#';    
        printf("[%-101s] [%d%%] [%c]",bar,i,lable[i%4]);
        fflush(stdout);
        usleep(100000);
        i++;
    }
    printf("\n");
}

int main()
{
    progress();
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

如图:
这里写图片描述

该代码中需要注意的小细节:
1. const char* lable=”|/-\\”; 直接输入一个\会被系统认为是转义,所以要输入\\
2. printf(“[%-101s] [%d%%] [%c]”,bar,i,lable[i%4]);这里的%%同上,防止转义。i%4防止溢出
3. fflush(stdout); 参数为标准输出流
4. 因为sleep默认单位为秒,不便于测试,usleep默认单位为微秒
最后,进行调试,建立一个mymakefile文件,touch mymakefile对该文件进行编辑vim mymakefile。

myprogress_bar:progress_bar.c
    g++ -o myprogress_bar progress_bar.c
:PHONY clean
    clean:
    rm -f myprogress_bar
  • 1
  • 2
  • 3
  • 4
  • 5

如图所示:

然后执行make命令,对progress_bar.c文件进行编译,make -f mymakefile,即生成myprogress_bar文件,用./myprogress_bar对他进行执行。若想重新进行编译,则需要make -f mymakefile clean指令,先对文件progress_bar进行清除,再用make进行编译。
如图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值