colorful

zc qq:1337220912

 

linux下安装protobuf教程+示例(详细)

1 在网站 http://code.google.com/p/protobuf/downloads/list上可以下载 Protobuf 的源代码。然后解压编译安装便可以使用它了。
安装步骤如下所示:
 tar -xzf protobuf-2.1.0.tar.gz 
 cd protobuf-2.1.0 
 ./configure --prefix=/usr/local/protobuf
 make 
 make check 
 make install 
 
 2 > sudo vim /etc/profile
 添加
export PATH=$PATH:/usr/local/protobuf/bin/
export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/
保存执行
source /etc/profile

同时 在~/.profile中添加上面两行代码,否则会出现登录用户找不到protoc命令

3 > 配置动态链接库路径
sudo vim /etc/ld.so.conf
插入:
/usr/local/protobuf/lib

4 > su  #root 权限
ldconfig

5> 写消息文件:msg.proto
  1. package lm;   
  2. message helloworld   
  3. {   
  4.     required int32     id = 1;  // ID     
  5.     required string    str = 2;  // str    
  6.     optional int32     opt = 3;  //optional field   
  7. }  
将消息文件msg.proto映射成cpp文件
protoc -I=. --cpp_out=. msg.proto
可以看到生成了
msg.pb.h 和msg.pb.cc

6> 写序列化消息的进程
write.cc
  1. #include "msg.pb.h"  
  2. #include <fstream>  
  3. #include <iostream>  
  4. using namespace std;  
  5.   
  6. int main(void)   
  7. {   
  8.   
  9.     lm::helloworld msg1;   
  10.     msg1.set_id(101);   
  11.     msg1.set_str("hello");   
  12.     fstream output("./log", ios::out | ios::trunc | ios::binary);   
  13.   
  14.     if (!msg1.SerializeToOstream(&output)) {   
  15.         cerr << "Failed to write msg." << endl;   
  16.         return -1;   
  17.     }          
  18.     return 0;   
  19. }  
编译 write.cc 
 g++  msg.pb.cc write.cc -o write  `pkg-config --cflags --libs protobuf` -lpthread
 
执行write 
./write, 可以看到生成了log文件

7> 写反序列化的进程
reader.cc
  1. #include "msg.pb.h"  
  2. #include <fstream>  
  3. #include <iostream>  
  4. using namespace std;  
  5.   
  6. void ListMsg(const lm::helloworld & msg) {    
  7.     cout << msg.id() << endl;   
  8.     cout << msg.str() << endl;   
  9. }   
  10.   
  11. int main(int argc, char* argv[]) {   
  12.   
  13.     lm::helloworld msg1;   
  14.   
  15.     {   
  16.         fstream input("./log", ios::in | ios::binary);   
  17.         if (!msg1.ParseFromIstream(&input)) {   
  18.             cerr << "Failed to parse address book." << endl;   
  19.             return -1;   
  20.         }         
  21.     }   
  22.   
  23.     ListMsg(msg1);   
  24. }  
编译:g++  msg.pb.cc reader.cc -o reader  `pkg-config --cflags --libs protobuf` -lpthread
执行./reader 输出 :
101
hello

8> 写Makefile文件
  1. all: write reader  
  2.   
  3. clean:  
  4.     rm -f write reader msg.*.cc msg.*.h *.o  log  
  5.   
  6. proto_msg:  
  7.     protoc --cpp_out=. msg.proto  
  8.   
  9.   
  10. write: msg.pb.cc write.cc  
  11.     g++  msg.pb.cc write.cc -o write  `pkg-config --cflags --libs protobuf`  
  12.   
  13. reader: msg.pb.cc reader.cc  
  14.     g++  msg.pb.cc reader.cc -o reader  `pkg-config --cflags --libs protobuf` 

posted @ 2012-05-05 18:17 多彩人生 阅读(31849) | 评论 (3)编辑 收藏

pkg-config的用法

pkg-config

