當前位置:首頁 » 編程語言 » pythonvim插件安裝

pythonvim插件安裝

發布時間: 2023-08-03 13:12:12

『壹』 怎麼裝python編輯器vim

增加tab鍵長度為4的,在/etc/vimrc裡面設置set
tabstop=4,效果如下
設置語法高亮,主要是設置syntax
on
下載安裝vundle,如下目錄
安裝好之後,用VundleInstall安裝nerdtree,
上面顯示正在安裝,之後安裝完成就可以看到

『貳』 如何用 Python 給 Vim 寫插件

vim中執行python命令

在vim中可以使用py[thon] {stmt}來執行python語句{stmt},你可以用:python print "Hello World!"來驗證一下。

只能執行一條語句,沒什麼用,不是嗎?所以有更加強大的介面,語法如下:

py[thon] << {endmarker}
{script}
{endmarker}

<!-- more -->

這樣我們就可以執行python腳本{script}中的內容了。{endmarker}是一個標記符號,可以是任何內容,不過{endmarker}後面不能有任何的空白字元。看一個簡單的例子,假設下面代碼保存為script_demo.vim:
function! Foo()
python << EOF
class Foo_demo:
def __init__(self):
print 'Foo_demo init'
Foo_demo()
EOF
endfunction

那麼在vim中我們先用:source path_to_script/script_demo.vim來載入腳本,然後就可以用:call Foo()來運行python腳本了,整個過程如圖所示:

此外,我們還可以將python腳本放到一個單獨的.py文件中,然後用pyf[ile] {file}來運行python文件中的程序,要注意這里pyf[ile]後面的所有參數被看做是一個文件的名字。

vim模塊

我們已經可以在vim中執行python命令了,但是python怎麼獲取vim中的一些信息呢?比如說我想知道vim當前緩沖區一共有多少行內容,然後獲取最後一行的內容,用python該怎麼做呢?

於是vim提供了一個python模塊,有趣的是模塊名字就叫做vim,我們可以用它來獲取vim編輯器裡面的所有信息。上面問題用以下python腳本就可以解決了:
function! Bar()
python << EOF
import vim
cur_buf = vim.current.buffer
print "Lines: {0}".format(len(cur_buf))
print "Contents: {0}".format(cur_buf[-1])
EOF
endfunction

你可以自己載入腳本運行一下見證奇跡!上面代碼出現了vim.current.buffer,想必你已經從名字猜到了它的意思了,不過還是來詳細看下吧:

vim模塊中的常量

vim.buffers: 用來訪問vim中緩沖區的列表對象,可以進行如下操作:

:py b = vim.buffers[i] # Indexing (read-only)
:py b in vim.buffers # Membership test
:py n = len(vim.buffers) # Number of elements
:py for b in vim.buffers: # Iterating over buffer list

vim.windows: 用來訪問vim中窗口的列表對象,和vim.buffers支持的操作基本相。
vim.current: 用來訪問vim中當前位置的各種信息,比如:

vim.current.line
vim.current.buffer
vim.current.window
vim.current.tabpage
vim.current.range

vim.vvars: 類似字典的對象,用來存儲global(g:)變數或者vim(v:)變數。

還有其他的一些常量,這里不做敘述。注意這里的常量並不是真正意義上的常量,你可以重新給他們賦值。但是我們應該避免這樣做,因為這樣會丟失該常量引用的值。現在為止我們已經能獲取vim中數據,然後用python來對其進行操作,似乎完美了。

不過vim並沒有止步於此,它可是Stronger than Stronger!因為我們可以在python里使用vim強大的命令集,這樣就可以用python寫一些常用的批處理插件,看下面簡單的例子:
function! Del(number)
python << EOF
import vim
num = vim.eval("a:number")
vim.command("normal gg{0}dd".format(num))
vim.command("w")
EOF
endfunction

可以調用上面函數Del(n)用來刪除當前緩沖區前n行的內容(只是示例而已,現實中別這么做!)上面用到了eval和command函數,如下:

vim模塊中兩個主要的方法

vim.command(str): 執行vim中的命令str(ex-mode,命令模式下的命令),返回值為None,比如:

:py vim.command("%s/aaa/bbb/g")

也可以用`vim.command("normal "+str)`來執行normal模式下的命令,比如說用以下命令刪除當前行的內容:

:py vim.command("normal "+'dd')

vim.eval(str): 用vim內部的解釋器來計算str中的內容,返回值可以是字元串、字典、或者列表,比如計算12+12的值:

:py print vim.eval("12+12")

將返回結算結果24。

