我希望能够使用vim自动格式化以下规则的代码:
规则1):如果表达式必须缩进3个空格。示例:
if(a &&
b) (注意:B相对于父对象有三个空格缩进,注意当前的vim行为是4)
规则2):参数之间用空格分隔。示例:
function_call(a, b, c);规则3):赋值操作符之间没有空格。示例:
int a=x;规则4):引用/取消引用运算符附加到变量名称,而不是类型。示例:
int &x = b;
在可能的情况下,我希望vim在我输入的时候自动做这些事情,但是如果这不可能,识别与上面的规则相反的格式(通过将它们标记为错误)也会很有帮助。
发布于 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文件的示例:
" 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这样的外部工具。
发布于 2018-04-17 21:47:02
关于缩进等,请检查选项:h 'sw'、:h 'cindent'、:h 'cinoptions'...
关于应在何处插入空格和换行符,
对于已经键入的代码,clang-
例如,在注释和字符串之外,应将=扩展为:
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('>')
https://stackoverflow.com/questions/44832848
复制相似问题