pkg-config程序是干什么用的?简单的说就是向用户向程序提供相应库的路径、版本号等信息的程序。
譬如说我们运行以下命令:
pkg-config  查看gcc的CFLAGS参数
$pkg-config --libs --cflags opencv
会显示如下信息:
-I/usr/include/opencv -lcxcore -lcv -lhighgui -lcvaux
各位看官,你看这不就是我们用gcc编译连接时CFLAGS的参数吗?
因此当我们需要编译连接某个库时,我们只需要把上面那行加入gcc 的参数里面即可。
这也是configure的作用,它会检查你需要的包,产生相应的信息。
pkg-config从哪儿知道这些信息的呢?它是从包名为xxx.pc这个文件中查找到的。拿上面那个例子说,它是从opencv.pc这个文件中查知的。
pkg-config 又怎么会知道opencv.pc这个文件呢?
下面我们看一下pkg-config是怎样工作的。
缺省情况下,pkg-config首 先在prefix/lib/pkgconfig/中查找相关包(譬如opencv)对应的相应的文件(opencv.pc)。在linux上上述路径名为 /usr/lib/pkconfig/。若是没有找到,它也会到PKG_CONFIG_PATH这个环境变量所指定的路径下去找。若是没有找到,它就会报 错,例如:
Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found

设置环境变量PKG_CONFIG_PATH方法举例如下:
export PKG_CONFIG_PATH=/cv/lib:$PKG_CONFIG_PATH

================================================================
查看一个.pc文件的内容:
[root@yx pkgconfig]# cat glib-2.0.pc
prefix=/usr
exec_prefix=/usr
libdir=/lib
includedir=/usr/include
configexecincludedir=/usr/lib/glib-2.0/include

glib_genmarshal=glib-genmarshal
gobject_query=gobject-query
glib_mkenums=glib-mkenums

Name: GLib
Description: C Utility Library
Version: 2.12.3
Libs: -L${libdir} -lglib-2.0 
Cflags: -I${includedir}/glib-2.0 -I${configexecincludedir}

[root@yx pkgconfig]# pwd
/usr/lib/pkgconfig

可见.pc文件 是对其的库文件路径,头文件路径,版本号,Cflags等一些参数进行封装。

再来看看第一个Gtk+程序里的
`pkg-config   --cflags   --libs  gtk+-2.0`意思:
`pkg-config   --cflags   --libs  gtk+-2.0` 是pkg-config从路径/usr/lib/pkgconfig
/gtk+-2.0.pc中提取出来的用于编译用的。

[root@yx pkgconfig]# cat  gtk+-2.0.pc
prefix=/usr
exec_prefix=/usr
libdir=/usr/lib
includedir=/usr/include
target=x11

gtk_binary_version=2.10.0
gtk_host=i686-redhat-linux-gnu

Name: GTK+
Description: GIMP Tool Kit (${target} target)
Version: 2.10.4
Requires: gdk-${target}-2.0 atk cairo
Libs: -L${libdir} -lgtk-${target}-2.0
Cflags: -I${includedir}/gtk-2.0

显然,出可以自己来指定为:-L/usr/lib  -lgtk-{target}-2.0  -I/usr/include/gtk-2.0

下面来看一下{target}该是多少:

[root@yx lib]# ls gt
gthumb/        gtk-2.0/       gtkhtml/      
gtk/           gtk-sharp-2.0/ gtkmm-2.4/    

[root@yx lib]# ls gtk-2.0/
2.10.0  2.4.0  immodules  include  modules

[root@yx lib]# ls gtk-sharp-2.0/
gconfsharp-schemagen.exe

[root@yx lib]# pwd
/usr/lib
所以认为-lgtk-{target}-2.0中的{target}该是空字符: 
-lgtk-{target}-2.0====>-lgtk--2.0

At Last So:(理论大致上:)
-L/usr/lib  -lgtk-{target}-2.0  -I/usr/include/gtk-2.0  ====>
-L/usr/lib  -lgtk--2.0  -I/usr/include/gtk-2.0
而实际上更多些:
对比pkg-config对gtk+-2.0看实际效果:
[yuxu@yx base]$ pkg-config  --cflags  --libs  gtk+-2.0
-I/usr/include/gtk-2.0  -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng12  -L/lib -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 
后面还有很多的路径哦。




