1. 程式人生 > >在Ubuntu上打造方便好用的Python開發環境 --- ZSHELL

在Ubuntu上打造方便好用的Python開發環境 --- ZSHELL

http://blog.csdn.NET/a464057216/article/details/52070922

我使用的是Ubuntu 14.04 LTS,按照我的操作步驟做完,終端Terminal的使用效果如下: 
這裡寫圖片描述 
vim編輯Python檔案時使用效果如下:
這裡寫圖片描述

安裝oh-my-zsh

Shell是Linux核心與使用者通訊的介面,種類很多,Ubuntu上預設的Shell是Bash。檢視當前使用的Shell是什麼:

marsloo@mars-Ideapad-V460:~$ echo $SHELL
/bin/bash

檢視系統中可用的Shell有哪些:

marsloo@mars-Ideapad-V460:~$ 
cat /etc/shells # /etc/shells: valid login shells /bin/sh /bin/dash /bin/bash /bin/rbash

雖然Bash很好用,但是Zsh比Bash更好用(因為Z是英文字母的最後一個,所以Zsh也叫終極Shell),只不過Zsh配置很麻煩,大家不會為一個Shell工具耗費太多經歷學習配置使用它,直到有人在Github上放了oh-my-zsh專案。

安裝zsh

[email protected]-Ideapad-V460:~$ sudo apt-get update
[email protected]-Ideapad-V460:~$ sudo apt-get
install zsh -y
  • 1

安裝oh-my-zsh 
需要有curl或wget工具,沒有的話先安裝其中一個。使用curl安裝oh-my-zsh:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

如果使用wget:

sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

安裝完成後(中間會要求輸入使用者密碼)就可以體驗oh-my-zsh了:

這裡寫圖片描述

外掛及配置 
oh-my-zsh支援載入外掛(plugin)增加各種好用的功能,關於外掛可以檢視~/.oh-my-zsh/plugins目錄,或者GitHub上的wiki介紹。

oh-my-zsh的配置在~/.zshrc檔案中,下面是我的配置,供參考:

export ZSH=$HOME/.oh-my-zsh
ZSH_THEME="gnzh"
DISABLE_UPDATE_PROMPT=true
plugins=(git autojump sudo httpie colored-man-pages)
source $ZSH/oh-my-zsh.sh
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
# Aliases configuration
alias ll='ls -lrth'
alias la='ls -lrtha'
alias grep="grep --color=auto"
alias vi='vim'
alias mysql='/usr/local/mysql/bin/mysql'
alias mysqladm='/usr/local/mysql/bin/mysqladmin'
alias mysqld='/usr/local/mysql/bin/mysqld'
alias -s c=vim
alias -s txt=vim
alias -s gz='tar -xzvf'
alias -s tgz='tar -xzvf'
alias -s zip='unzip'
alias -s bz2='tar -xjvf'
alias -s jpg='imgcat'
alias -s gif='imgcat'
alias -s png='imgcat'

export PROJECT_HOME=$HOME/learnspace
export WORKON_HOME=$HOME/Envs
if [ ! -d $PROJECT_HOME ]; then
    mkdir -p $PROJECT_HOME
fi
if [ ! -d $WORKON_HOME ]; then
    mkdir -p $WORKON_HOME
fi
# Virtualenvwrapper
source /usr/local/bin/virtualenvwrapper.sh
source ~/.iterm2_shell_integration.`basename $SHELL`

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm

主題我選擇了流行的agnoster,你可以在這裡選擇自己喜歡的。外掛部分除了預設的Git,還選擇了autojump,後續我會寫一篇博文講它的用法。alias -s c=vim是說,直接在終端輸入一個.c檔案的名字,會自動用vim開啟它,處理其他型別的檔案也會使用對應的工具開啟(比如解壓壓縮包)。

先備份你的.zshrc,再把上面的配置拷貝到你的~/.zshrc中,$ source ~/.zshrc就可以了。如果沒有改過Ubuntu的終端字型設定的話,會顯示亂碼:

這裡寫圖片描述

先不管亂碼,把Zsh設定為當前使用者的預設Shell:

[email protected]-Ideapad-V460  ~  chsh -s /bin/zsh

