用VSCODE写C工程的插件与配置:

尝试代替source insight4

插件:

 Bookmarks                       # 书签
 Bracket Pair Colorizer        # 括号配色 
 C/C++  					
 C/C++  GUN global			#完善函数跳转
 Include Autocomplete          # 提供头文件补全
 Explorer Exclude				#隐藏不用的文件夹
 highlight-words					#高亮

配置:

.vscode/c_cpp_properties.json :

“defines”:[ ] 配置全局宏定义

settings.json:

“search.exclude”: { } 搜索文件时过滤(true是过滤),区分大小写
,

设置

在设置中搜索,C_Cpp.errorSquiggles开启关闭语法检查。

网站:

搜索时过滤
,

C/C++格式(安装C/C++插件后)
  • 找到clang-format.exe的绝对路径,如c:\Users\wqr57.vscode\extensions\ms-vscode.cpptools-0.18.1/bin/…/LLVM/bin/clang-format.exe;
  • .clang-format文件放入项目最顶层的文件夹里;
  • 设置搜索Clang_format_style,设置成file。
  • 设置clang_format_path,设置成clang-format.exe文件的绝对路径
Language:        Cpp
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: true
#AlignConsecutiveDeclarations: true
#AlignConsecutiveBitFields: true
AllowShortBlocksOnASingleLine: false
BinPackArguments: false
AllowAllArgumentsOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
#KeepEmptyLinesAtTheStartOfBlocks: true
AlignConsecutiveMacros: true
AlignEscapedNewlines: Left
AlignTrailingComments: true
AllowShortFunctionsOnASingleLine: None
#BinPackArguments: true
BraceWrapping:
  AfterCaseLabel:  false
  AfterControlStatement: Never  
  AfterEnum:       false
  AfterFunction:   true
  AfterStruct:     false
  AfterUnion:      false
  BeforeElse:      true
  #BeforeWhile:	false
  #IndentBraces:    false
  SplitEmptyFunction: false
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeBraces: Custom
ColumnLimit:     146
ContinuationIndentWidth: 4
#Cpp11BracedListStyle: true
DerivePointerAlignment: false
IndentCaseLabels: true
IndentWidth:     4
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 1
PointerAlignment: Right
SortIncludes: false
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInContainerLiterals: false
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false




官网CSDN

跳转定义

C/C++跳转不够快,可以用GUN global来完善跳转定义:(建议直接使用C/C++插件,用GUN global做不到悬停查看定义,经常会出现一个变量两个提示)
参考1
参考2
参考3

snippet

在file–preferences–User snippets–c.json上修改

"for": { 
	"prefix": "for ", 
	"body": [ 
		"for ($0; ; ) {", 
		"",
		"}", 
	], 
}, 
"forn": { 
	"prefix": "forn", 
	"body": [ 
		"for (int ${0:i} = 0;${0:i} < $1; ${0:i}++) {\n\n}", 
	], 
}, 
"#ifndef": { 
	"prefix": "#inf", 
	"body": [ 
		"#ifndef $0\n#define $0\n\n\n\n#endif" 
	], 
}, 
"switch": {
	"prefix": "switch ", 
	"body": [ 
		"swtich ($0) {\n\tcase :\n\t\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n}" 
	], 
}, 
"typedef struct": { 
	"prefix": "tp st", 
	"body": [ 
		"typedef struct {\n\t\n}$0;" 
	], 
},

Snippet

缩进为4个空格:

“editor.detectIndentation”: false,
“editor.tabSize”: 4, //vscode设置的缩进量
“editor.formatOnSave”: true, //保存时候自动格式化(自动格式)
,

给插件命令设置快捷键

进入设置快捷键页面,打开keybindings.json,添加:

{
	"key": "快捷键",
	"command": "命令",
},
	keybindings.json:
	{
        "key": "ctrl+pageup",
        "command": "-workbench.action.previousEditor"
    },
    {
        "key": "ctrl+pageup",
        "command": "-selectPrevPageSuggestion",
        "when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus"
    },
    {
        "key": "ctrl+pagedown",
        "command": "editor.action.transformToLowercase"
    },
    {
        "key": "ctrl+pageup",
        "command": "editor.action.transformToUppercase"
    },
    {
        "key": "ctrl+pagedown",
        "command": "-workbench.action.nextEditor"
    },
    {
        "key": "ctrl+pagedown",
        "command": "-selectNextPageSuggestion",
        "when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus"
    },
    {
        "key": "f8",
        "command": "highlightwords.addHighlight",
    },
    {
        "key": "f8",
        "command": "-editor.action.marker.nextInFiles",
        "when": "editorFocus"
    },

插件命令快捷键
,

配合keil一键编译:

命令行编译keil的脚本:

import os
import threading
import sys
import time

runing = True

def readfile():
    while (os.path.isfile('build_log.txt') != True):
        time.sleep(0.5)
    with open('build_log.txt', 'r', encoding='UTF-8') as f:
        while runing:
            line = f.readline(1000)
            if line != '':
                print(line)
            time.sleep(0.1)

if __name__ == '__main__':
    thread = threading.Thread(target=readfile)
    thread.start()
    cmd1 = 'C:\\Keil_v5\\UV4\\UV4.exe -j0 -b .\\...\\xxx.uvprojx的目录'
    cmd2 = ' -o C:\\Users\\...\\build_log.txt(脚本目录,不能用.\\)'
    code = os.system(cmd1 + cmd2)
    time.sleep(4)
    runing = False
    thread.join()
    #print("end")
    os.remove("build_log.txt")
    sys.exit(code)

命令行编译keil的bat:

set UV=C:\Keil_v5\UV4\UV4.exe
set UV_PRO_PATH=C:\Users\...\oversea.uvprojx
echo Init building ...
echo .>build_log.txt
echo %UV% -j0 -b %UV_PRO_PATH% -o %cd%\build_log.txt
:: -b编译, -r重新编译, -f可能是下载, 注意上一句去掉echo才是执行
::type build_log.txt
echo Done.
pause

在VSCODE一键执行脚本:

  • ctrl+shift+P启动全局控制台,输入configure task
  • 选择使用模板创建task.json文件,然后选Others,然后系统会在工作目录下生成一个.vscode/tasks.json文件
  • 在文件添加一个task:(“tasks”[ ]里添加)
        {
            "label": "myrun",
            "type": "shell",
            "command": "py",
            "args": [
                "D:\\...\\脚本目录.py"
            ],
            "presentation": {
                //启动之前清理控制台输出
                "clear": true
            }
        },
  • 然后给任务绑定快捷键:
    {
        "key": "f5",
        "command": "workbench.action.tasks.runTask",
        "args": "myrun"
    },

常用快捷键:

ctrl + p: 搜索文件
ctrl + t:全局搜索符号
ctrl + shift + o:搜索文件内符号
ctrl + K, ctrl + S: 设置快捷键
F1: 输入命令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值