gtk_base.c:
#include <gtk/gtk.h>
int main(int argc,char *argv[])
{
    GtkWidget  *window;
    gtk_init(&argc,&argv);
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_widget_show(window);
    gtk_main();
    return FALSE;
}

gcc   -o     gtk_base      gtk_base.c    `pkg-config   --cflags   --libs  gtk+-2.0`

posted @ 2012-05-05 16:29 多彩人生 阅读(47427) | 评论 (0)编辑 收藏

protobuf安装后出现libprotobuf.so.6 not found after installation

Please follow the instructions in README.txt:

** Hint on install location **

  By default, the package will be installed to /usr/local.  However,
  on many platforms, /usr/local/lib is not part of LD_LIBRARY_PATH.
  You can add it, but it may be easier to just install to /usr
  instead.  To do this, invoke configure as follows:

    ./configure --prefix=/usr

  If you already built the package with a different prefix, make sure
  to run "make clean" before building again.

** 翻译 translate **

  默认情况下,包会被安装在/usr/local路径下。但是,在某些系统平台上(如Ubuntu 11),/usr/local/lib路径并不包含在LD_LIBRARY_PATH中。你可以手动添加,但也可以很方便的通过安装到/usr路径下,调 用configure命令参数如下

    ./configure --prefix=/usr

  如果你的包已经编译过,确保先运行"make clean"再重新编译。

reference:http://code.google.com/p/protobuf/issues/detail?id=213

posted @ 2012-05-05 14:41 多彩人生 阅读(1559) | 评论 (0)编辑 收藏

