Files
Obsidian-Main/22.01. 軟體工具、設定/Visual Studio Code.md

9.5 KiB

快速鍵

顯示快速鍵列表

  • Windows: Ctrl + k + Ctrl + s
  • Mac: ⌘ + k + ⌘ + s

分割目前視窗

  • Windows: Ctrl + \
  • Mac: ⌘ + \

程式格式化

格式化整個文件

Shift + Alf + f

格式化選取的範圍

Ctrl + k + Ctrl + f

setting.json

  • "editor.formatOnType": true:輸入一行後,自動格式化目前這一行。
  • "editor.formatOnSave": true:儲存時格式化檔案。
  • "editor.formatOnPaste": true:貼上程式碼時格式化貼上的內容。
{
    // 文字編輯器
    "editor.bracketPairColorization.enabled": true,
    "editor.fontFamily": "Cascadia Code", // 字型
    "editor.fontLigatures": true,  //啟用連字
    "editor.fontSize": 14,  // 文字大小
    "editor.fontWeight": "normal",
    "editor.guides.bracketPairs": false,
    "editor.guides.indentation": false,
    "editor.insertSpaces": true,
    "editor.minimap.renderCharacters": false,
    "editor.renderWhitespace": "boundary",
    "editor.renderLineHighlight": "all",  // 整行高亮
    "editor.snippetSuggestions": "top",  // 將程式碼片段建議顯示於頂端
    "editor.tabCompletion": "on",  // 啟用tab鍵自動完成
    "editor.tabSize": 4,
    "editor.wordWrap": "off",

    // 檔案
    "files.trimTrailingWhitespace": true,  // 儲存檔案時去除行尾空白
    "files.insertFinalNewline": true,  // 儲存檔案時在結尾插入一個新行

    // 檔案管理員
    "explorer.confirmDelete": false,

    // 工作台
    "workbench.colorTheme": "One Dark Pro",  // 主題
    "workbench.iconTheme": "material-icon-theme",  // Icon主題
    "workbench.tree.indent": 15,
    "workbench.tree.renderIndentGuides": "always",
    "workbench.colorCustomizations": {
        "tree.indentGuidesStroke": "#05ef3c"
    },
    "breadcrumbs.enabled": true,  // 啟用麵包屑,可以通過上方路徑來資料夾、文件或者是函數的跳轉
    "oneDarkPro.vivid": true,
    "diffEditor.wordWrap": "off",

    // 終端機
    "terminal.integrated.fontFamily": "Fira Code",
    "editor.accessibilitySupport": "off",
    "[python]": {
        "editor.formatOnType": true
    },
    "polacode.target": "snippet",
    "editor.inlineSuggest.enabled": true,
    "github.copilot.enable": {
        "*": true,
        "yaml": false,
        "plaintext": false,
        "markdown": false,
        "scminput": false
    }
}

折疊程式碼

收起目前區塊

  • Windows: Ctrl + Shift + [
  • Mac: ⌥ + ⌘ + [

打開目前區塊

  • Windows: Ctrl + Shift + ]
  • Mac: ⌥ + ⌘ + ]

收起目前區塊(整個檔案)

  • Windows: Ctrl + (K => 0) (zero)
  • Mac: ⌘ + (K => 0) (zero)

打開目前區塊(整個檔案)

  • Windows: Ctrl + (K => J)
  • Mac: ⌘ + (K => J)

在「已開啟的檔案」間跳轉

Ctrl + tab

Plugin

Setting Sync

Code snippets

html.json

{
    "HTML template": {
        "prefix": "HTML_template",
        "body": [
            "<!doctype html>",
            "",
            "<html lang=\"en\">",
            "<head>",
            "    <meta charset=\"utf-8\">",
            "    <meta name=\"description\" content=\"Awin's HTML template\">",
            "    <meta name=\"author\" content=\"Awin Huang\">",
            "    <script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js\"></script>",
            "    <title>A HTML template</title>",
            "</head>",
            "",
            "<body>",
            "    <H1>Awin's HTML template</H1>",
            "    <p>Click to hide</p>",
            "</body>",
            "</html>",
            "",
            "<script>",
            "    $(document).ready(function(){",
            "        $(\"p\").click(function(){",
            "            $(this).hide();",
            "        });",
            "    });",
            "</script>",
        ],
        "description": "HTML template"
    }
}

