首页 > 编程问答 >使用 python 支持构建自定义 vim 二进制文件

使用 python 支持构建自定义 vim 二进制文件

时间:2024-07-28 04:51:06浏览次数:14  
标签:python linux vim

背景

Debian 11 vim 软件包不包含 python3 支持。 请参阅标题为“ Debian 11 vim 中不支持 python - 证据 ”的部分下面

我需要 vim 支持 python3 YouCompleteMe vim 插件 为了构建一个新的 ,我将 vim 9.0 tarball 下载到 vim 我的 Debian 11 系统上并解压它...明确: /opt/ 我用...构建了它...

$ cd /opt
$ sudo wget http://ftp.vim.org/pub/pub/vim/unix/vim-9.0.tar.bz2
$ sudo bunzip2 ./vim-9.0.tar.bz2
$ sudo chown -R mpenning:mpenning vim/

但是,现在我看到了这些启动时出现错误

$ cd /opt/vim
$ ./configure \
 --enable-python3interp=yes \
 --with-python3-command=python3.9 \
 --with-features=huge \
 --with-compiledby="[email protected]"
$ make
$ sudo cp src/vim /usr/bin/vim

... vim 问题

$ vim foo.py
2022-10-24 09:08:31 [INFO] Editing 'foo.py'.
failed to load colors/lists/default.vim
failed to load colors/lists/default.vim
Press ENTER or type command to continue

如何使用

构建 Debian vim 二进制文件? python3 Debian 11 vim 中不支持 python - 证据

No python support in Debian 11 vim - evidence

$ vim --version
VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Oct 01 2021 01:51:08)
Included patches: 1-2434
Extra patches: 8.2.3402, 8.2.3403, 8.2.3409, 8.2.3428
Modified by [email protected]
Compiled by [email protected]
Huge version without GUI.  Features included (+) or not (-):
+acl               -farsi             +mouse_sgr         +tag_binary
+arabic            +file_in_path      -mouse_sysmouse    -tag_old_static
+autocmd           +find_in_path      +mouse_urxvt       -tag_any_white
+autochdir         +float             +mouse_xterm       -tcl
-autoservername    +folding           +multi_byte        +termguicolors
-balloon_eval      -footer            +multi_lang        +terminal
+balloon_eval_term +fork()            -mzscheme          +terminfo
-browse            +gettext           +netbeans_intg     +termresponse
++builtin_terms    -hangul_input      +num64             +textobjects
+byte_offset       +iconv             +packages          +textprop
+channel           +insert_expand     +path_extra        +timers
+cindent           +ipv6              -perl              +title
-clientserver      +job               +persistent_undo   -toolbar
-clipboard         +jumplist          +popupwin          +user_commands
+cmdline_compl     +keymap            +postscript        +vartabs
+cmdline_hist      +lambda            +printer           +vertsplit
+cmdline_info      +langmap           +profile           +virtualedit
+comments          +libcall           -python            +visual
+conceal           +linebreak         -python3           +visualextra
+cryptv            +lispindent        +quickfix          +viminfo
+cscope            +listcmds          +reltime           +vreplace
+cursorbind        +localmap          +rightleft         +wildignore
+cursorshape       -lua               -ruby              +wildmenu
+dialog_con        +menu              +scrollbind        +windows
+diff              +mksession         +signs             +writebackup
+digraphs          +modify_fname      +smartindent       -X11
-dnd               +mouse             -sound             -xfontset
-ebcdic            -mouseshape        +spell             -xim
+emacs_tags        +mouse_dec         +startuptime       -xpm
+eval              +mouse_gpm         +statusline        -xsmp
+ex_extra          -mouse_jsbterm     -sun_workshop      -xterm_clipboard
+extra_search      +mouse_netterm     +syntax            -xterm_save
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
       defaults file: "$VIMRUNTIME/defaults.vim"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -Wdate-time -g -O2 -ffile-prefix-map=/build/vim-DtwDbo/vim-8.2.2434=. -fstack-protector-strong -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
Linking: gcc -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -o vim -lm -ltinfo -lselinux -lacl -lattr -lgpm -ldl
$

在 Debian 11 上构建具有 Python 3 支持的 Vim 需要从源代码构建它。以下是在的系统上构建和安装 Vim 的分步指南:

步骤 1:安装必要的依赖项

在构建 Vim 之前,需要安装构建过程所需的依赖项。可以使用以下命令安装它们:

sudo apt update
sudo apt install build-essential libncursesw5-dev libgtk2.0-dev libgtk-3-dev libperl-dev libxterm-dev liblua5.3-dev python3.9-dev python3-venv ruby-dev libx11-dev libxt-dev libiconv-hook-dev libtool autoconf git

步骤 2:下载 Vim 源代码

使用以下命令下载 Vim 源代码的最新稳定版本:

git clone https://github.com/vim/vim.git

这将创建一个名为“vim”的目录,其中包含源代码。

步骤 3:配置构建

