當前位置:首頁 » 編程語言 » pythonvim運行

pythonvim運行

發布時間: 2022-08-08 20:53:43

Ⅰ 如何使用vim編寫python

vim只能修改文件,不能編譯。 比方說你可以直接在終端輸入vim Code.py來打開文件並修改之類的。 如果要編譯,就要在終端輸入Python Code.py 那麼他會自行對該文件編譯然後直接運行

Ⅱ 在windows下怎麼用vim運行python

vim是編輯器,可以直接執行python命令,輸入命令的時候在命令前帶!,英文的感嘆號,這樣就是調用系統命令了。具體參考vim配置其他功能函數時調用命令的寫法(例如調用gcc編譯)

Ⅲ 怎麼使用vim編譯python

vim只能修改文件,不能編譯。
比方說你可以直接在終端輸入vim Code.py來打開文件並修改之類的。
如果要編譯,就要在終端輸入Python Code.py
那麼他會自行對該文件編譯然後直接運行

Ⅳ vim中怎麼優雅的執行python代碼

vim只是個文本編輯器,它只能用於編寫代碼,怎可能執行代碼

Ⅳ python在vim中怎麼用

Python在vim中怎麼用?
1、安裝Python
2、將安裝路徑,如C:Python34放到Path
3、在Vim中打開文件xxx.py
4、在vim中執行: :!python.exe %
%:標識當前所編輯文件,會被該文件名替換。
更多Python知識,請關註:Python自學網!!

Ⅵ 如何用 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

Ⅶ 如何使 Vim 下開發 Python 調試更方便

剛開始用vim寫python的時候,感覺很不方便,於是就用了圖形界面的Pycharm(如果是windows用戶,這個IDE應該是標配),用了一段時間也沒有覺得有什麼不好,不過,腦子里總是會想起《程序員修煉之道》中,那句」最好是精通一種編輯器,並將其用於所有編輯任務。如果不堅持使用一種編輯器,可能會面臨現代的巴別特大混亂。」所以,我又決定用vim來寫python。