python.json

{
    "Python template": {
        "prefix": "Python_Template",
        "body": [
           "import sys",
           "import argparse",
           "",
           "",
           "def main(args=None):",
           "    ${1:pass}",
           "",
           "",
           "if __name__ == '__main__':",
           "    parser = argparse.ArgumentParser()",
           "    parser.add_argument(\"first_file\", help=\"The first file\")",
           "    parser.add_argument(\"-s\", \"--sample_args\", default=\"sample_args\", help=\"Modify this arguments for you\")",
           "    args = parser.parse_args()",
           "    main(args)",
           "    sys.exit(0)"
       ],
        "description": "Python script template"
   },

   "F Print": {
       "prefix": "f-print",
       "body": [
           "print(f'$1 = {$1}')"
       ],
       "description": "print() with f-string and default {}"
   },
   "Q Print": {
       "prefix": "q-print",
       "body": [
           "print('$1 = {}, '.format($1))"
       ],
       "description": "print() with f-string and default {}"
   },
   "Debug RobotRun": {
       "prefix": "debug_robotrun",
       "body": [
           "import os",
           "import sys",
           "sys.path.insert(0, 'D:/codes/logitech/')",
           "import RobotRun",
           "print('+------------------------------------------------------------------------------+')",
           "print('|                                                                              |')",
           "print('|    RobotRun: {}'.format(RobotRun.__file__))",
           "print('|                                                                              |')",
           "print('+------------------------------------------------------------------------------+')",
       ],
       "description": "Change RobotRun to local version"
   },
   "Flask template": {
       "prefix": "Flask_Template",
       "body": [
           "## Flask template",
           "## Author: Awin Huang",
           "## Date: 2020/04/09",
           "",
           "import os, sys",
           "import datetime",
           "import json",
           "from flask import Flask, render_template, request",
           "",
           "",
           "app = Flask(__name__)",
           "",
           "## Setup log",
           "handler = logging.FileHandler('flask.log', delay=False)",
           "handler.setLevel(logging.INFO)",
           "app.logger.addHandler(handler)",
           "app.logger.setLevel(logging.INFO)",
           "",
           "",
           "def info_log(msg):",
           "    app.logger.info(msg)",
           "    # print(msg)",
           "",
           "",
           "def error_log(msg):",
           "    app.logger.error(msg)",
           "",
           "",
           "@app.route('/')",
           "def index():",
           "    info_log('Return main page to user.')",
           "    return 'Hello, this is main page'",
           "",
           "",
           "## Receive a GET request",
           "@app.route('/get_get', methods=['GET'])",
           "def run_testcase():",
           "    command = request.args.get('command')",
           "    value = 'This is value for GET'",
           "    return {",
           "        'command': command,",
           "        'value': value",
           "    }",
           "",
           "",
           "## Receive a POST request",
           "@app.route('/get_post', methods=['POST'])",
           "def get_post():",
           "    command = request.form['command']",
           "    value = 'This is value for POST'",
           "    return {",
           "        'command': command:",
           "        'value': value",
           "    }",
           "",
           "",
           "if __name__ == '__main__':",
           "    app.debug = True",
           "    app.run(host='0.0.0.0')",
       ],
       "description": "Flask template"
   },
       "Datetime now": {
       "prefix": "now_dt",
       "body": [
           "datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S:%f')"
       ],
       "description": "Get datetime.now() with format '%Y-%m-%d %H:%M:%S:%f'"
   },
       "Run process": {
       "prefix": "runprocess",
       "body": [
           "import multiprocessing as mp",
           "",
           "process = mp.Process(target=task_set.run, args=(self.task_sync, args))",
           "process.start()",
           "process.join()"
       ],
       "description": "Run function in a process"
   },
       "Sleep with dots": {
       "prefix": "sleepdots",
       "body": [
           "for i in range($1):",
           "    import time",
           "    print(\".\", end=\"\", flush=True)",
           "    time.sleep(1)",
       ],
       "description": "Sleep and print \".\" every second"
   },
   "Sleep with numbers": {
       "prefix": "sleepnum",
       "body": [
                       "for i in range($1):",
           "    print(f\"{i+1} \", end=\"\", flush=True)",
           "    time.sleep(1)",
       ],
       "description": "Sleep and print number every second"
   },
}

參考