登出後重新登陸,開啟Terminal使用的就是Zsh了。

安裝Powerline

Powerline是一個Vim的狀態列外掛,也可以為Zsh提供服務。
安裝Powerline 
我平時使用Python 2,安裝Powerline依賴Python 2.6+及pip:

[email protected]-Ideapad-V460  ~  pip install --user powerline-status

此時Powerline已經生效了,可以看下效果: 
這裡寫圖片描述 
安裝Powerline字型 
Powerline為了漂亮的視覺效果,使用了大量自己開發的字型,這些字型並不是系統原生的。安裝這些字型也非常簡單:

[email protected]-Ideapad-V460  ~  git clone https://github.com/powerline/fonts
[email protected]-Ideapad-V460  ~  cd fonts/           
 [email protected]-Ideapad-V460  ~/fonts   master  ./install.sh
安裝完成以後,需要配置終端的字型: 

這裡寫圖片描述 
選擇Ubuntu專門的Powerline字型,其他字型會因為不等寬造成問題,然後就可以看到Terminal的變化了: 
這裡寫圖片描述

如果不想讓Zsh的命令提示符佔據太多命令空間,推薦把Zsh的主題換成gnzh: 
這裡寫圖片描述

安裝solarized配色 
solarized配色對眼睛比較好,安裝這個配色需要dconf-cli工具,Ubuntu一般預設都有安裝:

$ git clone https://github.com/Anthony25/gnome-terminal-colors-solarized.git
$ cd gnome-terminal-colors-solarized
$ ./install.sh

安裝過程中,我選擇的dark模式,最後效果如下: 
這裡寫圖片描述

配置Vim

Vim是Vi的升級版,本身功能已經很強大,配合各種外掛使用後能讓開發效率飛起來。按照我下面的步驟,可以搭建一個高效的Python開發環境。

首先開啟vim檢視其版本,我的是7.4.52,然後使用$ vim --version | grep +python確認vim支援python。如果vim版本過低或不支援python,請重新安裝支援Python的最新vim。

外掛管理器

vim也支援外掛增強功能,有很多外掛管理器可以幫助管理外掛,我常用的是Vundle

$ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

然後新建一個~/.vimrc的vim配置檔案,將GitHub上面的示例內容拷貝進去,記得除了Vundle外掛外,將其他作為示例的外掛配置刪掉,然後啟動vim,執行:PluginInstall:
這裡寫圖片描述

安裝外掛

~/.vimrc中,外掛的設定都在call vundle#begin()call vundle#end()之間,先把我們需要安裝的外掛配置都加在裡面:

" Code folding plugin
Plugin 'tmhedberg/SimpylFold'
" Color Scheme
Plugin 'tomasr/molokai'
" NerdTree: A tree explorer plugin for vim
Plugin 'scrooloose/nerdtree'
Plugin 'jistr/vim-nerdtree-tabs'
" Auto indent for Python
Plugin 'vim-scripts/indentpython.vim'
" Auto complete plugin
" Bundle 'Valloric/YouCompleteMe'
" Syntax check in Vim
Plugin 'scrooloose/syntastic'
" PEP8 standard checking for Python
Plugin 'nvie/vim-flake8'
" Powerfull status line
Plugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'}

各個外掛的作用可以在GitHub上找到完整的說明,我們還是先開啟vim,然後使用:PluginInstall把這些外掛安裝上: 
這裡寫圖片描述

細心的朋友會發現我註釋了一個YouCompleteMe的外掛,它是一個程式碼自動補全的外掛,幾乎可以支援各種語言,也可以跳轉到函式定義、宣告、呼叫,檢視幫助文件等。因為這個外掛非常不好安裝,所以我們自己手動安裝它。雖然安裝它的過程比較麻煩,但是相比與它的易用性,付出是值得的!首先需要從Github上把它clone下來:

$ git clone https://github.com/Valloric/YouCompleteMe.git

然後cd到YouCompleteMe目錄clone依賴(時間會比較長):

