41

如何使用 coc.nvim 进行代码重构

 3 years ago
source link: https://zhuanlan.zhihu.com/p/272119909
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

coc.nvim 提供了若干功能辅助开发者的代码重构工作。

例如:

<cword>

使用 rename 快捷键

如果你的文档有较好的 LS 支持,建议绑定 rename 操作的快捷键,例如:

nmap <leader>rn <Plug>(coc-rename)

使用快捷键后 coc.nvim 会弹出输入提示,neovim >= 0.4.3 可弹出浮动窗口输入框,方便输入。

YnYfyeE.jpg!mobile

可以使用的快捷键包含: <CR> <C-a> <C-e> <C-u> <esc> <C-c> , 效果与 shell 默认的 emacs 快捷键一致。

使用多光标改动当前单词

:CocCommand document.renameCurrentWord 命令可开启当前单词的多光标编辑,如果没有 LS 支持将抽取当前文档的所有相同单词。

默认可通过 <C-n><C-p> 在多个位置间跳转,如果发现不合适的位置可以使用 <Plug>(coc-cursors-word) 取消/选中当前单词, 编辑完成后使用 <esc> 退出多光标编辑即可。

jQv6juE.jpg!mobile

可以通过配置文件改变快捷键的设置。

使用重构操作

很多时候重构不仅仅是重命名,例如你需要变更函数调用参数,或者要在给函数上面都加上日志。 此时可以绑定 coc.nvim 的 refactor 快捷键,例如:

nmap <leader>rf <Plug>(coc-refactor)

该方法通过 LS 提供的重命名变更位置生成一个可供编辑的临时文档,文档从当前窗口左侧打开。

IBfIzeA.jpg!mobile

文档支持如下操作:

<CR>
import

使用 CocSearch 全局搜索

对于多语言的项目的重构 LS 常常帮不上忙,例如我需要改某个 viml 实现的函数,同时 typescript 代码里面也需要做对应修改,此时可用 :CocSearch 命令来打开重构文档

IBbAJze.jpg!mobile

:CocSearch 命令支持很多选项,可通过 :h :CocSearch 来查看,比较常用的有 -w 进行单词搜索, -t [extname] 来指定文件的扩展名。

:CocSearch 底层使用了 ripgrep , 默认是启用 vcsignore 的,建议使用 .ignore 文件添加其它不想搜索的文件。

完整文档地址:

https://github.com/neoclide/coc.nvim/wiki/Multiple-cursors-support github.com

如有 coc.nvim 相关问题,请通过gitter 反馈。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK