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,作為一個(gè)有著30余年歷史的老牌神器,沒有任何編輯器可以和它媲美,其時(shí)江湖有云:神編Vim不會(huì)玩,縱稱大神也枉然。Vim在 1976 年發(fā)布,奉行 Unix 傳統(tǒng)的“Do one thing and do it well”哲學(xué),每個(gè)程序只做一件事但求做到最好,通過程序之間的配合得到強(qiáng)大的功能,其兩種模式(Normal/Insert) 的玄妙變換,幻化出各種組合的炫酷用法,不知傾倒了多少開發(fā)者的心。本次我們?cè)赪in10平臺(tái)構(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)任意位置啟動(dòng)vim

之后在當(dāng)前的用戶目錄,建立一個(gè)_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è)置編碼解決中文亂碼問題、自動(dòng)縮進(jìn)以及縮進(jìn)寬度、菜單欄中文字體問題、主題和字體、以及四個(gè)空格代替制表符等等,注意一點(diǎn)這個(gè)配置里我將運(yùn)行python腳本的快捷鍵設(shè)置成了f5。
這時(shí)進(jìn)入windows命令行,輸入gvim啟動(dòng)編輯器,然后鍵入命令:version,看到版本號(hào)就沒有問題了

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

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

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

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

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

好了,項(xiàng)目導(dǎo)入后就可以愉快的開發(fā)了,但是我們發(fā)現(xiàn)vim默認(rèn)沒有代碼補(bǔ)全,怎么辦呢,聰明如你一定已經(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
這就搞定了,使用方法是,敲入兩個(gè)字母之后使用tab鍵進(jìn)行補(bǔ)全,效果是下面這樣:

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

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

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

