如何编辑Emacs处理选项卡和像Visual Studio这样的空白区域中的代码?

时间:2011-02-04 23:11:37

标签: visual-studio emacs editor

我开始的项目是每个人都使用Microsoft Visual Studio编辑代码。但我是Emacs用户。

当我在我的Emacs中打开这些C ++文件时,它们看起来很奇怪。例如:

namespace·ns·{
»class·Foo·{
»»virtual·function_name(·some_type::const_iterator·start
»»»»»»»»····,·some_type::const_iterator·end
»»»»»»»»»,·boost::shared_ptr<some_type>·varname·)·=·0;
»};
}

我在这里将标签显示为»,将空格显示为“。”,以显示差异。

我想透明地查看和编辑代码,以便它在我的Emacs中看起来正确并保存,以便它对Visual Studio用户来说是正常的。

那么,我怎样才能设置Emacs以便它显示出应该显示的文件,这可能是:

namespace ns {
  class Foo {
    virtual function_name( some_type::const_iterator start
                         , some_type::const_iterator end
                         , boost::shared_ptr<some_type> varname ) = 0;
  };
}

我想告诉Emacs使用标签以原始的,奇怪的方式保存它。

2 个答案:

答案 0 :(得分:4)

设置标签宽度3给我们:

namespace ns {
   class Foo {
     virtual function_name( some_type::const_iterator start
                           , some_type::const_iterator end
                          , boost::shared_ptr<some_type> varname ) = 0;
   };
}

这与我们可以得到的假定格式一样接近,但不完全一样。你知道它是否与Visual Studio显示的相匹配吗?

你可能想要以下内容:

(add-hook 'c++-mode-hook 'my-c++-mode-hook)
(defun my-c++-mode-hook ()
  (setq tab-width 3
        indent-tabs-mode t
        c-basic-offset 3))

希望这是一个良好的开端,但是必须有其他设置来匹配Visual Studio的工作方式,所以我建议你开始阅读Emacs Wiki:

http://www.emacswiki.org/emacs/IndentingC

答案 1 :(得分:-3)

您应该将所有标签转换为选择代码并使用M-x untabify的空格。这将几乎统一每个编辑器中代码的外观。