Win10系統(tǒng)下安裝編輯器之神(The?God?of?Editor)Vim并且構(gòu)建Python生態(tài)開發(fā)環(huán)境過程(2020年最新攻略)
眾神殿內(nèi),依次坐著Editplus、Atom、Sublime、Vscode、JetBrains家族、Comodo等等一眾編輯器界的大佬們,偌大的殿堂內(nèi)幾無立錐之地,然而在殿內(nèi)的金漆雕龍寶座上,端坐著一位睥睨眾生的王者,那就是被稱之為編輯器之神的Vim,作為一個有著30余年歷史的老牌神器,沒有任何編輯器可以和它媲美,其時江湖有云:神編Vim不會玩,縱稱大神也枉然。Vim在 1976 年發(fā)布,奉行 Unix 傳統(tǒng)的“Do one thing and do it well”哲學(xué),每個程序只做一件事但求做到最好,通過程序之間的配合得到強大的功能,其兩種模式(Normal/Insert) 的玄妙變換,幻化出各種組合的炫酷用法,不知傾倒了多少開發(fā)者的心。本次我們在Win10平臺構(gòu)建一套以Vim為核心的Python開發(fā)環(huán)境。
首先,安裝python3,并且配置好環(huán)境變量,這在之前的視頻攻略中有過完整的介紹:
win10系統(tǒng)下配置python3開發(fā)環(huán)境
隨后下載gvim8,注意根據(jù)系統(tǒng)類型選擇32或者64位,這里我們選擇64位的,下載地址是:https://tuxproject.de/projects/vim/x64/

然后,將下載好的壓縮包解壓,并且將文件放到C:/vim目錄下

順便配置好環(huán)境變量,這樣就可以在系統(tǒng)任意位置啟動vim

之后在當(dāng)前的用戶目錄,建立一個_vimrc文件,這是vim的配置文件,所有的設(shè)置都在這里編寫
將以下內(nèi)容添加到_vimrc文件中
" An example for a vimrc file.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last change: 2019 Dec 17
"
" To use it, copy it to
" for Unix: ~/.vimrc
" for Amiga: s:.vimrc
" for MS-Windows: $VIM_vimrc
" for Haiku: ~/config/settings/vim/vimrc
" for OpenVMS: sys$login:.vimrc
" When started as "evim", evim.vim will already have done these settings, bail
" out.
if v:progname =~? "evim"
finish
endif
" Get the defaults that most users want.
source $VIMRUNTIME/defaults.vim
if has("vms")
set nobackup " do not keep a backup file, use versions instead
else
set backup " keep a backup file (restore to previous version)
if has('persistent_undo')
set undofile " keep an undo file (undo changes after closing)
endif
endif
if &t_Co > 2 || has("gui_running")
" Switch on highlighting the last used search pattern.
set hlsearch
endif
" Put these in an autocmd group, so that we can delete them easily.
augroup vimrcEx
au!
" For all text files set 'textwidth' to 78 characters.
autocmd FileType text setlocal textwidth=78
augroup END
" Add optional packages.
"
" The matchit plugin makes the % command work better, but it is not backwards
" compatible.
" The ! means the package won't be loaded right away but when plugins are
" loaded during initialization.
if has('syntax') && has('eval')
packadd! matchit
endif
set encoding=utf-8
set fileencodings=utf-8,chinese,latin-1
if has("win32")
set fileencoding=chinese
else
set fileencoding=utf-8
endif
set autoindent
set nu!
set shiftwidth=4
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
language messages zh_CN.utf-8
colo koehler
set guifont=monaco:h11:cANSI
set ts=4
set expandtab
map <F5> :! python.exe %這些都是一些最基本的配置,比如設(shè)置編碼解決中文亂碼問題、自動縮進以及縮進寬度、菜單欄中文字體問題、主題和字體、以及四個空格代替制表符等等,注意一點這個配置里我將運行python腳本的快捷鍵設(shè)置成了f5。
這時進入windows命令行,輸入gvim啟動編輯器,然后鍵入命令:version,看到版本號就沒有問題了

