更新:由于 vim 的默認構建發生了變化,并且 MacOS 12.5 上的目錄結構發生了變化,不再安裝 Python 框架,在安裝 Python3 版本 3.10 和 vim 或 MacVim 時,SLIMV 啟動的 REPL 不適用于 MacVim 的 vim。現在只需 brew 目錄結構中的符號鏈接即可解決問題。原始問題如下:
我已經在 OS X 12.5 (Monterey) 上安裝了 MacVim,并且在將 Slimv 安裝到 ~/.vim/pack/plugins/start/slimv 中后,Lisp 突出顯示作業。雖然從 Dock 啟動的 MacVim 或從終端啟動的 vim 的突出顯示和自動括號管理作業正常,但系統不會運行 REPL,說 vim 的版本沒有為 python 啟用。
我通過brew安裝了vim并啟用了python選項,并通過檢查--version確認。MacVim 通過“brew install --cask macvim”安裝在 /applications 中。
我嘗試設定一個 PATH 以包含帶有 launchctl 的 brew 目錄。我嘗試在 MacVim .plist 檔案中添加一個目錄子句以包含 brew 目錄。還嘗試修改 /etc/paths 并將檔案添加到 /etc/paths.d 但沒有成功。
MacVim 或 vim 中是否有指向 brew 加載的 vim 版本的設定?讓 REPL 在 vi??m 中作業的其他建議?
用戶 romainl,一種 stackoverflower 要求我為 vim 添加 --version 輸出。(我認為這是為了確認 python 功能,所以我隔離了這些行。)
sholland@HHC ~ % which vim
/opt/homebrew/bin/vim
sholland@HHC ~ % echo $path
/opt/homebrew/bin /opt/homebrew/sbin /usr/local/bin /usr/bin /bin /usr/sbin /sbin /opt/X11/bin /Library/Apple/usr/bin
sholland@HHC ~ % vim --version
VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Jul 25 2022 08:23:04)
macOS version - arm64
Included patches: 1-65
Compiled by GitHub Actions
Huge version with MacVim GUI. Features included ( ) or not (-):
acl find_in_path mouse_xterm -tcl
arabic float multi_byte termguicolors
autocmd folding multi_lang terminal
autochdir -footer -mzscheme terminfo
-autoservername fork() netbeans_intg termresponse
balloon_eval fullscreen num64 textobjects
balloon_eval_term gettext odbeditor textprop
browse -hangul_input packages timers
builtin_terms iconv path_extra title
byte_offset insert_expand perl/dyn toolbar
channel ipv6 persistent_undo transparency
cindent job popupwin user_commands
clientserver jumplist postscript vartabs
clipboard keymap printer vertsplit
cmdline_compl lambda profile vim9script
cmdline_hist langmap python/dyn viminfo
cmdline_info libcall python3/dyn virtualedit
comments linebreak quickfix visual
conceal lispindent reltime visualextra
cryptv listcmds rightleft vreplace
cscope localmap ruby/dyn wildignore
cursorbind lua/dyn scrollbind wildmenu
cursorshape menu signs windows
dialog_con_gui mksession smartindent writebackup
diff modify_fname sodium -X11
digraphs mouse -sound -xfontset
dnd mouseshape spell xim
-ebcdic mouse_dec startuptime -xpm
emacs_tags -mouse_gpm statusline -xsmp
eval -mouse_jsbterm -sun_workshop -xterm_clipboard
ex_extra mouse_netterm syntax -xterm_save
extra_search mouse_sgr tag_binary
-farsi -mouse_sysmouse -tag_old_static
file_in_path mouse_urxvt -tag_any_white
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
2nd user vimrc file: "~/.vim/vimrc"
user exrc file: "$HOME/.exrc"
system gvimrc file: "$VIM/gvimrc"
user gvimrc file: "$HOME/.gvimrc"
2nd user gvimrc file: "~/.vim/gvimrc"
defaults file: "$VIMRUNTIME/defaults.vim"
system menu file: "$VIMRUNTIME/menu.vim"
fall-back for $VIM: "/Applications/MacVim.app/Contents/Resources/vim"
Compilation: clang -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe -DMACOS_X -DMACOS_X_DARWIN -g -O2 -arch x86_64 -arch arm64 -I/usr/local/Cellar/libsodium/1.0.18_1/include -D_REENTRANT -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -Wall -Wextra -Wshadow -Werror -Wno-error=missing-field-initializers -Wno-error=deprecated-declarations -Wno-error=unused-function
Linking: clang -L. -fstack-protector-strong -L/usr/local/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/[email protected]/lib -L/usr/local/opt/readline/lib -L. -fstack-protector-strong -L/usr/local/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/[email protected]/lib -L/usr/local/opt/readline/lib -arch x86_64 -arch arm64 -L/usr/local/lib -o Vim -lm -lncurses /usr/local/lib/libsodium.a -liconv /usr/local/lib/libintl.a -framework AppKit -fstack-protector -L/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE
我認為當 Slimv 執行時,它會在 /usr/bin 中選擇 vim。那個vim沒有python能力。或者它只是無法在任何地方找到 vim。--version for /usr/bin/vim 下面:
sholland@HHC ~ % /usr/bin/vim --version | grep python
cmdline_hist -langmap -python viminfo
cmdline_info libcall -python3 virtualedit
擴展上述內容,我看到我可以在 vim 中執行 :ver 。我還發現有一個 python 可用性測驗。這給出了一個有趣的結果(在 vim 命令模式下運行):
:execute (has('python3') ? "python3" : "python") . " import sys; print(sys.version)"
E370: Could not load library /System/Library/Frameworks/Python.framework/Versions/2.7/Python: dlopen(/System/Library/Frameworks/Python.fra
mework/Versions/2.7/Python, 0x0009): tried: '/System/Library/Frameworks/Python.framework/Versions/2.7/Python' (no such file), '/Library/Fr
ameworks/Python.framework/Versions/2.7/Python' (no such file)
E263: Sorry, this command is disabled, the Python library could not be loaded.
:ver
VIM - Vi IMproved 9.0 (2022 Jun 28, compiled Jul 25 2022 08:23:04)
macOS version - arm64
Included patches: 1-65
Compiled by GitHub Actions
Huge version with MacVim GUI. Features included ( ) or not (-):
acl dialog_con_gui jumplist multi_byte sodium vertsplit
arabic diff keymap multi_lang -sound vim9script
autocmd digraphs lambda -mzscheme spell viminfo
autochdir dnd langmap netbeans_intg startuptime virtualedit
-autoservername -ebcdic libcall num64 statusline visual
balloon_eval emacs_tags linebreak odbeditor -sun_workshop visualextra
balloon_eval_term eval lispindent packages syntax vreplace
browse ex_extra listcmds path_extra tag_binary wildignore
builtin_terms extra_search localmap perl/dyn -tag_old_static wildmenu
byte_offset -farsi lua/dyn persistent_undo -tag_any_white windows
channel file_in_path menu popupwin -tcl writebackup
cindent find_in_path mksession postscript termguicolors -X11
clientserver float modify_fname printer terminal -xfontset
clipboard folding mouse profile terminfo xim
cmdline_compl -footer mouseshape python/dyn termresponse -xpm
cmdline_hist fork() mouse_dec python3/dyn textobjects -xsmp
cmdline_info fullscreen -mouse_gpm quickfix textprop -xterm_clipboard
comments gettext -mouse_jsbterm reltime timers -xterm_save
conceal -hangul_input mouse_netterm rightleft title
cryptv iconv mouse_sgr ruby/dyn toolbar
cscope insert_expand -mouse_sysmouse scrollbind transparency
cursorbind ipv6 mouse_urxvt signs user_commands
cursorshape job mouse_xterm smartindent vartabs
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
2nd user vimrc file: "~/.vim/vimrc"
user exrc file: "$HOME/.exrc"
system gvimrc file: "$VIM/gvimrc"
user gvimrc file: "$HOME/.gvimrc"
2nd user gvimrc file: "~/.vim/gvimrc"
defaults file: "$VIMRUNTIME/defaults.vim"
system menu file: "$VIMRUNTIME/menu.vim"
fall-back for $VIM: "/Applications/MacVim.app/Contents/Resources/vim"
Compilation: clang -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe -DMACOS_X -DMACOS_X_DARWIN -g
-O2 -arch x86_64 -arch arm64 -I/usr/local/Cellar/libsodium/1.0.18_1/include -D_REENTRANT -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -W
all -Wextra -Wshadow -Werror -Wno-error=missing-field-initializers -Wno-error=deprecated-declarations -Wno-error=unused-function
Linking: clang -L. -fstack-protector-strong -L/usr/local/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/[email protected]/lib -L/usr/
local/opt/readline/lib -L. -fstack-protector-strong -L/usr/local/lib -L/usr/local/opt/libyaml/lib -L/usr/local/opt/[email protected]/lib
-L/usr/local/opt/readline/lib -arch x86_64 -arch arm64 -L/usr/local/lib -o Vim -lm -lncurses /usr/local/lib/libsodium.a -liconv /
usr/local/lib/libintl.a -framework AppKit -fstack-protector -L/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE
Press ENTER or type command to continue
這里有趣的是 vim 報告它啟用了 python 和 python3。但是,python 測驗命令出錯,說它找不到檔案。
uj5u.com熱心網友回復:
MacVim 沒有 python3,它有 python3/dyn,這是完全不同的。見:help python-dynamic。
前者可以通過以下方式進行測驗:
:echo has('python3_dynamic')
而后者可以通過以下方式進行測驗:
:echo has('python3')
您嘗試設定錯誤的插件測驗 python3:
if ( !exists( 'g:slimv_python_version' ) && has( 'python3' ) ) ||
這在 MacVim 中根本行不通, wherehas( 'python3' )總是錯誤的。
如果你想使用那個插件,你有兩個選擇:
- 正確配置 Vim 并修補插件,
- 使用用
python3.
uj5u.com熱心網友回復:
@romainl 上面令人難以置信的答案讓我在我的最后做一些黑客攻擊,現在 MacVim 和 vim 正在 MacOS 12.5 上作業。
在 mac 上的 vim 上運行 slimv 的問題是 mac 已經放棄了對 python 框架的支持。如果您使用 brew 安裝了支持 python 的 vim,vim 和 macvim 將找到新版本的 python。然而,vim 和 macvim 目前尋找的是 Python3.9 而不是任何 Python3。錯誤訊息“Vim 編譯時沒有 Python 功能或未安裝 Python。無法運行 SWANK 客戶端。按 ENTER 繼續。” 不完整,因為問題不是沒有安裝 Python3,而是沒有安裝 Python3.9。此外,從 brew 安裝的 vim 啟用了動態加載。此修復適用于使用動態 python 支持編譯 vim 時。
首先,測驗您的系統,看看問題是否與我的問題相似。您應該運行 vim 并安裝 slimv。編輯 lisp 檔案時,您將獲得括號管理作業,因為您按照說明將 slimv 放入 .vim 檔案夾中。退出命令模式并輸入兩個字符序列“,c”。這應該為 Lisp 啟動 REPL。如果您收到錯誤“Vim 編譯時沒有 Python 功能或未安裝 Python。無法運行 SWANK 客戶端。按 ENTER 繼續”,則此注釋適用。
檢查你的 vim 是否在 brew 目錄中,并且 vim 是用 python 的動態版本編譯的。動態 python 版本被列為 pythonx/dyn。也就是說,從終端中的用戶目錄運行:
sholland@HHC ~ % which vim /opt/homebrew/bin/vim sholland@HHC ~ % vim --version | grep python cmdline_hist langmap python/dyn viminfo cmdline_info libcall python3/dyn virtualedit
- 檢查需要哪個版本的 Python。通過在命令模式下進入 vim 或 MacVim 來執行此操作
:執行(“python3”)。“匯入系統;列印(sys.version)”
錯誤訊息應為 E370:無法加載庫。此外,您將找到 vim 嘗試查找 Python3 的所有目錄。
轉到 Versions homebrew 目錄,例如終端中的 /opt/homebrew/Frameworks/Python.framework/Versions。從第 4 步確定 vim 想要的 Python 版本。你要做的是創建一個 vim 想要的版本到當前 Python 版本的符號鏈接。或者,您可以從 brew 安裝該版本的 Python3,但這超出了本說明的范圍。在我寫這篇筆記的時候,你需要一個從 3.9 到當前的符號鏈接。
cd /opt/homebrew/Frameworks/Python.framework/Versions
ln -s ./當前 3.9
您現在應該可以在 vim 中編輯 lisp 檔案了。重新運行 vim 命令 :execute ("python3") 。“ import sys; print(sys.version)”,您將看到正在運行的 Python 版本。現在編輯一個 Lisp 檔案,",c" 現在應該啟動 SWANK 服務器,你應該得到分屏來運行 REPL。
現在,SLIMV 檔案說您需要構建 vim 的確切版本。我只是希望 3.9 版與我系統上安裝的當前 3.10 版差別不大。如果將來事情分崩離析,您可能需要 brew install 3.9 版或以其他方式調整這些方向。我希望能夠將我的 python 升級到最新版本并讓 SLIMV 運行它,認為它是 v3.9。我知道 vim 將來會鏈接到 python3v10 并且需要一個特定的版本。隨著 vim 更改所需的 Python3 版本,可能需要更改符號鏈接。
顯然,SLIMV 和 python 和 vim 以及 MacVim 的 brew install 需要做一些協調。我已經向 vim.org 和 SLIMV 的作者提交了錯誤報告。他們在軟體方面做得非常出色。只是 Apple 對 Python 的支持和目錄結構的變化以及 vim 對默認選項的更改造成了兩個小問題。軟體人員努力維護兼容性,因此代碼最終可能會比我在這里撰寫的代碼復雜一些。
期待將 Lisp 與 vim 和 REPL 一起使用!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/505768.html
上一篇:CGEventPost在(MacOS)launchd守護程式中不起作用
下一篇:Java根據intn拆分字串
