Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

centos7 で ultisnips を使用する際に py3 import vim エラーが出る場合の対応

$
0
0

概要

vimはvimscript以外に他の言語でも機能を拡張できるようになっています。
ultisnipsはpy3コマンドを使うようになったのでvimのpython3環境が必要です。

以前のultisnips

autoload/UltiSnips.vim
exec g:_uspy"import vim"
exec g:_uspy"from UltiSnips import UltiSnips_Manager"

今のultisnips

py3 import vim
py3 from UltiSnips import UltiSnips_Manager

今のvimの状態を確認してみる

python3のところが -になっているのを +にします

$ vim --version
+acl               +eval              +modify_fname      +tag_old_static
+arabic            +ex_extra          +mouse             -tag_any_white
+autocmd           +extra_search      -mouseshape        -tcl
+autochdir         -farsi             +multi_byte        +termguicolors
+autoservername    +file_in_path      +multi_lang        +terminal
-balloon_eval      +find_in_path      -mzscheme          -termresponse
+balloon_eval_term +float             -netbeans_intg     +textobjects
-browse            +folding           +num64             +textprop
++builtin_terms    -footer            +packages          -tgetent
+byte_offset       +gettext/dyn       +path_extra        +timers
+channel           +guess_encode      +perl/dyn          +title
+cindent           -hangul_input      +persistent_undo   -toolbar
+clientserver      +iconv/dyn         -postscript        +user_commands
+clipboard         +insert_expand     +printer           +vartabs
+cmdline_compl     +job               +profile           +vertsplit
+cmdline_hist      +jumplist          +python/dyn        +virtualedit
+cmdline_info      +kaoriya           +python3/dyn       +visual
+comments          +keymap            +quickfix          +visualextra
+conceal           +lambda            +reltime           +viminfo
+cryptv            +langmap           +rightleft         +vreplace
+cscope            +libcall           +ruby/dyn          +vtp
+cursorbind        +linebreak         +scrollbind        +wildignore
+cursorshape       +lispindent        +signs             +wildmenu
+dialog_con        +listcmds          +smartindent       +windows
+diff              +localmap          +startuptime       +writebackup
+digraphs          +lua/dyn           +statusline        -xfontset
-dnd               +menu              -sun_workshop      -xim
-ebcdic            +migemo/dyn        +syntax            -xpm_w32
+emacs_tags        +mksession         +tag_binary        -xterm_save

解決策

python3環境を作る

対応するバージョンを入れる

sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
sudo yum install -y python35u python35u-libs python35u-devel python35u-pip

vimのpython3を有効にしてビルド

vimを持ってくる

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

makefileをつくる

ディレクトリとか他に必要なものがある場合はそれぞれ付け足してください
その場合開発パッケージも忘れずに

./configure \
--enable-fail-if-missing \
--enable-python3interp \
--with-python3-config-dir=/usr/lib64/python3.5/config-3.5m \
vi_cv_path_python3=/usr/bin/python3.5

sudo make install

※以下のような問題があるためおとなしくpython3のみ対応する方がいい気がします。
https://vim-jp.org/vimdoc-ja/if_pyth.html
Python 2 と Python 3 をサポートするにはそれらを動的ロードする必要があります。
Linux/Unix システムで動的ロード時にグローバルシンボルをインポートすると、2 番
目にロードした Python が使われたときにクラッシュが発生します。そのため、グロー
バルシンボルをロードして一つの Python バージョンだけを使うか、グローバルシンボ
ルをロードしないかのどちらかしかありません。後者は特定のライブラリ (シンボルが
Vim から提供されていることを期待しているライブラリ) において Python の
"import" が失敗するようになります。

おわり

先ほどのvim --version確認で + になっていれば問題なく使用できていると思います。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>