雖然現(xiàn)在Vim已經(jīng)可以正常使用了,但是沒有插件的加成,開發(fā)效率就不是那么高,所以我們現(xiàn)在來安裝一些常用的插件。
安裝pathogen.vim插件(一個vim插件管理器)
地址是:https://github.com/tpope/vim-pathogen 直接Clone或者下載壓縮包
將Clone或者解壓后的pathogen.vim文件放到C:/vim/autoload目錄下

修改用戶目錄下的_vimrc配置文件,將下面的配置加進去
execute pathogen#infect()
這樣就可以安裝其他所有的插件了
緊接著我們安裝一個項目管理插件(project),它可以幫助我們把項目整體導(dǎo)入vim編輯器內(nèi),通過點擊文件進行修改,這樣就不用每次編輯都要在命令行輸入命令才能編輯了,大體上,這個插件可以幫我們快速修改整個項目。
同樣的,先進行下載,地址是:https://www.vim.org/scripts/script.php?script_id=69

將解壓后的doc目錄中的project文件拷貝到vim安裝目錄的doc目錄下
將plugin目錄下的project.vim拷貝到vim安裝目錄的plugin目錄下
在命令行輸入gvim啟動編輯器
輸入:Project
隨后輸入\C (是反斜杠和大寫C,因為是輸入命令,所以不會在編輯內(nèi)顯示,但是執(zhí)行成功后會彈出窗口)

Enter the Name of the Entry: 輸入項目名
Enter the Absolute Directory to Load: 輸入項目的文件目錄路徑(項目目錄需要事先存在)
Enter the CD parameter: 這個和項目目錄路徑一樣即可
Enter the File Filter: 設(shè)置管理的文件類型,.py,.txt等等,可以設(shè)置多個,不設(shè)置(直接回車)默認為所有類型
再次使用:打開vim后輸入:Project
使用回車打開或關(guān)閉標(biāo)簽。
添加或者修改文件后可以使用\R刷新。
這樣我們就可以在vim里管理我們的項目了。

每次導(dǎo)入項目后,你都可以在用戶目錄的.vimprojects文件中進行修改或者刪除項目,非常靈活

好了,項目導(dǎo)入后就可以愉快的開發(fā)了,但是我們發(fā)現(xiàn)vim默認沒有代碼補全,怎么辦呢,聰明如你一定已經(jīng)猜到可以用插件搞定,使用pydiction,下載地址:https://github.com/rkulla/pydiction
Clone或者下載壓縮包之后,發(fā)現(xiàn)里面有after文件夾、complete-dict、pydiction.py
將after里面的python_pydiction.vim文件拷貝到 vim安裝目錄下的ftpplugin里面,將complete-dict、pydiction.py 拷貝到ftpplugin目錄下
隨后在_vimrc里面添加
filetype plugin on let g:pydiction_location='C:vimftplugincomplete-dict' let g:pydiction_menu_height = 3
這就搞定了,使用方法是,敲入兩個字母之后使用tab鍵進行補全,效果是下面這樣:

還不錯吧,有的時候,你甚至想用vim來編輯前端的頁面,沒有任何問題,使用autocomplpop插件,下載地址:https://vim.sourceforge.io/scripts/script.php?script_id=1879
解壓后,將plugin下的腳本文件(.vim)、doc下的幫助文件(.txt)和autoload下的(.vim)文件分別拷貝至vim的 plugin、doc和autoload目錄
這個插件甚至不需要配置,只需要在輸入/insert模式下即可自動根據(jù)當(dāng)前文檔內(nèi)的內(nèi)容進行自動補全

