intherither类的vim autoindent构造函数:避免双重缩进
vim autoindent constructor of intherither class: avoid double indentantion
我有以下代码:
MyClass::MyClass() :
BaseClass() {
doThis();
doThat();
}
如果我使用gg=G
用vim自动缩进代码,我会得到以下结果:
MyClass::MyClass() :
BaseClass() {
doThis();
doThat();
}
构造函数代码还有一个缩进,并且右括号不是与构造函数对齐,而是与基类定义对齐(可能与上面的行的原因相同)。
有没有一种方法可以通过自动缩进获得第一个代码片段?
目前,我的cino
变量在.vimrc
:中以以下方式设置
set cino=N-s,l1,b1,g0,i0
谢谢回复。
您可以使用indentexpr选项来完成此操作。简而言之,您必须编写自己的函数来计算缩进量。我写了一个简短的剧本,满足了你的要求,尽管为了时间的利益,我没有把它写得很健壮。
function! MyIndent()
if getline(v:lnum - 2) =~ '^s*(w)*::(w)*()s*:s*$'
&& getline(v:lnum - 1) =~ '^s*(w)*s*()s*{s*$'
return cindent(v:lnum) - &shiftwidth
endif
if getline(v:lnum) =~ '^s*}s*(//.*|/*.*)=$'
call cursor(v:lnum, 1)
silent normal %
let lnum = line('.')
if lnum < v:lnum
if getline(lnum - 1) =~ '^s*(w)*::(w)*()s*:s*$'
&& getline(lnum) =~ '^s*(w)*s*()s*{s*$'
return cindent(lnum - 1)
endif
endif
endif
return cindent(v:lnum)
endfunction
如果你转到$VIMRUNTIME/indent,你会看到一堆计算各种编程语言缩进量的文件。我发现这对写剧本很有帮助。
相关文章:
- clang格式:宏的缩进
- C++setiosflags函数操纵器-未确定的缩进
- VSCode 中带有 C/C++ 扩展名的多行注释缩进错误
- 如何使用c++调整文本文件中代码的缩进?
- 如何在C++中制作 clang 格式的缩进 extern C 块?
- CLion 行注释的不一致自动缩进
- 如何在用户按Enter键时控制wxStyledTextCtrl中的行缩进
- 是否可以更改 Xcode 缩进注释行的方式
- 用libxml2缩进合并的XML文件
- 精美的C 容器,具有级别的缩进
- 禁止 emacs 中的 c++ 命名空间缩进
- 我怎样才能让 Emacs 用我的代码缩进我的 // 注释
- 构造函数中初始值设定项列表的缩进是错误的
- Visual Studio 2015正在缩进for语句的多行
- c++中使用的缩进和漂亮打印之间的区别是什么
- 如何在 C 和 C++ 文件中配置 Vim 的右大括号缩进?
- intherither类的vim autoindent构造函数:避免双重缩进
- 使用从命名空间继承的类的Eclipse相对缩进
- C++0x枚举类的Emacs cc模式缩进问题
- emacs:类和结构的不同缩进