前面的Del函數還提供了一個number參數,在vimL裡面可以通過let arg=a:number來使用,在python中通過vim.eval("a:number")來使用。也可以通過參數位置來訪問,比如let arg=a:0或者是vim.eval("a:0")。我們可以使用"..."來代替命名參數來定義一個能接收任意數量參數的函數,不過這樣只能通過位置來訪問。

vim模塊還提供了一個異常處理對象vim.error,使用vim模塊時一旦出現錯誤,將會觸發一個vim.error異常,簡單的例子如下:
try:
vim.command("put a")
except vim.error:
# nothing in register a

vim模塊提供的對象

到這里你基本能用python來對緩沖區進行基本的操作,比如刪除行或者是在指定行添加內容等。不過在緩沖區添加內容會很不pythoner,因為你得使用command來調用vim的i/I/a/A命令。好在有更科學的方式,那就是利用vim模塊提供的對象來進行操作,看下面簡單的例子:
function! Append()
python << EOF
import vim
cur_buf = vim.current.buffer
lens = len(cur_buf)
cur_buf.append('" Demo', lens)
EOF
endfunction

Append函數在當前緩沖區的結尾添加註釋內容" Demo,緩沖區對象是怎麼一會兒事呢?

緩沖區對象

vim模塊提供了緩沖區對象來讓我們對緩沖區進行操作,該對象有兩個只讀屬性name和number,name為當前緩沖區文件的名稱(包含絕對路徑),number為緩沖區的數量。還有一個bool屬性valid,用來標識相關緩沖區是否被擦除。

緩沖區對象有以下幾種方法:

b.append(str): 在當前行的下面插入新的行,內容為str;
b.append(str, n): 在第n行的下面插入新的行,內容為str;

b.append(list)

b.append(list, n): 插入多行到緩沖區中;

b.range(s,e): 返回一個range對象表示緩沖區中s到e行的內容。

注意使用append添加新行str時,str中一定不能包含換行符"\n"。str結尾可以有"\n",但會被忽略掉。

緩沖區對象的range方法會返回一個range對象來代表部分的緩沖區內容,那麼range對象又有那些屬性以及方法呢?
其實在操作上range對象和緩沖區對象基本相同,除了range對象的操作均是在指定的區域上。range對象有兩個屬性start和end,分別是range對象的起始和結尾行。它的方法有r.append(str),r.append(str,
n)和r.append(list),r.append(list, n)。

我們可以通過vim.windows來獲取vim中的窗口對象,我們只能通過窗口對象的屬性來對其進行操作,因為它沒有提供方法或者其他介面來操作。其中只讀屬性有buffer、number、tabpage等,讀寫屬性有cursor、height、width、valid等。具體可以查看幫助:h python-window

『叄』 虛擬環境工具pyenv的安裝,配置和使用,完美控制python版本

