1. 程式人生 > >vim 自動在操作符 前後加上空格 C語言

vim 自動在操作符 前後加上空格 C語言

空格 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語言