首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VIM、自动格式化、代码指南、C++

VIM、自动格式化、代码指南、C++
EN

Stack Overflow用户
提问于 2017-06-30 02:49:34
回答 2查看 601关注 0票数 0

我希望能够使用vim自动格式化以下规则的代码:

规则1):如果表达式必须缩进3个空格。示例:

代码语言:javascript
复制
if(a &&
   b) 

(注意:B相对于父对象有三个空格缩进,注意当前的vim行为是4)

规则2):参数之间用空格分隔。示例:

代码语言:javascript
复制
 function_call(a, b, c);

规则3):赋值操作符之间没有空格。示例:

代码语言:javascript
复制
int a=x;

规则4):引用/取消引用运算符附加到变量名称,而不是类型。示例:

int &x = b;

在可能的情况下,我希望vim在我输入的时候自动做这些事情,但是如果这不可能,识别与上面的规则相反的格式(通过将它们标记为错误)也会很有帮助。

EN

回答 2

Stack Overflow用户

发布于 2017-06-30 06:37:50

您可以在自定义缩进文件中设置自动缩进规则。在“缩进”目录或Vim source code distribution中查看示例。

您可以在custom syntax file中设置错误突出显示规则。在“source code distribution”目录中找到示例,比如/usr/share/vim/vim74/syntax,或者再次在Vim source code distribution中找到。以下是JSON文件的示例:

代码语言:javascript
复制
" Syntax: Decimals smaller than one should begin with 0 (so .1 should be 0.1).
syn match   jsonNumError  "\:\@<=[[:blank:]\r\n]*\zs\.\d\+"

如果你想一路上自动重新格式化代码,你可能需要一个像vim-autoformat这样的特殊插件和/或一个像ClangFormat这样的外部工具。

票数 2
EN

Stack Overflow用户

发布于 2018-04-17 21:47:02

关于缩进等,请检查选项:h 'sw':h 'cindent':h 'cinoptions'...

关于应在何处插入空格和换行符,

对于已经键入的代码,clang-

  • 确实是重新格式化代码的最佳方式。vim有一个插件。

  • 用于代码片段、括号等,最近我开发了一个插件,用于格式化由其他插件插入的文本。受到极大启发,我被命名为核心插件lh-style。它被mu-template (我的代码片段/模板插件)和其他你想要动态重新格式化的东西使用,它会稍微复杂一点。也许lh风格可能会有帮助,我不知道,我还没有在这个主题上给出太多。

例如,在注释和字符串之外,应将=扩展为:

代码语言:javascript
复制
1. itself after a `[` (lamdbas), 
2. `<BS>=<space>`, after `=`, `>`, `<`, `!` followed by a space
3. `<space>=<space>` otherwise

编辑:我全搞错了,它做的和你想要的完全相反。

它应该是这样的:

“ftplugin/c/mymappings.vim函数!s:InsertExpr(char)中止let col =col(‘’.)让line = getline('.')设syn =synIDattr(synID(line(‘.),col-1,1),'name')如果syn =~?‘'comment|string|character|doxygen’return a:key endif let lcut =getline(‘.):col-2 let before =\ lcut =~ '=<>!$’?"\“\:lcut =~ "[=<>$”?'‘\:'’let after = linecol-1 =~“\t\n\]”?‘’:‘’return before.a:char.after endfunction inoremap = InsertExpr('=') inoremap < InsertExpr('<') inoremap > InsertExpr('>')

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44832848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档