$ cd YouCompleteMe
$ git submodule update --init --recursive
確保系統安裝了cmakepython-dev(如果使用python3的話,時python3-dev),將準備好的YouCompleteMe目錄移動到~/.vim/bundle/YouCompleteMe,
然後在家目錄執行如下命令:
 [email protected]-Ideapad-V460  ~  mkdir ycm_build
 [email protected]-Ideapad-V460  ~  cd ycm_build
 [email protected]-Ideapad-V460  ~/ycm_build  cmake -G "Unix Makefiles" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
 [email protected]-Ideapad-V460  ~/ycm_build  cmake --build . --target ycm_core
如果編譯沒有問題的話,可以在.vimrc檔案中取消YouCompleteMe的註釋重新:PluginInstall一下。

配置vim

所有的外掛安裝完畢後,下一步就是配置vim,把各個外掛的功能利用起來,下面說明的內容都是放在.vimrc檔案的末尾。

將:sp和:vsp分割的視窗位置放在右下角

” Change position of the window of :sp & :vsp 
set splitbelow 
set splitright

開啟程式碼摺疊:可以摺疊函式、類等的定義

” Enable folding 
set foldmethod=indent 
set foldlevel=99

使用空格鍵摺疊程式碼:而不必使用za按兩次鍵盤

” Enable folding with the spacebar 
nnoremap za

摺疊程式碼時,顯示幫助文件

” Show docstring for folded code 
let g:SimpylFold_docstring_preview=1

避免程式碼摺疊的Bug

" Avoid Issue #27 for SimpylFold
autocmd BufWinEnter *.py setlocal foldexpr=SimpylFold(v:lnum) foldmethod=expr
autocmd BufWinLeave *.py setlocal foldexpr< foldmethod<

vim使用unix utf8編碼處理檔案
" Vim file formatting
set encoding=utf-8
set fileformat=unix

YCM自動補全及離開插入模式後自動關閉幫助視窗

" YCM: close the preview window after completeion automatically
let g:ycm_autoclose_preview_window_after_completion = 1
" YCM: close the preview window after leave insertion mode automatically
let g:ycm_autoclose_preview_window_after_insertion = 1

YCM配合virtualenv

 "python with virtualenv support
py << EOF
import os
import sys
if 'VIRTUAL_ENV' in os.environ:
  project_base_dir = os.environ['VIRTUAL_ENV']
  activate_this = os.path.join(project_base_dir, 'bin/activate_this.py')
  execfile(activate_this, dict(__file__=activate_this))
EOF

推薦使用virtualenvwrapper,在.zshrc最後新增如下內容:

# Other environment variables
export PROJECT_HOME=/home/marsloo/workspace
# export PROJECT_HOME=/home/marsloo/learnspace
export WORKON_HOME=/home/marsloo/Envs
if [ ! -d $PROJECT_HOME ]; then
    mkdir -p $PROJECT_HOME
fi
if [ ! -d $WORKON_HOME ]; then
    mkdir -p $WORKON_HOME
    source /usr/local/bin/virtualenvwrapper.sh
fi
YCM快捷鍵定義
" YCM shortcuts
map <C-n>  :YcmCompleter GoToDefinition<CR>
" map <C-?>  :YcmCompleter GoToDeclaration<CR>
map <C-m>  :YcmCompleter GoToReferences<CR>
map <C-p>  :YcmCompleter GetDoc<CR>
" invoke omni completion by pressing ctrl+/ (ctrl+/ is recognized as C-_)        
inoremap <unique> <C-_> <C-X><C-O><C-P>

Ctrl + n跳轉到函式定義,然後使用Ctrl + o就能回到原來的位置。Python並沒有Declaration一說,所以註釋掉了。Ctrl + m可以看到所有對函式的呼叫。CtrlP其實是一個查詢檔案的vim外掛,但是我沒有用,所以定義了Ctrl + p是調出幫助文件。另外有些時候,可以使用Ctrl + /呼叫強制補全。

開啟vim時,自動開啟NertTreeTabs

" Start Nerdtree automatically
let g:nerdtree_tabs_open_on_console_startup=1

NertTreeTabs是最後一個串列埠時,不關閉NertTreeTabs

" Don't close nerdtreetabs when it is the last window
let g:nerdtree_tabs_autoclose=0

NerdTree自動忽略某些檔案:如以.pyc和~結尾的檔案

" Files that nerdtree will ignore
let NERDTreeIgnore = ['\.pyc$', '\~$']

