当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 5 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : vim达人们, 如果vim提供的缩进无法满足需求时, 一般怎么对付?
帖子发表于 : 2010-11-14 21:52 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
我发现vim的 cindent 对付不了一些特殊的C++语法. 比如构造函数的初始化式, 自动缩进的就不行.

如下是使用 Boost Format 库 的C++代码, 我自己手动缩进如下:
代码:
// To compile:
// $ g++ -lboost_filesystem path.cc
//
// 该示例程序演示 Boost.Filesystem 中提供的
// path对象的常用操作.
//
// 同时, 我还使用了Boost Format 库完成格式化输出.
//
#include "boost/filesystem.hpp"
#include <boost/format.hpp>
#include <iostream>
#include <cstdio>

using namespace std;
namespace bfs = boost::filesystem;

int main(int argc, char** argv) {
    //boost::progress_timer t( std::clog );

    if(argc <= 1)
        exit(1);
    bfs::path p(argv[1]);

    //p.clear();
   
    cout << boost::format (
            "path=                      '%||'\n"
            "complete:                  '%||'\n"
            "\n"
            "path.filename():           '%||'\n"
            "path.parent_path():        '%||'\n"
            "path.string():             '%||'\n"
            "path.file_string():        '%||'\n"
            "path.directory_string():   '%||'\n"
            "path.root_name()           '%||'\n"
            "path.root_directory()      '%||'\n"
            )
            % p
            % bfs::system_complete(p)
            % p.filename()
            % p.parent_path()
            % p.string()
            % p.file_string()
            % p.directory_string()
            % p.root_name()
            % p.root_directory()
            ;
   
    // 因为 path 具有从 const char* 进行构造的构造函数, 所以:
    //cout << bfs::system_complete("a/b/c.py") << "\n";
}


gg=G 后的缩进如下:
代码:
// To compile:
// $ g++ -lboost_filesystem path.cc
//
// 该示例程序演示 Boost.Filesystem 中提供的
// path对象的常用操作.
//
// 同时, 我还使用了Boost Format 库完成格式化输出.
//
#include "boost/filesystem.hpp"
#include <boost/format.hpp>
#include <iostream>
#include <cstdio>

using namespace std;
namespace bfs = boost::filesystem;

int main(int argc, char** argv) {
    //boost::progress_timer t( std::clog );

    if(argc <= 1)
        exit(1);
    bfs::path p(argv[1]);

    //p.clear();

    cout << boost::format (
            "path=                      '%||'\n"
            "complete:                  '%||'\n"
            "\n"
            "path.filename():           '%||'\n"
            "path.parent_path():        '%||'\n"
            "path.string():             '%||'\n"
            "path.file_string():        '%||'\n"
            "path.directory_string():   '%||'\n"
            "path.root_name()           '%||'\n"
            "path.root_directory()      '%||'\n"
            )
              % p
                 % bfs::system_complete(p)
                                          % p.filename()
                                              % p.parent_path()
                                              % p.string()
                                              % p.file_string()
                                              % p.directory_string()
                                              % p.root_name()
                                              % p.root_directory()
                                              ;

    // 因为 path 具有从 const char* 进行构造的构造函数, 所以:
    //cout << bfs::system_complete("a/b/c.py") << "\n";
}


可以看见重排后的效果很糟.
我想请教一下, 对于Vim无法应付的情况, 如果处理呢?
不要以为这不重要, 其实无法正确缩进很让人抓狂的, 比如在上面的代码中, 我输入了一行 %***, 换行之后预期应和上行对齐的, 但是却漂移了很远, 我不得连续按退格键手动对齐.
谢谢!!!


_________________
http://wonc.me/


页首
 用户资料  
 
2 楼 
 文章标题 : Re: vim达人们, 如果vim提供的缩进无法满足需求时, 一般怎么对付?
帖子发表于 : 2010-11-14 22:32 
头像

注册: 2005-12-28 1:16
帖子: 3916
地址: 火星
系统: Ubuntu 12.10 X64
送出感谢: 1
接收感谢: 0 次
用astyle代替默认缩进


_________________
目前负债150多万


页首
 用户资料  
 
3 楼 
 文章标题 : Re: vim达人们, 如果vim提供的缩进无法满足需求时, 一般怎么对付?
帖子发表于 : 2010-11-14 22:52 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
xhy 写道:
用astyle代替默认缩进

谢谢! 我去看看.


_________________
http://wonc.me/


页首
 用户资料  
 
4 楼 
 文章标题 : Re: vim达人们, 如果vim提供的缩进无法满足需求时, 一般怎么对付?
帖子发表于 : 2010-11-15 17:55 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
潇洒走一回 写道:
xhy 写道:
用astyle代替默认缩进

谢谢! 我去看看.

非常感谢达人推荐的 astyle, 测试了一些文件, 默认情况居然和我的口味一模一样! :em11


_________________
http://wonc.me/


页首
 用户资料  
 
5 楼 
 文章标题 : Re: vim达人们, 如果vim提供的缩进无法满足需求时, 一般怎么对付?
帖子发表于 : 2010-11-16 16:57 
头像

注册: 2009-05-20 21:43
帖子: 735
送出感谢: 2
接收感谢: 2
我先前在仓库里安装的, 不能使用一些最新版本的选项. 于是下载了最新的源码编译.

astyle的源码让我很震惊, 挺复杂的一个程序, 居然除了标准库, 什么都没有依赖.
特别是解析命令行的部分用了大量代码, 真不如用 Boost.program_options .


_________________
http://wonc.me/


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 5 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译