是不是感覺還不錯?有了那么一點黑客的趕腳了。
Vim 有兩種模式——Normal 模式和 Insert 模,所有命令都是在 Normal 模式下執(zhí)行。啟動 Vim 后,默認進入 Normal 模式,可以按 i 鍵進入 Insert 模式,或者 s 刪除當(dāng)前字符并進入 Insert 模式,退出 Insert 模式進入 Normal 按 ESC 。
基本用法:
i insert 輸入 v 行選中 ctrl+v 列選中 G 至文末 gg 至文首 :q 未修改退出 :q! 強制不保存退出 :x / :wq 保存并退出 J 合并多行 d 刪除當(dāng)前所選 dd 刪除多行并存在剪貼板中(剪切) y 復(fù)制當(dāng)前所選 yy 復(fù)制整行 p 粘貼 u 撤銷操作 w 光標(biāo)移動到下一個單詞處 b 光標(biāo)移動到上一個單詞處 ^ 光標(biāo)移動到行首 $ 光標(biāo)移動到行尾 kjhl 或者上下左右鍵移動光標(biāo) shift+上下鍵 翻頁 shift+左右 光標(biāo)乙至上/下一個單詞(以空格/標(biāo)點區(qū)分單詞)詞首 u 撤銷上一步操作 zo/zn/zc 折疊/展開代碼塊 :vsp 新建工作區(qū) ctrl+w 松手后再按 方向鍵 切換工作區(qū) :MR 選擇最近打開的文件(需安裝插件) F12 運行當(dāng)前文件 # 搜索光標(biāo)處短語 :set paste 進入粘貼模式 :%s/target/something/g 替換全部 target 字段 :s/target/something/g 替換選中區(qū)域 target 字段
參考命令圖解

結(jié)語:遙想當(dāng)年,Windows平臺用戶對軟件的可擴展性完全沒有概念,他們只能對他們使用的軟件進行非常有限的定制(普通版/家庭版/專業(yè)版)。擴展軟件的權(quán)利也保留在開發(fā)者手中。軟件的使用者如果想要新的功能和特性,只能等待軟件的升級或者花錢買。有能力的用戶不想被束縛,為了添加自己想要的功能,自己寫新的功能。就這樣,新的功能意味著新的軟件,Windows平臺的軟件前赴后繼,迅速地更新?lián)Q代。因此,Windows平臺就如鐵打的營盤,而那些軟件就像流水的兵,循環(huán)往復(fù)。
現(xiàn)而今,Mac os和開源軟件漸漸流行起來,此時的人們才發(fā)現(xiàn):可擴展性才是軟件的核心競爭力。在JetBrains橫行的今天,Vscode為什么被評為最好的IDE?就是因為它在IDE中最具可擴展性。同理,將近30多年的歷史浪潮中Vim沒有被時代淘汰,反而愈發(fā)健壯,擁躉遍布全世界,也正是因為在數(shù)不清的編輯器中,Vim具有無可匹敵的可擴展性,當(dāng)然了,這個世界除了編輯器之神,還有另外一種信仰:Emacs,它的教徒絲毫不少于Vim,它的影響力已經(jīng)是超越編輯器的存在,有機會再分享關(guān)于Emacs的傳說。
相關(guān)文章
python 標(biāo)準(zhǔn)庫原理與用法詳解之os.path篇
os.path模塊主要用于文件的屬性獲取,在編程中經(jīng)常用到,本文將帶你熟悉這個模塊并掌握它的用法,感興趣的朋友跟小編來看看吧2021-10-10
Pandas中Series的創(chuàng)建及數(shù)據(jù)類型轉(zhuǎn)換
這篇文章主要介紹了Pandas中Series的創(chuàng)建及數(shù)據(jù)類型轉(zhuǎn)換,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08
flask框架實現(xiàn)連接sqlite3數(shù)據(jù)庫的方法分析
這篇文章主要介紹了flask框架實現(xiàn)連接sqlite3數(shù)據(jù)庫的方法,結(jié)合實例形式分析了flask框架連接sqlite3數(shù)據(jù)庫的具體操作步驟與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2018-07-07
pandas使用dtype/dtypes修改數(shù)據(jù)類型
在數(shù)據(jù)處理和分析中,經(jīng)常需要對數(shù)據(jù)進行類型轉(zhuǎn)換以滿足特定的需求,本文主要介紹了pandas使用dtype/dtypes修改數(shù)據(jù)類型,具有一定的參考價值,感興趣的可以了解一下2024-06-06
基于Python實現(xiàn)語音識別和語音轉(zhuǎn)文字
這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)語音識別和語音轉(zhuǎn)文字功能,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2022-09-09