快速顯示關閉NerdTreeTabs 
其實vim中,Ctrl + g是顯示當前行處於整個檔案的位置,因為Powerline已經有這個功能,所有把Ctrl + g的功能換掉了。

" Mapping C-g to toggle NERDTreeTabs
map <C-g> :NERDTreeTabsToggle<CR>

vim顯示行號

set nu

設定一行不會超過80個字元

" Ensure one line doesn’t go beyond 80 characters
set textwidth=79

配置使用Python語法檢查
" Configuration for scrooloose/syntastic plugin
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0

注意:需要sudo pip install flake8

vim配色自動切換 
需要新增兩個外掛:

Plugin ‘jnurmine/Zenburn’ 
Plugin ‘altercation/vim-colors-solarized’

安裝完成後,在.vimrc末尾增加如下判斷:

if has('gui_running')
    set background=dark
    " colorscheme solarized
    " call togglebg#map("<F5>")
    colorscheme molokai
else
    colorscheme zenburn
endif

配色部分我一般用molokai,你也可以使用solarized,並且啟用F5切換。

相關推薦

Ubuntu打造方便Python開發環境 --- ZSHELL

http://blog.csdn.NET/a464057216/article/details/52070922 我使用的是Ubuntu 14.04 LTS,按照我的操作步驟做完,終端Terminal的使用效果如下:   vim編輯Python檔案時使用效果如下:

70.在Mac打造方便Python開發環境

說明 本文是對之前的部落格“在Ubuntu上打造方便好用的Python開發環境”的補充,說明了在Mac上從無到有打造方便好用的Python開發環境的方法,同時增加了對C語言開發環境的配置說明。 iTerm2 Mac自帶終端軟體是Termina

python安裝】Windows安裝和創建python開發環境

path環境變量 -s cme iat img mba 增加 應用 jni 1. 在 windows10 上安裝python開發環境 Linux和Mac OS都自帶python環境,但是Windows沒有,需要自行安裝。 第1步:訪問 python官網,下載Windows

神級程序員巧python開發王者榮耀把妹神器,一路升級王者!

利用 範式 per wax 搜索 下載 運行 app for Python(發音:英[?pa?θ?n],美[?pa?θɑ:n]),是一種面向對象、直譯式電腦編程語言,也是一種功能強大的通用型語言,已經具有近二十年的發展歷史,成熟且穩定。它包含了一組完善而且容易理解的標準庫,

快速傳檔案到資料夾.感覺方便.

1.介面HTML程式碼.enctype="multipart/form-data"  不可缺. <form id="uploadFileForm" method="post" enctype="multipart/form-data"> <div> <input t

Python 學習之工具篇-在 Ubuntu 16.04 下 Eclipse+PyDev 配置 Python 開發環境

將來研究生的方向和深度學習有關,趁著現在大四課程比較輕鬆,先學習一下深度學習必備的程式語言 Python。工欲善其事,必先利其器。一個好用的 IDE 將會使你的學習事半功倍,下面就是我本人在 Ubuntu 16.04 系統下用 Eclipse+PyDev 配置

Python ide工具哪個python開發學習

北京python 上海python python開發 python編程 python自動化   PyCharm  PyCharm是JetBrains開發的Python IDE。PyCharm用於一般IDE具備的功能,比如,調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、

網上噴子太多,小夥Python開發彈幕轟炸程序怒懟“網絡噴子”

http clas IV 1.3 人生苦短 開發 sts img BE 人生苦短,我用Python,所以讓我們一起來學習Python吧! 互聯網時代,說話沒有了限制,於是網絡上的“噴子”也是越來越多! 動之以情曉之以理都解決不了這麽“噴子”,那麽咱們就以其人之道還治

Windows系統下Eclipse搭建Python開發環境

acl ora .com sdn down win ava ecp http 參考網站: https://blog.csdn.net/zhangphil/article/details/78962159 1、先安裝JDK ,參考網站:https://www.cnblog

20171231 Ubuntu+Anaconda+VSCode配置多Python開發環境

寫下題目再看時間,已經是2017年的最後一天了。昨晚的通宵弄得整個人很憔悴,生命在於折騰,而我已經不再年輕。網上在晒關於回憶18歲照片相關的東西,而我,而我,而我永遠保持著18歲的容顏……^^ 參考: stackflow解決方案 晚上回來又開始折騰Ubuntu。我用Ananco