使用
使用 pyenv 和 pyenv-virtualenv ,在 linux 下完美隔離 python 各個版本
第 1 章:使用環境
注意: 本文的 Linux和Mac OS X 下進行,不涉及 windows下的安裝使用
清單
git
bash,zsh或者brew
pyenv
pyenv-virtualenv
1、安裝 git
在各大 Linux 的發行版下安裝 git 都非常簡單,此處只展示部分示例
archlinux
sudo pacman -S git
debian/ubuntu
sudo apt install git
centos
sudo yum install git
Mac
brew install git
2、開啟終端
Ubuntu下使用 shell
Ctrl + Alt + t 快捷鍵打開終端
3、安裝 pyenv
說明: 本文的所有安裝都嚴格遵守官方文檔,與官方文檔完全保持一致。
源碼git 地址:github.com/pyenv/pyenv
在終端中執行如下命令完成安裝:
首先把項目克隆下來,放在家目錄下的隱藏文件夾中:.pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
如果你是Mac用戶,可以使用brew命令來安裝
brew update
brew install pyenv
然後配置環境變數:
如果你使用 bash,就依次執行如下命令:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; thenn eval "$(pyenv init -)"nfi' >> ~/.bashrc
如果你使用 zsh,就依次執行如下命令:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; thenn eval "$(pyenv init -)"nfi' >> ~/.zshrc
如果你用Mac,就執行如下命令:
echo -e 'if command -v pyenv 1>/dev/null 2>&1; thenn eval "$(pyenv init-)"nfi' >> ~/.bash_profile
echo 命令的含義是:將引號中內容寫入某文件中
請注意,以上的三條 echo 命令的最後一條命令,請保證它引號中的內容處於 ~/.bashrc 或者 ~/.zshrc 的最底部。
因為在 pyenv 初始化期間會操作 path 環境變數,導致不可預測的行為。
查看文件的底部內容,可以使用 tail 命令,用法:tail ~/.bashrc 或者 tail ~/.zshrc,編輯文件可以使用 vim 或者 vscode
然後,在使用 pyenv 之前,需要初始化 shell 環境,執行如下命令
exec $SHELL或者source ~/.bashrc
同樣也可以關閉當前的終端窗口,重新啟動一個。
4、安裝 pyenv-virtualenv
源碼git 地址:github.com/pyenv/pyenv…
把插件克隆在剛才已經安裝完畢的 pyenv 的 plugins 文件夾中
git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
如果你是Mac用戶可以使用brew命令來安裝
brew install pyenv-virtualenv
然後配置環境變數
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
如果你使用 bash,就執行如下命令:
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
如果你使用 zsh,就執行如下命令:
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
最後,在使用 pyenv 之前,重新初始化 shell 環境,執行如下命令
exec $SHELL或者source ~/.bashrc
或者重啟一個終端窗口。
沒有出錯的話,此時已經完成了所有的安裝操作,如果提示錯誤,請檢查前文中的==路徑==和==環境變數==(請檢查是否使用對應系統環境的命令)是否配置正確,或者將操作回退,重新執行安裝命令
第 2 章:使用 pyenv
此處僅展示 pyenv 和 pyenv-virtualenv 的日常用法
檢查安裝是否正確
檢查 pyenv 的版本
pyenv version
查看 pyenv 已經託管了哪些 python 版本
pyenv versions
如果顯示了正常的版本信息,說明安裝成功,如果顯示類似於 command not found 之類的提示,說明安裝失敗,請查看第一章末尾的提示。
安裝 3.6.6 版本的 python
pyenv install 3.6.6
這里需要注意,某些情況下會安裝失敗,Build failed.
Don't panic,我們可以查看pyenv在github wiki裡面准備的應對方案,原文地址 github.com/pyenv/pyenv…
摘錄如下,只需要執行對應的命令即可:
archlinux用戶
sudo pacman -S base-devel openssl zlib
Mac用戶
brew install openssl readline sqlite3 xz zlib
如果你使用的是OS X Mojave或者更高的版本(10.14+),還需要執行一下命令
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /
Ubuntu/Debian/Mint用戶
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev
CentOS/Fedora <= 21 用戶,確保已經安裝了 xz 工具
sudo yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel
Fedora >= 22 用戶,確保已經安裝了 xz 工具
sudo dnf install -y gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel
openSUSE用戶
zypper install gcc automake openssl-devel ncurses-devel readline-devel zlib-devel tk-devel
Solus 用戶
sudo eopkg it -c system.devel
sudo eopkg install git gcc make zlib-devel bzip2-devel readline-devel sqlite3-devel openssl-devel tk-devel
Linuxbrew用戶
brew install bzip2 openssl readline sqlite xz
安裝完這些補充的工具之後,再次執行:
pyenv install 3.6.6
就可以成功了,你可以不斷的使用pyenv versions來查看被 pyenv 託管的 python 版本,多版本之間不會沖突,完美共存
執行pyenv install,然後按下 tab 鍵,就可以看到所有可選的安裝版本
如何使用已經安裝的版本創建虛擬環境
pyenv和pyenv-virtualenv的協作可以這么理解:
pyenv 託管安裝的 python 版本,python-virtualenv 則調用對應的 python 版本
下面是如何創建和使用虛擬環境
1. 創建虛擬環境
首先需要創建一個虛擬環境,執行命令:
pyenv virtualenv 3.6.6 my-env
最後一個是環境的名字,可以隨便取。安裝成功會顯示:
Looking in links: /tmp/tmp0eywgc7v
Requirement already satisfied: setuptools in /home/vic/.pyenv/versions/3.6.6/envs/my-env/lib/python3.6/site-packages (39.0.1)
Requirement already satisfied: pip in /home/vic/.pyenv/versions/3.6.6/envs/my-env/lib/python3.6/site-packages (10.0.1)
它寫明了該虛擬環境的絕對路徑。
2. 激活虛擬環境
在任意目錄下,執行命令:
pyenv activate my-env
復制代碼在終端命令行前面,會出現(my-env) 的提示,進入python環境可以看到版本為虛擬環境設定的3.6.6,使用pip --version,可以看到 pip 包安裝的絕對路徑
使用終端進入任意目錄,比如 ~/envtest
cd ~/envtest
然後在該目錄下執行:
pyenv local my-env
也可以激活創建好的虛擬環境,執行:
ls -al
local命令和之前的命令區別在於,在 ~/envtest 目錄下,會創建一個隱藏文件 .python-version,文件內容只包含一句話 my-env,只要使用終端進入 ~/test 目錄,就會自動激活虛擬環境
退出虛擬環境使用下面兩個中任意一條命令
pyenv deactivate # 或者
source deactivate
3. 刪除虛擬環境
隨著時間推移,你可能積攢很多虛擬環境,刪除虛擬環境可以使用命令
pyenv uninstall my-env或者rm -rf my-env直接刪除虛擬環境所在的目錄
第 3 章:更新 pyenv
如果是用 git 克隆的,更新則使用git pull命令
cd ~/.pyenv 或者 cd $(pyenv root)
git pull origin master
Mac用戶則使用brew命令
brew upgrade pyenv
第 4 章:卸載 pyenv
由於 pyenv 把一切都放在 ~/.pyenv 下了,所以Linux下卸載分為兩步
刪除環境變數
執行:rm -rf ~/.pyenv或者 rm -rf $(pyenv root)
Mac用戶卸載需要使用brew命令:

