各位,用 vim/nvim 写 python 用什么插件? 比如,
1
biglion666 360 天前
ale 加 ruff
补全用 YCM |
2
vituralfuture 360 天前 via Android
先安装个 mason ,它能帮你解决 linter ,formator ,lsp server 的安装,lsp 可以用 pyright ,虽然功能没有 pylance 多,但是 pylance 闭源页用不了,lsp 提供了跳转到定义,到声明,查找引用这些功能
我并没有找到一个大统一的插件,我用 neovim 觉得最大的问题就是,缺少一个 code runner ,导致我每次运行都要手动输入命令 还有一个比较影响体验的就是 lsp 的补全提示太过简单粗暴,把太多无关的东西都显示出来了,而 jetbrain 的 IDE 自然是做过优化,比如结合上下文去掉不合理的,甚至还利用机器学习将候选补全选项排序 |
3
vituralfuture 360 天前 via Android 1
另外说一下,如果想要把(n)vim 当做 IDE ,不建议使用 vim ,vim 体系已经很老了,比如 vim script 性能问题,异步支持太差,lsp 支持也没有。
neovim 使用纯 lua 配置不仅性能好,能干的事也更多了,neovim 内置 lsp 支持,还解决了 vim 一直以来存在的异步太弱的问题,倒逼 vim 也添加了异步功能 |
4
BBCCBB 360 天前
不想折腾就用 coc.nvim
|
5
popil1987 360 天前
astrovim 试试
|
6
xxiaowangwang 360 天前
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 360 天前
https://vim.fisadev.com/
这个项目可以参考 |
8
iorilu 360 天前
不建议浪费时间折腾
有那空可以多写点代码 |
9
PTLin 360 天前
直接用 LazyVim ,别折磨自己,安装完成直接在 nvim 里运行 LazyExtras 命令安装 python 支持。
|
10
SiLenceControL 360 天前
直接 vscode 不香吗。。。。?
|
11
yfixx 360 天前 via Android
ale+ycm
|
12
ck65 360 天前
我在用的一键包 https://nvchad.com 终结( in most common cases )所有的折腾。
|
13
churchill 360 天前
我的配置, 如果要调试的话还得加上 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 360 天前
@vituralfuture CodeRunner 的替代可以考虑 asynctask
|
15
Ocean810975 360 天前 via Android
lazyvim 吧,我记得对 Python 支持挺好的,虽然我不用它写 Python
|
16
fcfangcc 360 天前
为何要折磨自己,vscode remote 不香吗
|
17
Dimen61 359 天前
大家能说一下现在直接用 vim 而不是 vscode + vimmode 的好处🐴
|
18
shuiguomayi OP @xxiaowangwang jose-elias-alvarez/null-ls.nvim", 可惜,这个已经停止维护了。
|
19
shuiguomayi OP @vituralfuture nvim 很好用,哈哈。
|
20
xxiaowangwang 359 天前
@shuiguomayi https://github.com/nvimtools/none-ls.nvim 可以用这个替代。我还没试,等我有空更新下我的 vim 的配置
|
21
fanhed 346 天前
Q: 定义,跳转,引用,等等可以用啥呢?
A: 我用的是 gutentags 配合 Universal Ctags + gnu global 补全我用的是 coc.nvim 调试器我用的是 ipdb, 然后自己写个简单的 vim 集成, 例如 termdbg |
22
Cu635 299 天前
@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 298 天前
@shuiguomayi #23
每个人需求不一样吧,我用着 vim-gtk 就觉得不错了,该有的都有,而且是正经 gui ,不是 vim 命令行套壳了。 |