華為手機有什麼的備忘錄軟體?

雖然華為手機的備忘錄能夠對備忘內容分類管理、設定定時提醒、也能把手機備忘錄的內容同步到電腦端以及華為品牌不同型號的手機上,但小編還是覺得,華為手機其實還有更加專業好用的備忘錄軟體——敬業籤。 一、華為手機備忘錄雖然可以雲同步到電腦端、其他的華為手機上。但是如果使用者想要更換為其他牌子的手

安卓手機有什麼的日程安排管理軟體?

安卓手機上有什麼簡單好用的日程安排管理軟體? 在百度知道上有一個於此相關的問題,題主的要求十分明確,在這篇文章中,小編不妨以圖中的問題為基準,為大家介紹一款簡單好用的手機日程安排管理軟體。 1.分類管理待辦任務的日程管理軟體 敬業籤雲便籤是一款專為商務辦公族設計的桌面提醒便

C語言回撥函式熟練—使用方法(構建程式框架方便

通俗點不行嗎?啊,不行嗎?老外把國人玩的都不是人了。國人還自己玩自己。非把一個簡單的東西複雜化。叫那麼難理解!!窩裡鬥。。。。。。典型!!!!!!!! 不說那麼複雜的,誰是狗屎,豬屎。就說怎麼用回撥。使用步驟: 1.寫一個函式A,A裡面有一個引數是個指標函式 比如: int shao(in

在64位的ubuntu 14.04 開展32位Qt 程式開發環境配置(pro檔案中增加 QMAKE_CXXFLAGS += -m32 命令)

為了能中一個系統上開發64或32位C++程式,費了些周折,現在終於能夠開始幹過了。在此記錄此時針對Q5.4版本的32位開發環境配置過程。 1. 下載Qt 5.4 的32位版本,進行安裝,安裝過程中會發現一些32位的庫沒有安裝,根據提示的錯誤逐個安裝上即可。 2. 開啟一個SampleCode 中的cube

Python開發一個只屬於你的音樂播放器

前言 很多人都喜歡聽歌,如果你喜歡的人,用你開發的軟體聽著小情歌,心裡豈不是美滋滋。 Python爬取網易雲歌單音樂+Python開發音樂播放器,兩者結合那豈不就是一個新的網易雲音樂播放器了。 本人對於Python學習建立了一個小小的學習圈子,為各位提供了一個平臺,大家一起來討論

python安裝】Windows安裝和建立python開發環境

1. 在 windows10 上安裝python開發環境 Linux和Mac OS都自帶python環境,但是Windows沒有,需要自行安裝。 第1步:訪問 python官網,下載Windows平臺下的安裝包 選擇下載3.X的版本,我選擇的是3.6.6的版本 雙擊下載完的檔案python-3.6.6-

Python開發PDF編輯器,實現PDF頁面提取,頁面合併與替換

大多數PDF軟體閱讀服務是免費的,但是如果你想編輯一個PDF文件,比如從一個PDF文件中提取指定頁面,合併多個PDF頁面或者實現PDF頁面的替換,你一般需要購買收費軟體才可以。這當然難不倒程式設計師們,尤其Python程式設計師們。今天小編我就帶你利用Django+PyPDF2開發一個比較實用的小A

ubuntu部署Java、Python開發環境

要部署Java開發環境首先就要安裝JDK。 一、安裝JDK8 1. 下載 jdk-8u172-linux-x64.tar.gz 到 /usr/java8/ 目錄下; 2. tar  -zxvf  jdk-8u172-linux-x64.tar.gz 3. ln&

隨便Python開發了一款關於香菸的專案,沒想到就拿到了五萬報酬

需求 胖子老闆:太多香菸了,幫我開發一個管理系統用用吧。 肥仔白: 好吧,看在天天在這裡買檳榔的份上。     1. 程式啟動,顯示胖子老闆香菸管理系統歡迎介面,並顯示功能選單 ****************************

在VS Code搭建Python開發環境

1、下載安裝 python https://www.python.org/downloads/windows/ web-based installer 線上安裝 executable