在知乎上有很多vim寫python的插件推薦,不過我感覺很多人回答都不動腦子,這些回答主要有兩個問題:

  • 回答不全面,很多人都只是推薦一款插件,然後貼個鏈接就完了,如果要想很爽的用vim寫python,可以肯定的是,一款插件是不夠的

  • 貼上自己的配置,說自己的配置有多爽,然後就不管了。如果是一個vim新手,是用不著這么多配置的,如果是一個vim老手,也不會放棄自己原有的配置,使用別人自定義、認為很爽的個性化配置


  • 所以,這些回答都不是很靠譜。我爭取推薦一些靠譜的東西,那麼,就開始吧!


  • 1. 一鍵執行

  • 這個不是插件,而是一個自定義的vim配置。很多時候我們寫python,都是寫一些較為簡單的腳本,那麼,這個一鍵執行的功能就非常實用,我個人感覺最實用的是在寫單元測試的時候,寫完一個單元測試,都不用退出vim,立即執行就能看到結果。

    將下面的配置放到.vimrc文件即可:



  • """""""""""""""""""""" "Quickly Run """"""""""""""""""""""

  • map <F5> :call CompileRunGcc()<CR>

  • func! CompileRunGcc()

  • exec "w"

  • if &filetype == 'c'

  • exec "!g++ % -o %<"

  • exec "!time ./%<"

  • elseif &filetype == 'cpp'

  • exec "!g++ % -o %<"

  • exec "!time ./%<"

  • elseif &filetype == 'java'

  • exec "!javac %"

  • exec "!time java %<"

  • elseif &filetype == 'sh'

  • :!time bash % elseif &filetype == 'python'

  • exec "!time python2.7 %"

  • elseif &filetype == 'html'

  • exec "!firefox % &"

  • elseif &filetype == 'go' " exec "!go build %<"

  • exec "!time go run %"

  • elseif &filetype == 'mkd'

  • exec "!~/.vim/markdown.pl % > %.html &"

  • exec "!firefox %.html &"

  • endif

  • endfunc

  • 2. 代碼補全(snipMate)

  • 代碼補全能夠顯著地減少你敲鍵的次數,並且將你從瑣碎的語法中解放出來。說白了,就是幫你寫代碼!


    如果使用snipMate插件,那麼,當你輸入ifmain以後按tab鍵,將會自動為你生成下面的代碼:


  • if __name__ == '__main__':

  • main()

  • 輸入for,再按tab鍵,生成如下代碼:


  • for needle in haystack: # code...


  • 代碼補全有兩款插件都比較不錯,可以根據自己的需要進行選擇:

  • snipMate

  • xptemplate

  • 3. 語法檢查(Syntastic)

  • syntastic是一款強大的語法檢查插件,當你保存源文件時,它就會執行,並提示用戶哪些代碼存在語法錯誤,哪些代碼風格不符合規范,並給出具體的提示。

    例如,python代碼風格默認設置為PEP8,即使你不知道PEP8的風格,只要你使用syntastic插件,並根據它給出的提示修改,那麼,你就能寫出完全符合PEP8風格的代碼!


  • 4. 編程提示(jedi-vim)

  • jedi-vim是基於jedi的自動補全插件,與Syntastic 不同的是,該插件更加智能,更貼切的稱呼是」編程提示」,而不是代碼補全插件。


    如下圖所示:


    可以說,這個插件是寫vim的標配,並且,真正讓vim寫python變成一件輕松愉快的事情。

    注意: 安裝驚jedi-vim插件,需要在電腦中安裝jedi,根據jedi-vim給出的提示,正常按裝即可。不過我之前遇到一個問題,在公司的虛擬機裡面,安裝以後不起作用,google了半天沒有成功,最後更新了一下vim就可以了,希望遇到相同問題的人,能夠看到。



  • sudo aptitude install vim-gnome vim vim-common vim-tiny



  • 至於調試,難道你們不是用ipdb的嗎?如果不是,趕緊用用,你們會喜歡的。

Ⅷ 如何在vim中運行python程序

碼不需要編譯就可以看的,只是如果不在已編譯的源碼環境下編譯自己的工程,就不能成功。意思是說,如果你要在源碼環境下開發自己的功能,也就是要對源碼進行修改或添加自己個性化的東西,就需要先編譯源碼。如果單純只是想看源

Ⅸ 用vim寫python時,用中文注釋後不能運行!

ubuntu好像是utf-8編碼的,第一行用下面shenwei5566說的# -*- coding:utf-8 -*-就可以了。在windows下就要注意文件字元編碼是utf-8格式了。

Ⅹ vim 中怎麼運行python

打開vi,輸入:

:!wget https://download.jetbrains.com/python/pycharm-community-5.0.2.tar.gz
:!tar xvfz pycharm-community-5.0.2.tar.gz
:!pycharm-community-5.0.2/bin/pycharm.sh

然後你就可以愉快的寫Python程序了。

熱點內容
win2008伺服器搭建網站 發布:2024-04-27 07:26:51 瀏覽:639
java的vector 發布:2024-04-27 07:05:00 瀏覽:203
舊電腦共享伺服器 發布:2024-04-27 06:32:21 瀏覽:339
java程序練習 發布:2024-04-27 06:24:00 瀏覽:438
sql30 發布:2024-04-27 06:22:10 瀏覽:55
怎樣防止sql注入 發布:2024-04-27 06:11:25 瀏覽:236
安卓為什麼不能登蘋果系統的游戲 發布:2024-04-27 06:11:23 瀏覽:601
編程日課 發布:2024-04-27 05:56:54 瀏覽:620
漏洞上傳工具 發布:2024-04-27 05:50:58 瀏覽:717
手機如何選擇存儲 發布:2024-04-27 05:40:25 瀏覽:800