vim利用coc补全的配置过程

  • 题外话,国内的博客为什么都是抄来抄去呢,还是要自己实践一下

  • coc插件原理 vscode 补全利用的是LSP (language server protocol), 简单理解就是编辑时启动一个进程,补全过程就类似app请求服务器得到补全数据。这就是为什么要装node,服务进程都是node启动。

第一步 安装nvim

  • 首先你需要 安装vim8 或者nvim 我测试的是macos
  • 如果是nvim, 需要把nvim 的配置文件做一次软链接指向 ~/.vimrc 这是延续以前的vim配置方式, 不做的话,只能修改./config/nvim/init.vim , 因为nvim的配置默认读取这个文件。
  • 以下提到的vim都是指的nvim,我在/etc/profile alias vim=“nvim” 了
ln -s ~/.config/nvim/init.vim ~/.vimrc

第二步 安装nvim插件管理器 Vim-plug

curl -fLo ~/.config/nvim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

第三步 安装coc插件

  • 以上两步完成之后,可以添加coc插件,我的配置如下
set nu  " 显示行号  
" 插件列表    
" 插件加载目录 .config/nvim/plugged ,也可以是.vim/plugged 随便都可以, 以后太会下载到这个目录,启动vim也会加载这里的插件

call plug#begin('~/.config/nvim/plugged')  " 开始语句    
Plug 'neoclide/coc.nvim', {'branch': 'release'}   " 这是coc.nvim 插件
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }    " 这是go语言补全需要的插件
    
call plug#end() " 结束语句
    
let s:script_cwd = expand('<sfile>:p:h')    
let s:source_list = [    
      \ 'viml',    
      \ 'config',    
      \]    
    
for s:item in s:source_list    
  let s:path = split(globpath(s:script_cwd . '/' . s:item, '*.vim'), '\n')    
  for s:cfg in s:path    
    if filereadable(s:cfg)    
      execute 'source ' . s:cfg    
    endif    
  endfor    
endfor    
    
unlet s:script_cwd    
unlet s:source_list    
    
" 这两句是针对go插件的配置设定
let g:go_def_mode='gopls'    
let g:go_info_mode='gopls'    
  • 其余的配置我也不太清楚,暂且不管,最终要的是结果是利用coc补全各种语言…

第四步 如何安装php补全插件

  • 各种语言coc扩展这里有

  • coc-phpactor 是php7以上才可以用

  • coc-phpls 一般都用这个

  • 第一步 需要安装Intelephense

    npm i intelephense -g
    
  • 第二步打开vim, 安装coc-phpls

    CocInstall coc-phpls
    
  • 第三步 配置php language server

    • vim : CocConfig
    • 会默认打开一个配置文件
    ```
      {    
        "languageserver": {    
      	 "intelephense": {    
      		"command": "intelephense",    
      		"args": ["--stdio"],    
      		"filetypes": ["php"],    
      		"initializationOptions": {    
      			"storagePath": "/Users/kunming/php/"    
      		}    
      	}
      }
    ```
    
    • 这里外面的intelephense表示配置的名称
    • command里面的intelephense是一个文件
    • args 表示可执行文件后面的参数
    • 比如你打开一个php文件,ps命令可以看到系统会启动一个进程 node /usr/local/bin/intelephense --stdio
    • 有一个索引js的进程/usr/local/bin/node --no-warnings /Users/kunming/.SpaceVim/plugged/coc.nvim/build/index.js
    • node还会启动一个进程类似这样/usr/local/Cellar/node/14.1.0/bin/node /Users/kunming/.config/coc/extensions/node_modules/coc-phpls/node_modules/intelephense/lib/intelephense.js --node-ipc --clientProcessId=72264
    • filetypes 指定了对php文件有效
    • storagePath 表示初始化信息存储的位置,据我观察应该是打开一个文件,进程为php建立补全信息建立的索引日志文件,安装intelephense,会附带好多php文件,常见的php库,也是为了建立索引用的,初次编辑一个php文件,这个目录会有28872930这样的文件夹生成。
    • 最重要的:只有你在storagePath目录下建立的php文件或者项目,vim编辑才会出现补全提示,在别的目录是没有提示的,这一点研究了好久才感觉出来,文档也没说这些。
