vscode配置

配置好vscode真的比配置neovim方便多了,不需要过多的插件和设计就能够获得很好的体验,再安装一个vim模拟插件,不比neovim香吗?

基本配置#

可以在Settings页面进行勾选配置,也可以通过编写settings.json进行配置(在Settings页面点击右上角的 文件 图标即可打开),两种方式是等效的。我这里选择直接通过settings.json配置。编写好settings.json后保存即生效。

  {
    "editor.formatOnSave": true, //保存时自动format(如果安装了clangd则使用clangd进行format)
    "editor.fontSize": 15, //设置字体大小
    "editor.tabSize": 2, //设置tab的长度
    "editor.lineNumbers": "relative", //使用相对行号
    "files.autoSave": "off", //禁用自动保存
    "search.exclude": { //搜素时将某些文件夹下的文件排除在外
        "**/.cache": true
    },
    "files.exclude": { //不在项目中展示这些文件
        "**/.git": true,
    },
  }

安装插件#

  1. Dracula
    这个主题挺好看的,直接搜索安装,然后在配置文件settings.json文件中指定主题即可。这个插件提供了两个主题,Dracula和Dracula Soft,我更喜欢Dracula Soft版本。

    {    
      "workbench.colorTheme": "Dracula Soft",
    }
    
  2. Remote-SSH
    这是远程开发必备的插件,相信很多vscode用户都使用过这个插件。如果远程服务器的shell安装了美化主题,Remote-SSH连接之后vscode集成终端可能会出现符号乱码的情况。在settings.json中设置相应的字体即可。

    {  
      "terminal.integrated.fontFamily": "JetBrainsMono NF",  
    }
    
  3. vim
    这个插件在vscode中模拟vim,支持以vimrc的方式进行配置,但是我还是选择直接在settings.json中用json语法配置。这个插件还提供了几个快捷键,如gd跳转到定义处,gh显示错误信息或文档提示等,具体可以查看官方文档。

    {
      /* vim 配置 */
      "vim.easymotion": true, //按<leader><leader>进入easymotion模式,然后按任意移动键来显示跳转目标
      "vim.incsearch": true,
      "vim.useSystemClipboard": true,
      "vim.useCtrlKeys": true, //让vim模拟器占用ctrl键
      "vim.hlsearch": true,
      "vim.insertModeKeyBindings": [ //键位映射
          {
              "before": [
                  "j",
                  "k"
              ],
              "after": [
                  "<Esc>"
              ]
          }
      ],
      "vim.normalModeKeyBindingsNonRecursive": [
          {
              "before": [
                  "<leader>",
                  "d"
              ],
              "after": [
                  "d",
                  "d"
              ]
          }
      ],
      "vim.leader": "<space>",
      // 让vscode保有这些快捷键
      "vim.handleKeys": {
          "<C-a>": false,
          "<C-f>": false,
          "<C-s>": false,
          "<C-x>": false,
          "<C-c>": false,
          "<C-v>": false,
          "<C-d>": false,
      },  
    }
    

cpp开发#

代码格式化。#

vscode插件市场中主要有C/C++和clangd两个插件提供cpp补全支持,clangd评分更高,所以我选择clangd。

  1. 安装clangd插件
    remote-ssh连接到服务器之后,将clangd插件安装到远程服务器中。
  2. 安装clangd服务端
    clangd插件需要配合clangd服务端使用。如果远程服务器没有安装clangd服务端,那么vscode会提示是否安装clangd,点击安装即可。vscode会把clangd安装在home目录下.vscode-server文件夹下的某个子文件夹中。也可以选择自行安装clangd。
    安装好clangd后,不需要任何配置就能正常使用了。clangd自带format功能,不需要再安装clang-format插件。如果需要自定义format格式,在某个目录下创建一个.clang-format文件,写入自定义的format规则,该目录下所有子文件都会按照.clang-format来进行format。CMU15445的实验项目使用的.clang-format如下,这个规则基于google style,然后对*&的align方式、每行最大字符数以及头文件的排列规则的规定进行了调整。
    编辑文件时右键,选择Format Document或按Shift+Alt+F进行format。由于我们设置了保存文件时自动format,也可以通过保存文件的方式触发format。
    BasedOnStyle: Google
    # If true, analyze the formatted file for the most common alignment of & and *. Pointer and reference alignment styles are going to be updated according to the preferences found in the file. PointerAlignment is then used only as fallback.
    DerivePointerAlignment: false
    PointerAlignment: Right
    
    ColumnLimit: 120
    
    # Default for clang-8, changed in later clangs. Set explicitly for forwards compatibility
    IncludeBlocks: Preserve
    

