vim 自動在操作符 前後加上空格 C語言
阿新 • • 發佈:2017-10-19
空格 func 再次 不知道 編碼 placement 字符 cti spa
function! Align_Space() let current_line = getline(‘.‘) let replacement = substitute(current_line,‘\([()a-zA-Z0-9_]\)\([!|^&=<>%*/+-]\)‘,‘\1 \2‘,‘g‘) let newline = substitute(replacement,‘\([!|^&=<>%*/+-]\)\([()a-zA-Z0-9_]\)‘,‘\1 \2‘,‘g‘) call setline(‘.‘,newline) call cursor(line(‘.‘),col(‘.‘) + 1) endfunction autocmd CursorMovedI *.[ch] call Align_Space()
公司編碼規範要求操作符前後添加空格,否則報錯
為防止疏漏,動手寫了一個簡單的vim函數
使用正則表達式替換的原理 實現 在輸入操作符時,自動為操作符前後添加空格
替換使用了反向引用原理
()a-zA-Z0-9_ 匹配 操作符前後可能出現的 字符
!|^&=<>%*/+- 匹配操作符
對vim的感想:
1 vim的文檔還是不夠全面,不知道substitute 是否有參數 能夠不移動光標
2 如果在函數中return 則autocmd CursorMovedI 配置的 函數不會再次被調用,除非退出再進入插入模式。
遺留問題:
#include<stdio.h> 以及 ++ 的情況 依然添加了空格感覺怪怪的
vim 自動在操作符 前後加上空格 C語言