下载源代码后,导航到“vim”目录并运行配置脚本。确保使用 --enable-python3interp 选项启用 Python 3 支持,并使用 --with-python3-command 选项指定 Python 3 可执行文件的路径:

cd vim
./configure --enable-python3interp=yes --with-python3-command=python3.9 --with-features=huge --with-compiledby="[email protected]"

请随意使用 --with-features 选项自定义其他功能,并使用 --with-compiledby 选项添加的电子邮件地址。

步骤 4:构建 Vim

运行配置脚本后,使用以下命令构建 Vim:

make

此过程可能需要一段时间,具体取决于的系统硬件。

步骤 5:安装 Vim

构建过程完成后,使用以下命令安装 Vim:

sudo make install

这会将构建的 Vim 二进制文件安装到 /usr/local/bin 目录。

步骤 6:验证安装

要验证的新 Vim 构建是否支持 Python 3,请运行以下命令:

vim --version | grep python3

应该看到输出中列出的“+python3”或“+python3/dyn”,表明 Python 3 支持已启用。

故障排除

如果在运行 Vim 时遇到“failed to load colors/lists/default.vim”错误,请尝试创建丢失的目录并复制默认颜色方案文件:

mkdir -p ~/.vim/colors
cp /usr/local/share/vim/vim90/colors/default.vim ~/.vim/colors/

这应该可以解决该错误。

恭喜!现在已经在 Debian 11 系统上成功构建并安装了支持 Python 3 的 Vim。

标签:python,linux,vim
From: 74182575

相关文章

  • 如何在Python 3.12+中正确使用泛型来提高代码质量?
    我正在尝试使用泛型来改进FastAPI应用程序中的类型注释。我有一个抽象存储库类,在其中使用泛型:fromabcimportABC,abstractmethodfromtypingimportListclassAbstractRepository[T](ABC):@abstractmethodasyncdefadd_one(self,data:dict)->T:......
  • python中的while循环不退出
    我试图完成第一年的python商业课程作业,但我的while循环无法退出,有人能帮忙吗?commisionTable=[{"admin_fee":100,"comm_rate":0.10},{"admin_fee":125,"comm_rate":0.12},{"admin_fee":150,"comm_rate":......
  • python---json文件写入
    ​ 使用到的知识点:os模块执行linux指令、json.dump()、withopenasf代码实现importsysimportosimportjson #向json文件file中添加内容data,其中data的类型为字典defwrite_json(file,data):    #如果文件存在,则删除    if(os.path.exists(fi......
  • python错题记录:布尔运算与逻辑值检测
    一前言环境:python3.10win10二布尔运算与逻辑值检测1案例案例1如上,在布尔运算时,有些时候代码只会运算前面的一部分,剩下的部分根本不会运算。以前在练习算法代码时,就利用这个规则来减少代码的工作量案例2如上,之前好长一段时间,上面的布尔运算总是让我感到困惑布尔运......
  • python---字典遍历
    1、三种常见的字典遍历实现defget_key_value(dics):  '''遍历所有键值对'''  forkey,valueindics.items():    print(f"{key}:{value}")defget_keys(dics):  '''遍历所有的键'''  forkeyindics......
  • python基本语法三天速成系列day1(看完这篇你就会)
    注释注释是代码非常重要的一部分,它的主要作用有:解释代码目的:注释可以说明代码段或函数的目的和功能,帮助其他开发者快速理解代码的意图。复杂逻辑说明:对于复杂的算法或业务逻辑,通过注释可以解释这些逻辑是如何工作的,降低后续维护的难度。提高可读性:良好的注释可以使代码结......
  • Python学习笔记46:游戏篇之外星人入侵(七)
    前言到目前为止,我们已经完成了游戏窗口的创建,飞船的加载,飞船的移动,发射子弹等功能。很高兴的说一声,基础的游戏功能已经完成一半了,再过几天我们就可以尝试驾驶飞船击毁外星人了。当然,计分,游戏次数,背景音乐,开始启动等按钮的功能需要我们慢慢添加,这些功能不影响游戏的使用,影......
  • Python学习笔记45:游戏篇之外星人入侵(六)
    前言飞船模块的功能基本已经完成。今天继续完成子弹模块的功能。子弹模块子弹和飞船模块,在游戏逻辑中有一种生成与被生成的表面关系,因为子弹在游戏中是由飞船发射的。但是在我们实际抽象的过程中,飞船与子弹并不是is的关系,甚至可以说不是has的关系。因此我们需要将两个对......
  • Linux文件系统相关知识:存储设备、文件系统、分区、挂载、块设备、部分相关简单指令。
    1.存储设备是什么?怎么理解分区和格式化?存储设备:指物理硬件设备,‌用于存储数据。‌这包括硬盘驱动器(‌HDD)‌、‌固态驱动器(‌SSD)‌、‌USB闪存驱动器、‌RAID阵列等。‌这些设备提供了实际的存储空间,‌可以用来存储操作系统、‌应用程序、‌文件、‌数据等。‌存储设备的容量......
  • 三种语言实现二分(C++/Python/Java)
    题目给定一个按照升序排列的长度为......