各位,用 vim/nvim 写 python 用什么插件? 比如,
1
biglion666 2023-12-07 10:02:57 +08:00
ale 加 ruff
补全用 YCM |
2
vituralfuture 2023-12-07 10:12:15 +08:00 via Android
先安装个 mason ,它能帮你解决 linter ,formator ,lsp server 的安装,lsp 可以用 pyright ,虽然功能没有 pylance 多,但是 pylance 闭源页用不了,lsp 提供了跳转到定义,到声明,查找引用这些功能
我并没有找到一个大统一的插件,我用 neovim 觉得最大的问题就是,缺少一个 code runner ,导致我每次运行都要手动输入命令 还有一个比较影响体验的就是 lsp 的补全提示太过简单粗暴,把太多无关的东西都显示出来了,而 jetbrain 的 IDE 自然是做过优化,比如结合上下文去掉不合理的,甚至还利用机器学习将候选补全选项排序 |
3
vituralfuture 2023-12-07 10:16:12 +08:00 via Android 1
另外说一下,如果想要把(n)vim 当做 IDE ,不建议使用 vim ,vim 体系已经很老了,比如 vim script 性能问题,异步支持太差,lsp 支持也没有。
neovim 使用纯 lua 配置不仅性能好,能干的事也更多了,neovim 内置 lsp 支持,还解决了 vim 一直以来存在的异步太弱的问题,倒逼 vim 也添加了异步功能 |
4
BBCCBB 2023-12-07 10:20:45 +08:00
不想折腾就用 coc.nvim
|
5
popil1987 2023-12-07 10:37:43 +08:00
astrovim 试试
|
6
xxiaowangwang 2023-12-07 10:38:57 +08:00
use("williamboman/mason.nvim")
use("williamboman/mason-lspconfig.nvim") use("neovim/nvim-lspconfig") use("hrsh7th/cmp-nvim-lsp") use({ "glepnir/lspsaga.nvim", branch = "main", requires = { -- { "nvim-tree/nvim-web-devicons" }, { "nvim-treesitter/nvim-treesitter" }, }, }) use("jose-elias-alvarez/null-ls.nvim") use("jayp0521/mason-null-ls.nvim") use({ "nvim-treesitter/nvim-treesitter", run = function() local ts_update = require("nvim-treesitter.install").update({ with_sync = true }) ts_update() end, }) 仅供参考。。。漏了啥不确定 |
7
TimePPT 2023-12-07 11:14:25 +08:00
https://vim.fisadev.com/
这个项目可以参考 |
8
iorilu 2023-12-07 11:17:10 +08:00
不建议浪费时间折腾
有那空可以多写点代码 |
9
PTLin 2023-12-07 11:25:12 +08:00
直接用 LazyVim ,别折磨自己,安装完成直接在 nvim 里运行 LazyExtras 命令安装 python 支持。
|
10
SiLenceControL 2023-12-07 12:00:26 +08:00
直接 vscode 不香吗。。。。?
|
11
yfixx 2023-12-07 12:11:40 +08:00 via Android
ale+ycm
|
12
ck65 2023-12-07 12:13:19 +08:00
我在用的一键包 https://nvchad.com 终结( in most common cases )所有的折腾。
|
13
churchill 2023-12-07 12:20:37 +08:00
我的配置, 如果要调试的话还得加上 dap ,个人体验并不好用
return { { "nvim-treesitter/nvim-treesitter", opts = function(_, opts) vim.list_extend(opts.ensure_installed, { "ninja", "python", "rst", "toml" }) end, }, { "jose-elias-alvarez/null-ls.nvim", opts = function(_, opts) local nls = require("null-ls") table.insert(opts.sources, nls.builtins.formatting.black) end, }, { "williamboman/mason.nvim", opts = function(_, opts) vim.list_extend(opts.ensure_installed, { "debugpy", "black", "ruff" }) end, }, { "neovim/nvim-lspconfig", opts = { servers = { ruff_lsp = {}, pyright = { settings = { python = { analysis = { autoImportCompletions = true, typeCheckingMode = "off", autoSearchPaths = true, useLibraryCodeForTypes = true, diagnosticMode = "openFilesOnly", stubPath = vim.fn.stdpath("data") .. "/lazy/python-type-stubs/stubs", }, }, }, }, }, setup = { ruff_lsp = function() local lsp_utils = require("plugin.lsp.utils") lsp_utils.on_attach(function(client, _) if client.name == "ruff_lsp" then client.server_capabilities.hoverProvider = false end end) end, pyright = function(_, _) local lsp_utils = require("plugin.lsp.utils") lsp_utils.on_attach(function(client, bufnr) local map = function(mode, lhs, rhs, desc) if desc then desc = desc end vim.keymap.set( mode, lhs, rhs, { silent = true, desc = desc, buffer = bufnr, noremap = true } ) end if client.name == "pyright" then map("n", "<leader>lo", "<cmd>PyrightOrganizeImports<cr>", "Organize Imports" ) map("n", "<leader>lC", function() require("dap-python").test_class() end, "Debug Class" ) map("n", "<leader>lM", function() require("dap-python").test_method() end, "Debug Method" ) map("v", "<leader>lE", function() require("dap-python").debug_selection() end, "Debug Selection" ) end end) end, }, }, }, { "microsoft/python-type-stubs", cond = false, }, { "linux-cultist/venv-selector.nvim", cmd = "VenvSelect", opts = {}, keys = { { "<leader>lv", "<cmd>:VenvSelect<cr>", desc = "Select VirtualEnv" } }, }, } |
14
Guaidaodl 2023-12-07 14:08:11 +08:00
@vituralfuture CodeRunner 的替代可以考虑 asynctask
|
15
Ocean810975 2023-12-07 14:22:57 +08:00 via Android
lazyvim 吧,我记得对 Python 支持挺好的,虽然我不用它写 Python
|
16
fcfangcc 2023-12-07 15:01:43 +08:00
为何要折磨自己,vscode remote 不香吗
|
17
Dimen61 2023-12-07 22:26:18 +08:00
大家能说一下现在直接用 vim 而不是 vscode + vimmode 的好处🐴
|
18
shuiguomayi OP @xxiaowangwang jose-elias-alvarez/null-ls.nvim", 可惜,这个已经停止维护了。
|
19
shuiguomayi OP @vituralfuture nvim 很好用,哈哈。
|
20
xxiaowangwang 2023-12-08 10:00:46 +08:00
@shuiguomayi https://github.com/nvimtools/none-ls.nvim 可以用这个替代。我还没试,等我有空更新下我的 vim 的配置
|
21
fanhed 2023-12-20 18:53:51 +08:00
Q: 定义,跳转,引用,等等可以用啥呢?
A: 我用的是 gutentags 配合 Universal Ctags + gnu global 补全我用的是 coc.nvim 调试器我用的是 ipdb, 然后自己写个简单的 vim 集成, 例如 termdbg |
22
Cu635 323 天前
@vituralfuture
vim 有良好的 gui 界面,vim 的 gui 是比较和谐的 gui 而不是一个 gui 框框加“命令行 vim”的这种,neovim 有良好的 gui 没?现在的 neovim 的 gui 就是 gui 框框加“命令行 neovim”。 另外 neovim 的 windows 版有类似于 gvim 这种的安装包没? |
23
shuiguomayi OP @Cu635 vim 在 macos 和 linux 上分别有什么很好的 gui ,求推荐一下。
|
24
Cu635 322 天前
@shuiguomayi #23
每个人需求不一样吧,我用着 vim-gtk 就觉得不错了,该有的都有,而且是正经 gui ,不是 vim 命令行套壳了。 |