背景
寫c/cpp的時候一直習慣了大括號換行的風格,而Android源碼中是不換行的,看着實在是很難受,所以每次打開一個文件的時候,都會先格式化一下。
之前看的低版本的Android,直接使用vscode默認的代碼格式化功能就可以了,但是最近用它看Android8.1的代碼,卻發現不能格式化了。
開始我還以為是插件沖突啥的,於是就把插件禁用了,還是不行,而且打開之前低版本的代碼,還是能正常的格式化,所以推測不是插件問題。
解決方法
通過各種姿勢搜索vscode代碼格式化,都是讓設置【C_Cpp: Clang_format_fallback Style】,我把所有風格試了個遍,都沒有任何作用

后來仔細看選項說明才發現,如果【C_Cpp: Clang_format_style】選項設置為【file】,會優先使用【.clang-format】文件中的配置,然后看該選項果然是file

於是去查找項目下有沒有【.clang-format】,果然找到了很多,

隨便查看一個,果然里面設置的google代碼風格

直接把這些【.clang-format】文件刪除就可以了。
刪除腳本
文件太多了,手動刪除太麻煩,寫了個py腳本刪除,腳本參數為要刪除【.clang-format】文件的路徑,要是不想刪除,可以重命名備份下。
import os
import sys
def delete_clang_format():
curr_dir = os.getcwd()
files = os.listdir('.')
for name in files:
if os.path.islink(name):
pass
elif os.path.isdir(name):
os.chdir(name)
delete_clang_format()
os.chdir('..')
elif os.path.isfile(name) and name == '.clang-format':
print (curr_dir + '/' + name)
# os.remove('.clang-format')
os.rename('.clang-format', '.clang-format.back')
if __name__ == '__main__':
os.chdir(sys.argv[1])
delete_clang_format()