ubuntu安装protobuf

  • 1.下载http://code.google.com/p/protobuf/downloads/list
  • 2.解压
  • Shell代码  收藏代码
    1. tar jxvf protobuf-2.4.1.tar.bz2 protobuf  
  • 3.编译
  • Shell代码  收藏代码
    1. $ ./configure  
    2. $ make  
    3. $ make install  
       
  • 4.使用
  • Shell代码  收藏代码
    1. /usr/bin/protoc /home/jiangrongyong/work/proto/*.proto --proto_path=/home/jiangrongyong/work/proto --java_out=/home/jiangrongyong/work/proto-output  


    protobuf安装后出现libprotobuf.so.6 not found after installation
    http://yuu1987.iteye.com/blog/1240712
    分享到:

    posted @ 2012-05-05 14:35 多彩人生 阅读(1917) | 评论 (0)编辑 收藏

    ubuntu 开启ssh 服务

    开启SSH
    查看是否有/etc/ssh/sshd_config文件
    1、cat   /etc/ssh/sshd_config
    如果有则:
    2、/etc/init.d/ssh  restart
    没有这个文件则:
    3、apt-get update(升级)4、apt-get  install  ssh 5、y

    posted @ 2012-05-05 09:53 多彩人生 阅读(195) | 评论 (0)编辑 收藏

    tftp服务

    1、安装相关软件包
          apt-get install tftpd (服务端)
          apt-get install tftp (客户端)
          apt-get install xinetd

    2、建立配置文件
         sudo gedit /etc/xinetd.d/tftp
         输入:
         service tftp
         {
                socket_type = dgram
                protocol = udp
                wait = yes
                user = root
                server = /usr/sbin/in.tftpd
                server_args = -s /home/xxx/tftproot    指定tfpt的文件目录
                disable = no
                per_source = 11
                cps = 100 2
                flags = IPv4
         }

    3、建立tftp服务文件目录
           mkdir /home/xxx/tftproot

    4、重新启动服务
           /etc/init.d/xinetd restart

    5、安装完成,测试方法:
    在/home/xxx/tftproot目录下放任意文件“hello”
    然后 运行
          tftp localhost
    进入tftp命令行,输入
          get hello /home/xxx/hello
    看看是不是在/home/xxx有hello这个文件

    posted @ 2012-05-04 17:15 多彩人生 阅读(477) | 评论 (0)编辑 收藏

    boost 安装 ubuntu下

    最近在研究hadoop和云计算,但是hadoop是java写的,在hadoop上编写程序也要用java,所以最近可能会经常使用java。为了防止忘记C++,今天决定开始研究一下boost库。

    先把boost装到ubuntu吧。

    下载boost_1_43_0.tar.gz到/home/dtz/下,解压 tar zxvf boost_1_43_0.tar.gz
    cd boost_1_43_0,

    执行:

    sudo ./bootstrap.sh 

    sudo ./bjam install

    这样boost库就安装好了

    http://www.codesky.net/article/201108/133806.html

    //test.cpp
    #include <boost/asio.hpp>
    int main()
    {
        return 0;
    }

    编译:

    方法A:g++  -I/usr/local/include/boost/  test.cpp -o test  /usr/local/lib/ -lboost_thread.a -lboost_system.a -lpthread

    方法B:g++  -I/usr/local/include/boost/  test.cpp -o test  -L/usr/local/lib/ -lboost_thread -lboost_system -lpthread


     

    当你要使用多个库源于一个路径时使用方法B就省力了(paid off)。注意到方法B中并没有指定.a(静态库)还中.so(动态库),系统将自动地帮你选择使用静态库还是动态库,当然你可以通过选项“-static"显示地指定。


    -----------------------------------------------------------------------

    Linux上安装使用boost入门指导

    获得boost

    boost分布

    只需要头文件的库

    使用boost建立一个简单的程序

    准备使用boost二进制文件库

    把你的程序链接到boost库

    1.获得boost

    下载boost_1_46_1.tar.bz2

    解压

    2.boost分布

    boost_1_46_1.........................boost根目录

      boost/.....................................所有boost头文件

      libs/........................................Tests,.cpps,docs等的库文件

    注意:

      (1)boost根目录(通常是/usr/local/boost_1_46_1)想到$BOOST_ROOT变量中

      (2)编译程序时如果用到boost库,需要指定头文件路径-I$BOOST_ROOT

      (3)因为所有头文件都在boost文件夹下,并且头文件都是hpp后缀,所#include形如:

        #include <boost/whaever.hpp>

    3.只需要头文件的库

      绝大多数的boost库都是header-noly的:它们完全由包含模板和inline函数的头文件组成,不需要单独编译和二进制库文件,也不需要链接时特别对待。

      只有下面的boost库必需单独built:

    Boost.Filesystem

    Boost.GraphParallel

    Boost.IOStreams

    Boost.MPI

    Boost.ProgramOptions

    Boost.Python (see the Boost.Python build documentation before building and installing it)

    Boost.Regex

    Boost.Serialization

    Boost.Signals

    Boost.System

    Boost.Thread

    Boost.Wave

      下面这些单独built是可选(optional)的: 

      Boost.DateTime  Boost.Graph  Boost.Math  Boost.Random  Boost.Test

    4.使用boost建立简单的程序

      下面的程序(example.cc)只用到header-only库。它是从标准输入中读入一串整数,使用Boost.Lambda每个数乘以3后输出。

    view sourceprint?

    #include <boost/lambda/lambda.hpp>

    #include <iostream>

    #include <iterator>

    #include <algorithm>

     

    int main()

    {

        using namespace boost::lambda;

        typedef std::istream_iterator<int> in;

     

        std::for_each(

            in(std::cin), in(), std::cout << (_1 * 3) << " " );

    }

    编译:g++  -I$BOOST_ROOT  example.cc  -o  example

    运行:echo 1 2 3 | ./example

    5.准备使用boost二进制库

      如果你的程序用到需要单独编译的boost库,你需要首先获得这些二进制库文件。

    5.1编译安装所有二进制库文件

      cd $BOOST_ROOT

      ./bootstrap.sh  --help

      ./bootstrap.sh  --prefix=/usr/local    ##其实默认情况下prefix的值就是/usr/local

      此时生成了bjam可执行文件,这个东西就是用来编译boost库的。

      ./bjam  install

    5.2仅安装指定的二进制库文件

      下面均使用系统默认的编译器,即Linux上的gcc。

      5.2.1安装Boost.build

      Boost.Build是一个用于开发、测试、安装软件的基于文本的系统。Boost.Build的生成安装步骤:

      (1)cd $BOOST_ROOT/tools/build/v2

      (2)./bootstrap.sh

      (3)./bjam  install  --prefix=/usr/local/      ##prefix是Boost.Build安装位置

      (4)把prefix/bin放到PATH中          ##当然/usr/local/bin已经PATH中了

      5.2.2调用bjam时不指定toolset则使用系统默认的编译器。如果你的Linux上装了不同版本的gcc,则使用toolset选项时可以指定版本号:toolset=gcc-4.4

      5.2.3指定build路径,通过--build-dir=/path选项,不指定时默认在当前路径下创建bin.v2文件夹,把生成的文件放在其内。

      5.2.4调用bjam

      cd  $BOOST_ROOT

      bjam  --build-dir=./build-boost  toolset=gcc   stage

      上面的命令将创建static and shared non-debug multi-threaded variants of the libraries.如果要建立所有的variants,请使用"--build-type=complete"选项。

      所有的boost二进制库文件将放在stage/lib/下,如果你要另外指定路径,请使用“--stagedir=directory"选项。

      注意为节省build时间,你可能需要少build一些库文件:

    查看库文件名称  --show-libraries

    限制build哪些库  --with-libraryname或者--without-libraryname

    选择特定的build variant  adding release or debug to the command line

      友情提示:Boost.Build会生成很多报告输出,如果你能保证建立过程不出错误,你可以禁止这些输出以节省时间。方法:在命令后追加”>build.log  2>&1"

    6.把你的程序链接到boost库

      下面的程序是从邮件中抽取“主题”内容,它用到了Boost.Regex库,这个库是需要单独编译的。

    view sourceprint?

    #include <boost/regex.hpp>

    #include <iostream>

    #include <string>

     

    int main()

    {

        std::string line;

        boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );

        

        while (std::cin)

        {

            std::getline(std::cin, line);

            boost::smatch matches;

            if (boost::regex_match(line, matches, pat))

                std::cout << matches[2] << std::endl;

        }

    }

    编译:

    方法A:g++  -I$BOOST_ROOT  example.cc -o example  $BOOST_ROOT/stage/lib/ -lboost_regex.a

    方法B:g++  -I$BOOST_ROOT  example.cc -o example  -L$BOOST_ROOT/stage/lib/ -lboost_regex

    当你要使用多个库源于一个路径时使用方法B就省力了(paid off)。注意到方法B中并没有指定.a(静态库)还中.so(动态库),系统将自动地帮你选择使用静态库还是动态库,当然你可以通过选项“-static"显示地指定。

    6.1库文件的命名方式

    拿libboost_regex-gcc34-mt-d-1_36来说:

    lib....................................通用前缀

    boost_regex.....................库名

    gcc34...............................编译时使用的toolset是gcc-3.4

    mt...................................编译时是支持多线程的

    d/s/g/y/p..........................ABI tag

    1_36................................Tag version

    6.2运行我们的程序

      首先新建一个文本文件mail.txt

    view sourceprint?

    To: George Shmidlap

    From: Rita Marlowe

    Subject: Will Success Spoil Rock Hunter?

    ---

    See subject.

    如果我们的程序链接到了一个共享动态库,我们需要让系统知道到哪儿去加载它。请看我的~/.bashrc文件:

    view sourceprint?

    #boost

    export BOOST_ROOT="/usr/local/boost_1_46_1"

    export LD_LIBRARY_PATH="/usr/local/boost_1_46_1/stage/lib:$LD_LIBRARY_PATH"

    运行程序:./example  <  mail.txt

    应该输出

    view sourceprint?

    Will Success Spoil Rock Hunter?


     

    posted @ 2012-05-02 09:49 多彩人生 阅读(8132) | 评论 (0)编辑 收藏

    vim缩进

    vim的自动縮进

    1、配置文件的位置
    在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件。
    2、设置语法高亮显示
    1) 打开vimrc,添加以下语句来使得语法高亮显示:
    syntax on
    2) 如果此时语法还是没有高亮显示,那么在/etc目录下的profile文件中添加以下语句:
    export TERM=xterm-color

    3、设置Windows风格的C/C++自动缩进(添加以下set语句到vimrc中)
    1)设置(软)制表符宽度为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



    本文对vim的设置仅仅针对UBUNTU与Fedora系统,其他LINUX版本我没有实验过,敬请读者谅解!谢谢

    在UBUNTU中vim的配置文件存放在/etc/vim目录中,配置文件名为vimrc

    在Fedora中vim的配置文件存放在/etc目录中,配置文件名为vimrc

    在终端 输入以下命令来编辑vimrc配置文件:(也可以在编辑文件过程中用shift + :输入对应命令来实现)
    sudo vim /etc/vim/vimrc
    或者 sudo gedit /etc/vim/vimrc

    1、显示行号

    在文件末端添加一新行,输入 set nu

    2、语法高亮
    在文件中找到 "syntax on   这一行,去掉前面的双引号",双引号是注释的意思

    3、自动缩进

    在文件末尾添加一行,输入 set autoindent
    在添加一行,输入         set cindent
    其中 autoindent 是自动缩进; cindent是特别针对 C语言语法自动缩进

    注意:如果设置好以上设置后,VIM没有作出相应的动作,那么请你把你的VIM升级到最新版,一般只要在终端输入以下命令即可:sudo apt-get install vim

    祝大家使用VIM愉快!


    /////////////////////////////////////////////////////////////////////////////////////


    http://linux.chinaunix.net/techdoc/develop/2008/07/30/1021801.shtml
    需要软件
    vim 下载地址
    http://www.vim.org
    code_complete.vim 插件
    http://www.vim.org/scripts/script.php?script_id=1764
    ctags 一般安装完vim后都会有,ubuntu中好像是不支持,需要下载.
    一 vim 配置
    转载Eric的文章,原文出处
    http://blog.chinaunix.net/u/22968/showart_432269.html
    1、配置文件的位置
        在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以自己建立私有的配置文件,命名 为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件。
     
    2、设置语法高亮显示
    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 值。
    二 code_complete 配置
    把下载的code_complete拷贝到plugin目录下,一般都在(我的是)/usr/share/vim/vim71 /plugin下
    三 用ctags命令生成tags文件,ctags -R --c-kinds=+p --fields=+S
    应该算是建立索引表,然后把生成的tags文件拷贝到你编程的目录。
    在vim中使用键就可以补全函数原型了。

    posted @ 2012-04-29 14:49 多彩人生 阅读(4489) | 评论 (0)编辑 收藏

    ubuntu 切换到root用户

    sudo -sH

    posted @ 2012-04-29 08:19 多彩人生 阅读(373) | 评论 (0)编辑 收藏

    linux,chmod如何更改所有子目录的权限,要包括隐藏文件

    chmod 777 * -R,这个不能更改隐藏文件夹。 
    chmod 777 -R | ls -al -R,用这个,也不能更改隐藏文件夹。
     用怎么用,才能把子目录下的隐藏文件夹的权限也更改?


    for file in `find . -print` 
    do
    chmod 777 -R $file
    done

    posted @ 2012-04-29 08:15 多彩人生 阅读(3457) | 评论 (0)编辑 收藏

    仅列出标题
    共25页: First 15 16 17 18 19 20 21 22 23 Last 

    导航

    统计

    常用链接

    留言簿(3)

    随笔分类

    随笔档案

    搜索

    最新评论

    阅读排行榜

    评论排行榜