补全#

vscode默认智能使用上下箭头进行补全项选择,进行补全时右手必须离开键盘去找上下箭头,很不方便。可以设置使用tab和shift-tab来选择补全项。此项设置不在Settings中,而是在Keyboard Shortcuts中设置。Keyboard Shortcuts也有相应的配置文件keybinds.json(在Keyboard Shortcuts页面点击右上角的 文件 图标即可打开),对其配置如下,即可使用tab选择补全项。

[
    {
        "key": "tab",
        "command": "acceptSelectedSuggestion",
        "when": "suggestWidgetVisible && textInputFocus"
    },
    {
        "key": "shift+tab",
        "command": "acceptSelectedSuggestion",
        "when": "suggestWidgetVisible && textInputFocus"
    },
    {
        "key": "tab",
        "command": "selectNextSuggestion",
        "when": "suggestWidgetMultipleSuggestions &&editorTextFocus &&  suggestWidgetVisible"
    },
    {
        "key": "shift+tab",
        "command": "selectPrevSuggestion",
        "when": "suggestWidgetMultipleSuggestions && editorTextFocus &&  suggestWidgetVisible"
    }
]

cmake#

写cpp一般需要cmake管理项目,为了更方便地编写CMakeLists.txt文件,可以安装CMake Tools插件。

配置汇总#

keybinds.json

[
    {
        "key": "tab",
        "command": "acceptSelectedSuggestion",
        "when": "suggestWidgetVisible && textInputFocus"
    },
    {
        "key": "shift+tab",
        "command": "acceptSelectedSuggestion",
        "when": "suggestWidgetVisible && textInputFocus"
    },
    {
        "key": "tab",
        "command": "selectNextSuggestion",
        "when": "suggestWidgetMultipleSuggestions &&editorTextFocus &&  suggestWidgetVisible"
    },
    {
        "key": "shift+tab",
        "command": "selectPrevSuggestion",
        "when": "suggestWidgetMultipleSuggestions && editorTextFocus &&  suggestWidgetVisible"
    }
]

settings.json

{
    "workbench.colorTheme": "Dracula Soft",
    "terminal.integrated.fontFamily": "JetBrainsMono NF",
    "editor.formatOnSave": true,
    "editor.fontSize": 15,
    "editor.tabSize": 2,
    "editor.lineNumbers": "relative",
    "files.autoSave": "off",
    "search.exclude": { //搜素时将某些文件夹下的文件排除在外
        "**/.cache": true
    },
    "files.exclude": { //不在项目中展示这些文件
        "**/.git": true,
    },
    /* vim 配置 */
    "vim.easymotion": true, //按<leader><leader>进入easymotion模式,然后按任意移动键来显示跳转目标
    "vim.incsearch": true,
    "vim.useSystemClipboard": true,
    "vim.useCtrlKeys": true,
    "vim.hlsearch": true,
    "vim.insertModeKeyBindings": [
        {
            "before": [
                "j",
                "k"
            ],
            "after": [
                "<Esc>"
            ]
        }
    ],
    "vim.normalModeKeyBindingsNonRecursive": [
        {
            "before": [
                "<leader>",
                "d"
            ],
            "after": [
                "d",
                "d"
            ]
        }
    ],
    "vim.leader": "<space>",
    "vim.handleKeys": {
        "<C-a>": false,
        "<C-f>": false,
        "<C-s>": false,
        "<C-x>": false,
        "<C-c>": false,
        "<C-v>": false,
        "<C-d>": false,
    },
    "[cpp]": {
        "editor.defaultFormatter": "llvm-vs-code-extensions.vscode-clangd"
    }
}

.clang-format

BasedOnStyle: Google
# If true, analyze the formatted file for the most common alignment of & and *. Pointer and reference alignment styles are going to be updated according to the preferences found in the file. PointerAlignment is then used only as fallback.
DerivePointerAlignment: false
PointerAlignment: Right

ColumnLimit: 120

# Default for clang-8, changed in later clangs. Set explicitly for forwards compatibility
IncludeBlocks: Preserve

总结#

至此,我们就拥有了一个既能享受vim输入的高效性,又能体验vscode各种现代化功能,又不失自定义能力的漂亮的开发环境。

作者:yuxiayizhengwan

出处:https://www.cnblogs.com/yuxiayizhengwan/p/16694557.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   雨下yi整晚  阅读(450)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示