vim,自动格式,代码二氧化碳,C
VIM, Automatic formatting, Code-Guidelines, C++
我希望能够使用vim自动格式化以下规则:
规则1(:如果必须用3个空间放置表达式。示例:
if(a &&
b)
(注意:b相对于父级具有三个空间内置,请注意当前的VIM行为为4(
规则2(:由空间隔开的参数。示例:
function_call(a, b, c);
规则3(:分配运算符之间没有空间。示例:
int a=x;
规则4(:参考/解除运算符连接到可变名称而不是类型。示例:
int& x = b;
在可能的情况下,我希望VIM在我键入时自动执行此操作,但是如果不可能,请识别与上述规则相反的格式(通过将其标记为错误(也将有所帮助。
>您可以在自定义凹痕文件中设置自动定义规则。在"缩进"目录中查看示例,例如/usr/share/vim/vim74/indent
或VIM源代码分发。
您可以在自定义语法文件中设置错误突出显示规则。在"语法"目录中查找示例,例如/usr/share/vim/vim74/syntax
之类的地方,或在VIM源代码分发中再次找到示例。这是JSON文件的示例:
" Syntax: Decimals smaller than one should begin with 0 (so .1 should be 0.1).
syn match jsonNumError ":@<=[[:blank:]rn]*zs.d+"
如果您想在走时自动重新格式代码,则可能需要一个特殊的插件,例如vim-autoformat和/或诸如clangformat之类的外部工具。
关于缩进,依此类推,请检查选项:h 'sw'
,:h 'cindent'
,:h 'cinoptions'
...
关于插入空间和新线的位置,
-
对于已经键入的代码,clang-format确实是使用重构代码的最佳方法。有一个用于vim的插件。
-
对于摘要,支架等,最近我已经在插件上工作,旨在格式化其他插件插入的文本。灵感的灵感,我被评为核心插件LH风格。它由MU-Template(我的摘要/模板插件(和LH-brackets使用。
-
对于您要飞行的其他东西,它会更加复杂。我不知道LH风格可能会有所帮助,但我还没有给出太多主题。
例如,外部注释和字符串,
=
应扩展到:- 在
[
(LAMDBAS(之后本身, -
<BS>=<space>
,=
之后,>
,<
,!
,然后是空间 -
<space>=<space>
否则
编辑:我弄错了,它完全相反。
这将是:
" ftplugin/c/mymappings.vim function! s:InsertExpr(char) abort let col = col('.') let line = getline('.') let syn = synIDattr(synID(line('.'),col-1,1),'name') if syn =~? 'comment|string|character|doxygen' return a:key endif let lcut = getline('.')[: col-2] let before = lcut =~ '[=<>!] $' ? "<bs>" : lcut =~ "[=<>![ tn]$" ? '' : ' ' let after = line[col-1] =~ "[ tn\]]" ? '' : ' ' return before.a:char.after endfunction inoremap <buffer> <expr> = <sid>InsertExpr('=') inoremap <buffer> <expr> < <sid>InsertExpr('<') inoremap <buffer> <expr> > <sid>InsertExpr('>')
- 在
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 此代码是否违反一个定义规则
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 为什么在这个代码结束循环中没有得到结束
- 在c代码之间共享数据的最佳方式
- vim,自动格式,代码二氧化碳,C