CocConfig参数设置说明

2023-10-23 08:43:18 浏览数 (2)

前言

如果常用vim的程序员的话,coc 这个插件即使没用过也听说过,这真是个强到没边的插件。 之所以写这个文件是因为用了一段coc发现真是个强大的插件,可以对每次项功能做到非常精细的配置。 自己在用的过程中每一项都一点一点验证,把这个过程记录下来,可能会有很多朋友能用的上。

CocConfig

编辑CocConfig的方式有两种:

1.在vim输入: :CocConfig,保存后生成文件 2.编辑文件,默认不存在该文件:

~/.config/nvim/coc-settings.json

完整配置,下面标逐渐分析每个配置的说明,每个配置都是在使用中,一点一点验证。

代码语言:javascript复制
{
    "coc.preferences.semanticTokensHighlights": false,
    "coc.preferences.enableFloatHighlight": true,
    "coc.preferences.snippetStatusText": "Ⓢ ",
    "coc.preferences.extensionUpdateCheck": "daily",
    "coc.preferences.messageLevel": "error",
    "coc.source.around.firstMatch": false,
    "coc.source.buffer.firstMatch": false,
    "coc.source.syntax.firstMatch": false,
    "suggest.detailMaxLength": 60,
    "suggest.noselect": true,
    "suggest.enablePreselect": false,
    "suggest.triggerAfterInsertEnter": true,
    "suggest.autoTrigger": "always",
    "suggest.timeout": 5000,
    "suggest.enablePreview": true,
    "suggest.floatEnable": true,
    "suggest.detailField": "preview",
    "suggest.snippetIndicator": "",
    "suggest.triggerCompletionWait": 100,
    "suggest.echodocSupport": true,
    "suggest.completionItemKindLabels": {
        "class": "uf0e8",
        "color": "ue22b",
        "constant": "uf8fe",
        "default": "uf29c",
        "enum": "uf435",
        "enumMember": "uf02b",
        "event": "ufacd",
        "field": "uf93d",
        "file": "uf723",
        "folder": "uf115",
        "function": "u0192",
        "interface": "uf417",
        "keyword": "uf1de",
        "method": "uf6a6",
        "module": "uf40d",
        "operator": "uf915",
        "property": "ue624",
        "reference": "ufa46",
        "snippet": "ue60b",
        "struct": "ufb44",
        "text": "ue612",
        "typeParameter": "uf728",
        "unit": "uf475",
        "value": "uf89f",
        "variable": "ue71b"
    },
    "diagnostic.signOffset": 1,
    "diagnostic.errorSign": "uf467",
    "diagnostic.warningSign": "uf071",
    "diagnostic.infoSign": "uf129",
    "diagnostic.hintSign": "uf864",
    "diagnostic.displayByAle": false,
    "diagnostic.refreshOnInsertMode": false,
    "diagnostic.checkCurrentLine": true,
    "diagnostic.virtualTextPrefix": " ❯❯❯ ",
    "diagnostic.virtualText": false,
    "codeLens.enable": true,
    "list.previewHighlightGroup": "Statement",
    "list.nextKeymap": "<C-e>",
    "list.previousKeymap": "<C-u>",
    "importCost.bundleSizeDecoration": "both",
    "importCost.typescriptExtensions": [
        "\.tsx?$"
    ],
    "importCost.javascriptExtensions": [
        "\.jsx?$"
    ],
    "importCost.showCalculatingDecoration": true,
    "importCost.debug": false,
    "snippets.ultisnips.directories": [
        "$HOME/.config/nvim/Ultisnips/",
        "$HOME/.config/nvim/plugged/vim-snippets/UltiSnips/"
    ],
    "coc.preferences.formatOnSaveFiletypes": [
        "javascript",
        "typescript",
        "html",
        "css",
        "json",
        "java",
        "python",
        "vue",
        "svelte",
        "c",
        "cs",
        "prisma"
    ],
    "yaml.format.enable": true,
    "signature.target": "float",
    "yank.enableCompletion": false,
    "jest.watch": false,
    "explorer.width": 38,
    "explorer.quitOnOpen": true,
    "explorer.sources": [
        {
            "name": "buffer",
            "expand": false
        },
        {
            "name": "file",
            "expand": true
        }
    ],
    "explorer.file.column.indent.indentLine": true,
    "explorer.file.showHiddenFiles": true,
    "explorer.icon.enableNerdfont": true,
    "explorer.file.column.git.showIgnored": true,
    "explorer.keyMappingMode": "none",
    "explorer.buffer.showHiddenBuffers": false,
    "explorer.keyMappings.global": {
        "u": "nodePrev",
        "e": "nodeNext",
        "h": "toggleSelection",
        "<tab>": "actionMenu",
        "gl": "expandRecursive",
        "gh": "collapseRecursive",
        "i": [
            "wait",
            "expandable?",
            "expand",
            "open"
        ],
        "<cr>": [
            "wait",
            "expandable?",
            "cd",
            "open"
        ],
        "I": "open:vsplit",
        "o": [
            "wait",
            "expanded?",
            "collapse",
            "expand"
        ],
        "O": "open:tab",
        "n": "collapse",
        "l": "gotoParent",
        "yp": "copyFilepath",
        "yn": "copyFilename",
        "yy": "copyFile",
        "dd": "cutFile",
        "pp": "pasteFile",
        "dD": "deleteForever",
        "a": "addFile",
        "k": "addFile",
        "M": "addDirectory",
        "cw": "rename",
        ".": "toggleHidden",
        "zh": "toggleHidden",
        "R": "refresh",
        "?": "help",
        "q": "quit",
        "X": "systemExecute",
        "gd": "listDrive",
        "f": "search",
        "F": "searchRecursive",
        "B": "gotoSource:file",
        "b": "gotoSource:buffer",
        "[[": "sourcePrev",
        "]]": "sourceNext",
        "[d": "diagnosticPrev",
        "]d": "diagnosticNext",
        "[c": "gitPrev",
        "]c": "gitNext",
        "<<": "gitStage",
        ">>": "gitUnstage"
    },
    "tslint.autoFixOnSave": false,
    "python.autoComplete.addBrackets": true,
    "python.jediEnabled": false,
    "python.formatting.provider": "yapf",
    "python.formatting.yapfArgs": [
        "--style",
        "{SPACES_AROUND_POWER_OPERATOR: True, SPACES_BEFORE_COMMENT: 1}"
    ],
    "html.format.enable": true,
    "javascript.referencesCodeLens.enable": true,
    "javascript.showUnused": true,
    "javascript.suggest.names": true,
    "javascript.suggestionActions.enabled": true,
    "json.format.enable": true,
    "eslint.autoFixOnSave": false,
    "prettier.printWidth": 100,
    "prettier.disableLanguages": [],
    "prettier.formatterPriority": 1,
    "prettier.useTabs": true,
    "prettier.trailingComma": "all",
    "prettier.singleQuote": false,
    "todolist.autoUpload": true,
    "todolist.promptForReminder": false,
    "coc-actions.hideCursor": false,
    "coc-actions.showActionKind": true,
    "diagnostic-languageserver.filetypes": {
        "vim": "vint",
        "email": "languagetool",
        "markdown": [
            "write-good",
            "markdownlint"
        ],
        "sh": "shellcheck",
        "elixir": [
            "mix_credo",
            "mix_credo_compile"
        ],
        "eelixir": [
            "mix_credo",
            "mix_credo_compile"
        ],
        "php": [
            "phpstan",
            "psalm"
        ]
    },
    "diagnostic-languageserver.formatFiletypes": {
        "elixir": "mix_format",
        "eelixir": "mix_format"
    },
    "languageserver": {
        "lua": {
            "command": "lua-lsp",
            "filetypes": [
                "lua"
            ]
        },
        "golang": {
            "command": "gopls",
            "rootPatterns": [
                "go.mod"
            ],
            "filetypes": [
                "go"
            ],
            "initializationOptions": {
                "gocodeCompletionEnabled": true,
                "diagnosticsEnabled": true,
                "lintTool": "golint"
            }
        },
        "bash": {
            "command": "bash-language-server",
            "args": [
                "start"
            ],
            "filetypes": [
                "sh"
            ],
            "ignoredRootPaths": []
        },
        "ccls": {
            "command": "ccls",
            "filetypes": [
                "c",
                "cpp",
                "cuda",
                "objc",
                "objcpp"
            ],
            "rootPatterns": [
                ".ccls",
                ".ccls-root",
                "compile_commands.json",
                ".git/",
                ".hg/"
            ],
            "initializationOptions": {
                "cache": {
                    "directory": "/tmp/ccls"
                }
            }
        }
    },
    "java.enabled": true,
    "java.configuration.runtimes": [
        {
            "name": "JavaSE-17",
            "path": "/Users/liukai/workspaces/application/jdk-17.0.2.jdk/Contents/Home"
        },
        {
            "name": "JavaSE-17",
            "path": "/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home",
            "default": true
        }
    ],
    "java.configuration.maven.userSettings": "/Users/liukai/.m2/settings.xml",
    "java.import.gradle.enabled": true,
    "java.jdt.ls.lombokSupport.enabled": false,
    "java.jdt.ls.statusIcons": "ready",
    "java.imports.gradle.wrapper.checksums": [
        {
            "sha256": "6246ebc8a7be938275282bf9c3ec79238e08e6b442d38a66633731ae8daffd5d",
            "allowed": false
        }
    ],
    "java.import.gradle.home": "/Users/liukai/workspaces/application/gradle-6.6.1/bin",
    "java.import.gradle.java.home": "/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home",
    "rust-analyzer.enable": true
}

coc 自身配置

参数名

作用

默认值

coc.preferences.semanticTokensHighlights

coc.preferences.enableFloatHighlight

coc.preferences.snippetStatusText

coc.preferences.extensionUpdateCheck

coc.preferences.messageLevel

coc.source.around.firstMatch

coc.source.buffer.firstMatch

coc.source.syntax.firstMatch

suggest 补全

参数名

作用

默认值

suggest.detailMaxLength

最大详情长度

suggest.noselect

补全自动选中第一个,很有用!

false

suggest.enablePreselect

关掉预选第一个,这个不关,按tab就会选中第二个

true

suggest.enablePreselect相关问题: https://github.com/neoclide/coc.nvim/issues/1339

diagnostic

java

rust

go

json

参考链接

coc官方文档: https://github.com/neoclide/coc.nvim/blob/master/doc/coc.txt

0 人点赞