brew uninstall pyenv

『肆』 如何用 Python 給 Vim 寫插件

vim有各種強大的插件,這不僅歸功於其提供的用來編寫插件的腳本語言vimL,還得益於它良好的介面實現,從而支持python等語言編寫插件。當vim編譯時帶有+python特性時就能使用python2.x編寫插件,+python3則支持python3.x,可以使用vim --version來查看vim的編譯特性。
要使用python介面,可以用:h python來查看vim提供的幫助文檔,本文做一個簡單的介紹。我們都知道在vim里可以執行bash命令,只需要:!command即可,那麼vim里可以執行python語句嗎?當然可以了,vim那麼強大!不是嗎,是嗎?!
vim中執行python命令
在vim中可以使用py[thon] {stmt}來執行python語句{stmt},你可以用:python print "Hello World!"來驗證一下。
只能執行一條語句,沒什麼用,不是嗎?所以有更加強大的介面,語法如下:
py[thon] << {endmarker}
{script} {endmarker}
這樣我們就可以執行python腳本{script}中的內容了。{endmarker}是一個標記符號,可以是任何內容,不過{endmarker}後面不能有任何的空白字元。看一個簡單的例子,假設下面代碼保存為script_demo.vim:
function! Foo()
python << EOF
class Foo_demo:
def __init__(self):
print 'Foo_demo init'
Foo_demo()
EOF
endfunction

『伍』 如何啟用vim自帶python自動補全功能

這里介紹一下 Python omni complete, 安裝啟用之後,是這個樣子的:
1. 如何安裝 'python omni complete' plugin.

如果是VIM7.3,不需要再下載 pythoncomplete.vim 這個插件,因為安裝時自帶了。
但是, 必須保證編譯安裝 VIM 的時候啟用了 Python 特性, 即
./configure --with-features=huge --enable-pythoninterp=yes
因為,pythoncomplete.vim 是用 python 寫的。

我們可以在vim autoload 目錄下看到
ls -la /usr/local/share/vim/vim73/autoload/

drwxr-xr-x 3 root root 4096 2011-02-16 16:29 .
drwxr-xr-x 17 root root 4096 2011-02-16 16:29 ..
-rw-r--r-- 1 root root 3669 2011-02-16 16:29 adacomplete.vim
-rw-r--r-- 1 root root 22439 2011-02-16 16:29 ada.vim
-rw-r--r-- 1 root root 16938 2011-02-16 16:29 ccomplete.vim
-rw-r--r-- 1 root root 15922 2011-02-16 16:29 csscomplete.vim
-rw-r--r-- 1 root root 2998 2011-02-16 16:29 decada.vim
-rw-r--r-- 1 root root 23804 2011-02-16 16:29 getscript.vim
-rw-r--r-- 1 root root 5331 2011-02-16 16:29 gnat.vim
-rw-r--r-- 1 root root 6093 2011-02-16 16:29 gzip.vim
-rw-r--r-- 1 root root 24253 2011-02-16 16:29 htmlcomplete.vim
-rw-r--r-- 1 root root 27028 2011-02-16 16:29 javascriptcomplete.vim
-rw-r--r-- 1 root root 10130 2011-02-16 16:29 netrwFileHandlers.vim
-rw-r--r-- 1 root root 8684 2011-02-16 16:29 netrwSettings.vim
-rw-r--r-- 1 root root 338720 2011-02-16 16:29 netrw.vim
-rw-r--r-- 1 root root 1232 2011-02-16 16:29 paste.vim
-rw-r--r-- 1 root root 293714 2011-02-16 16:29 phpcomplete.vim
-rw-r--r-- 1 root root 21507 2011-02-16 16:29 python3complete.vim
-rw-r--r-- 1 root root 22019 2011-02-16 16:29 pythoncomplete.vim
-rw-r--r-- 1 root root 773 2011-02-16 16:29 README.txt
-rw-r--r-- 1 root root 23443 2011-02-16 16:29 rubycomplete.vim
-rw-r--r-- 1 root root 6184 2011-02-16 16:29 spellfile.vim
-rw-r--r-- 1 root root 30201 2011-02-16 16:29 sqlcomplete.vim
-rw-r--r-- 1 root root 16839 2011-02-16 16:29 syntaxcomplete.vim
-rw-r--r-- 1 root root 21145 2011-02-16 16:29 tar.vim
-rw-r--r-- 1 root root 12646 2011-02-16 16:29 tohtml.vim
-rw-r--r-- 1 root root 23031 2011-02-16 16:29 vimball.vim
drwxr-xr-x 2 root root 4096 2011-02-16 16:29 xml
-rw-r--r-- 1 root root 14933 2011-02-16 16:29 xmlcomplete.vim
-rw-r--r-- 1 root root 11906 2011-02-16 16:29 zip.vim
如果沒有,則下載 pythoncomplete.vim, 並復制到 ~/.vim/autoload/ 目錄下。