其余插件,我只安装了go的coc扩展和python的coc扩展,go扩展需要提前安装fatih/vim-go来支持
  • 同样每次编辑他们的文件都会启动一个类似node进程/usr/local/bin/node --no-warnings /Users/kunming/.SpaceVim/plugged/coc.nvim/build/index.js
  • 都是一个套路:
    1. 找到所需的插件,比如coc-python 安装他需要的依赖,一般插件后面会提到
    1. vim中安装coc扩展 CocInstall coc-python
    1. vim来打配置CocConfig,添加对应语言的server配置
    1. 所以LSP是一个cs结构的,有服务端也就是node进程, 客户端就是vim编辑器
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
里面的vim插件已经包含了taglist,omnicppcomplete等插件,无需再下载,详细的配置参考.vimrc,注意快捷键使用即可。有什么不喜欢和bug的地方,自行调整.vimrc。ctags命令工具还是要下载安装的。 1. 安装ctags和cscope yum install即可 在.vimrc文件中增加map :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q . 就可以在vim中使用快捷键F12来随时生成当前目录下的tags,这样后续配好omni自动补全以后,自己工程下定义的类中的public成员,也可以通过. :: ->来自动补全了。全局定义的查找。局部的符号不会生成tags,这个要使用superTab。 Ctrl ] 跳转到光标所在位置的符号的定义,前提是tags中有。 Ctrl t 回到上次跳转前的位置。 2. 下载其他vim插件 echofunc.vim 在底部状态栏显示函数原型 Alt - 和 Alt + 可以在多个函数原型间切换 winmanager 侧边栏显示文件浏览 直接把.vim文件拷贝到~/.vim/plugin/下即可 自动打开winmanager,参考http://blog.csdn.net/xuanwu_yan/article/details/43736299 : 在.vimrc中添加: let g:autoOpenWinManager=1 然后需要手动修改winmanager.vim文件,在末尾加入: " set auto open WinManager if g:autoOpenWinManager autocmd VimEnter * nested call s:StartWindowsManager() endif 调整winmanager窗口的大小,参考http://blog.csdn.net/yangzhongxuan/article/details/7944927 : let g:bufExplorerMaxHeight=30 let g:bufExplorerMoreThanOne=0 miniBufferExplorer,直接下载minibufexpl.vim 折叠设置 " --fold setting --- set foldmethod=syntax "用语法高亮来定义折叠 set foldlevel=100 "启动vim时不要自动折叠代码 set foldcolumn=5 "设置折叠栏宽度 常用命令: za 打开/关闭在光标下的折叠 zA 循环地打开/关闭光标下的折叠 zc 关闭close在光标下的折叠 zo 打开在光标下的折叠 安装SuperTab,参考http://blog.csdn.net/bokee/article/details/6633193 ,配了之后没反应 使Tab键具有更快捷的上下文提示功能,从http://www.vim.org/scripts/script.php?script_id=1643 下载安装,它是个vba文件,即Vimball格式的安装包,安装方法: 1)用vim打开supertab.vba文件 2)在vim命令行下运行命令UseVimball ~/.vim。就会将安装包安装到~/.vim目录下。 在~/.vimrc文件中添加: let g:SuperTabDefaultCompletionType="" 使用Ctrl - P键弹出SuperTab的自动补全 Ctrl - w - ] 弹出定义的位置 Ctrl - ] 跳到符号定义的位置,Ctrl - t返回上次跳走的位置 Ctrl-x Ctrll-o 弹出omni自动补全 F12 生成当前目录下的tags
你可以按照以下步骤在 Ubuntu 22.04 上配置 Vim 代码补全插件 coc.vim: 1. 首先,确保你已经安装了 Vim 编辑器。如果没有安装,可以使用以下命令进行安装: ``` sudo apt update sudo apt install vim ``` 2. 安装 Node.js,因为 coc.vim 是基于 Node.js 运行的。你可以使用 NVM(Node Version Manager)来安装和管理 Node.js 版本。按照以下步骤安装 NVM 和 Node.js: - 安装 NVM: ``` curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash source ~/.bashrc ``` - 安装 Node.js: ``` nvm install --lts ``` 3. 确保已经安装了 npm(Node.js 包管理器),你可以使用以下命令来安装 npm: ``` sudo apt update sudo apt install npm ``` 4. 接下来是安装 coc.vim 插件。打开终端,执行以下命令: ``` vim ~/.vimrc ``` 在打开的 `~/.vimrc` 文件中添加以下内容: ``` " coc.vim configuration let g:coc_global_extensions = ['coc-tsserver', 'coc-html', 'coc-css', 'coc-json', 'coc-python'] ``` 5. 保存并退出 `~/.vimrc` 文件,并重新启动 Vim。 6. 在 Vim 中按下 `:` 进入命令行模式,然后输入 `CocInstall coc-tsserver` 安装 TypeScript 服务器(补全 JavaScript、TypeScript)。 对于其他语言的补全插件,你可以使用类似的命令进行安装,如 `CocInstall coc-python` 安装 Python 补全插件。 完成以上步骤后,你就可以在 Vim 中使用 coc.vim 进行代码补全了。请记住,coc.vim 支持多种语言的代码补全,你可以根据自己的需要安装相应的补全插件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值