用python編寫乙個vim目錄管理外掛程式

2021-10-07 09:57:11 字數 3457 閱讀 5983

命令

作用例項

:py3

執行一條python語句

:py3fprint(『hello world』)

:py3f

執行乙個python模組

:py3f test.py

即在python中可以 import vim 然後使用該模組操作vim

表示vim當前所在

其中提供了如下屬性:

line #當前所在行

buffer #當前所在緩衝區

window #當前所在視窗

tabpage #當前所在標籤

buffer,window,tabpage物件均支援python的索引操作

1.內嵌:用 py py用到的python模組:

使用說明:

在vim中執行 :py3f test.py #這裡是你儲存**的名字

然後按f9即類似:vsp方式垂直開啟乙個目錄管理視窗

在管理視窗,使用o鍵,在緩衝區開啟檔案,或者進入資料夾

截圖:

''' 這是有關檔案管理的外掛程式

'''def__init__

(self)

: self.pre_b =

none

self.b =

none

self.pre_w =

none

self.w =

none

self.p = path(

'.')

.absolute(

)def

open_win

(self)

:'''

開啟乙個視窗用來顯示檔案和資料夾

'''#儲存之前的buffer

self.pre_b = vim.current.

buffer

self.pre_w = vim.current.window

#利用vim命令開啟緩衝區,並繫結對映

vim.command(

':vsp qqqq'

) vim.command(

':normal'

+' h'

) vim.command(

'map o :call open_file()'

)#繫結開啟

#獲得視窗和緩衝區物件

self.w = vim.current.window

self.b = vim.current.

buffer

#設定視窗

self.w.height =

30#區域性緩衝區設定

vim.command(

'set cursorline'

) vim.command(

'set nonu'

)#設定區域性緩衝區的設定

#設定視窗的寬度

self.w.width =

30#把目錄下檔案寫入緩衝區

self.win_show(

)def

win_show

(self)

:'''

用來在視窗中列印出指定path路徑下的檔案和子資料夾

'''self.b[:]

=none

#先清空緩衝區

#一些提示資訊, ..可用來進入上一層

print

('當前的資料夾'

,self.p)

'.. (up a dir)'))

#開始迭代子檔案和w子資料夾

mulu_n =

3#記錄當前資料夾應該插入的位置,

#資料夾前面插,檔案後面插可以分開檢視

for i in self.p.iterdir():

j = i.name

if j.startswith(

'.')

:continue

if i.is_dir():

j = f'[ ]'

mulu_n +=

1continue

defopen_file

(self)

:'''

使用者按下o鍵時候,進入檔案或資料夾

'''l = vim.current.line

#進入游標行指定的目錄

if l.startswith(

'[')

and l.endswith(

']')

:print

('進入資料夾'

) self.b[:]

=none

path = l.strip(

' ')

self.p = self.p / path

self.win_show(

)#回到上一層目錄

elif l ==

'.. (up a dir)'

: self.p = self.p.parent

self.win_show(

)#當前資料夾只是顯示的,不跳轉

elif

'當前資料夾'

in l:

return

#回到首頁

elif l ==

'-home-'

: self.path =

'~' self.win_show(

)#正常的檔案,直接開啟

else

:print

('進入檔案'

)print

(f'之前的緩衝區'

) vim.current.window = self.pre_w

vim.command(f':e '

) vim.current.window = self.w

#下面是繫結到vim裡面

vim.command(

':py3 fm=filemanage()'

)vim.command(

''' function! open_win()

:py3 fm.open_win()

endfunction

function! open_file()

:py3 fm.open_file()

endfunction

''')vim.command(

'map :call open_win()'

)

用python編寫乙個小遊戲

1.隨機生成兩個數字 1 1000 在控制台中隨機獲取兩個數字相加 如果使用者輸入正確得10分,否則扣10分。總共5道題,最後輸出得分 import random grade 0for i in range 5 num1 random.randint 1,100 num2 random.randin...

用python編寫乙個計算器

1 2 60 30 40.0 5 9 2 5 3 7 3 99 4 2998 10 568 14 4 3 16 3 2 通過python實現,自動判斷括號以及加減乘除的運算優先順序,得出運算結果,顯示運算步驟 import redef atom cal exp if in exp 計算單個的乘法 a...

用python3 7 3編寫乙個問答遊戲

我們先來看一下效果 如下 import random,time 首先初始化 number1 0number2 0answer1 0answer2 0score 0chance 5 在機會用光前重複執行 while chance 0 number1 random.randint 1,100 numbe...