2. 如何啟用自動補全
在 ~/.vimrc 中添加這樣兩行

[plain] view plain
filetype plugin on
autocmd FileType python set omnifunc=pythoncomplete#Complete

此時,我們就完成了安裝及配置工作。

3. 如何使用自動補全
例如我們輸入

[python] view plain
import sys
print sys.

此時, 按下 Ctrl+x, Ctrl+o, 就能看到提示列表框,以及對應的 docstring.

Ctrl+n, Ctrl+p 來上下選擇

ESC 來取消提示框。

4. 不足之處
a. 屬性沒有 docstring, 只有函數有。
:( 這個似乎不好搞,因為屬性似乎沒有 docstring 這個概念。
b. 在沒有下拉框的情況下,沒有 docstring.

好在, pythoncomplete.vim 是 python 寫的,有空大家可以自己完善一下。

『陸』 使用vim搭建python開發環境-


最近開始經常需要用vim寫代碼,這里記錄一下自己利用vim搭建基本的python開發環境所使用的插件和一些基本配置

在 ~/.vimrc 文件中,添加如下的信息,完成vim的一些基本配置。

從 GitHub clone Vundle.vim 文件到 ~/.vim/bundle 文件夾下,完成Vundle的安裝。

然後修改 ~/.vimrc 文件,添加如下的信息

若使用 Vundle 安裝 nerdcommenter 插件,需要中 Vim 的配置文件中添加

然後在 Vim 的命令行模式下執行 :BundleInstall 命令完成插件的安裝

nerdcommenter的主要使用方式:

然後在 Vim 的命令行模式下執行 :BundleInstall 命令完成插件的安裝

通過vundle安裝好NERDTree插件後,在vim命令行模式輸入命令:NERDTree就可以看到NERDTree的顯示界面。

使用組合按鍵 Ctrl + w,可將游標自動在左右側窗口進行切換。

如果想要每次啟動vim的時候都默認開啟NERDTree。可以在vimrc文件中添加:

jedi-vim插件依賴python開源庫 「jedi」 ,可以使用pip安裝:

Vim 普通模式下按 F7 便可以直接啟動 flake8 對當前文件進行語法和格式檢查。

以上是我自己用的vim工具配置,如果大家有其他的好用的插件或者配置插件,歡迎一起交流分享呀

熱點內容
好課到家源碼 發布:2025-02-07 04:45:08 瀏覽:10
每套軟體編程 發布:2025-02-07 04:44:28 瀏覽:95
excel編程for 發布:2025-02-07 04:42:22 瀏覽:493
android開發難度 發布:2025-02-07 04:40:51 瀏覽:80
header設置緩存 發布:2025-02-07 04:40:49 瀏覽:577
國開在線密碼是多少 發布:2025-02-07 04:29:13 瀏覽:148
伺服器可以用來干什麼 發布:2025-02-07 04:28:39 瀏覽:946
資源為什麼可以配置 發布:2025-02-07 04:27:38 瀏覽:989
數字電路存儲器實驗 發布:2025-02-07 04:13:29 瀏覽:813
在什麼地方查qq密碼 發布:2025-02-07 04:01:51 瀏覽:12