自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在終端中優(yōu)雅地編寫Python

開發(fā) 后端
本文是有關(guān)配置的文章,并不對(duì)Vim的核心技巧進(jìn)行說(shuō)明,有需要的童鞋可以參考文檔和相關(guān)書籍。這里主要配合tmux和vim可以更有優(yōu)雅的幫助我們?cè)诮K端中進(jìn)行Python編程。

前言

最早我也只是在服務(wù)器上編輯文件的時(shí)候用用vim來(lái)改改程序,并沒有把vim當(dāng)做自己的主力編輯器。但是偶然的一次機(jī)會(huì)需要改一個(gè)奇葩的輸入文件的格式,用了下Vim的宏錄制,嘗到了甜頭,于是后面就開始用Vim來(lái)寫程序了,雖然使用初期有些阻力,但時(shí)間久了就會(huì)發(fā)現(xiàn),雙手再也不用離開鍵盤,即使使用sublime這樣的編輯器我也要改成使用Vim模式,Vim真的能讓自己一思維的速度編輯文本(對(duì)我來(lái)說(shuō)就是寫程序了)。

正好最近換了新的電腦,需要在新電腦上配置一下,就干脆把一些配置相關(guān)的東東記錄下來(lái)吧,相關(guān)的配置文件我都放在了github(https://github.com/PytLab/dotfiles) 上并寫了相應(yīng)的安裝和卸載腳本,給有需要的同學(xué)做個(gè)參考吧。

本文是有關(guān)配置的文章,并不對(duì)Vim的核心技巧進(jìn)行說(shuō)明,有需要的童鞋可以參考文檔和相關(guān)書籍。這里主要配合tmux和vim可以更有優(yōu)雅的幫助我們?cè)诮K端中進(jìn)行Python編程。

先來(lái)個(gè)大致的效果圖吧:   

 正文

終端窗口管理工具Tmux

首先還是需要配置下tmux,它除了可以進(jìn)行多window多panel以外最主要的是他提供了窗口組隨時(shí)存儲(chǔ)和恢復(fù)的功能。也可以幫助我們?cè)谝粋€(gè)窗口中使用多個(gè)panel一邊使用vim一邊在ipython中進(jìn)行測(cè)試。

tmux的配置文件是當(dāng)前用戶主目錄下的.tmux.conf文件,啟動(dòng)tmux時(shí)會(huì)自動(dòng)加載,也可以通過(guò)在tmux中進(jìn)行加載例如<prefix> : source ~/.tmux.conf。

完整的配置文件參見: https://github.com/PytLab/dotfiles/blob/master/.tmux.conf

修改快捷鍵前綴

關(guān)于tmux的配置比較簡(jiǎn)單,我先把快捷鍵的前綴從Ctrl-b換成了Ctrl-l,主要是根據(jù)個(gè)人喜好,因?yàn)檫@樣左手Ctrl右手l個(gè)人覺得比較方便。

  1. Set tmux prefix to <C-a> 
  2.  
  3. set -g prefix C-l 
  4.  
  5. unbind C-b  

修改分屏快捷鍵

tmux的分屏快捷鍵默認(rèn)值為:

  • <prefix> + " 水平分屏
  • <prefix> + % 垂直分屏

感覺好奇怪,我就改成了相對(duì)直觀的方式:

  • <prefix> + |, 類似在屏幕上加一條處置線
  • <prefix> + -, 類似在屏幕上加一條水平線
  1. # Split pane. 
  2.  
  3. unbind '"' 
  4.  
  5. bind | splitw -h 
  6.  
  7. unbind '%' 
  8.  
  9. bind - splitw -v  

將復(fù)制模式改為vim的復(fù)制模式

由于使用vim習(xí)慣了而且不想在去碰鼠標(biāo),tmux也是可以將復(fù)制模式修改成同Vim相同的方式,只是操作的前綴不同罷了。

  1. # Copy mode 
  2.  
  3. # copy-mode to vi mode 
  4.  
  5. setw -g mode-keys vi 
  6.  
  7. # enter copy mode 
  8.  
  9. bind Escape copy-mode 
  10.  
  11. # paste buffer 
  12.  
  13. bind C-p pasteb 
  14.  
  15. select (v) 
  16.  
  17. bind -t vi-copy v begin-selection 
  18.  
  19. # copy (y) 
  20.  
  21. bind -t vi-copy y copy-selection  

綁定面板切換快捷鍵

這里面板切換上,我將面板的上下左右方向綁定到了kjhl四個(gè)同Vim中光標(biāo)移動(dòng)一樣的四個(gè)鍵上同Vim保持一致,這樣就不需要在記住新的方向鍵了。

  1. # Map panel switch. 
  2.  
  3. # Up 
  4.  
  5. bind-key k select-pane -U 
  6.  
  7. # Down 
  8.  
  9. bind-key j select-pane -D 
  10.  
  11. left 
  12.  
  13. bind-key h select-pane -L 
  14.  
  15. right 
  16.  
  17. bind-key l select-pane -R  

修改面板大小的快捷鍵

這里為了能夠?qū)⒋笮「`活的移動(dòng),我將鼠標(biāo)控制打開,這樣就能通過(guò)鼠標(biāo)進(jìn)行方便精準(zhǔn)的面板大小調(diào)整了。

  1. # Resize panel size
  2.  
  3. bind < resize-pane -L 10 
  4.  
  5. bind > resize-pane -R 10 
  6.  
  7. bind _ resize-pane -D 10 
  8.  
  9. bind + resize-pane -U 10 
  10.  
  11. # Use mouse to resize panel. 
  12.  
  13. set -g mouse-utf8 on  

配置當(dāng)然要根據(jù)自己的使用習(xí)慣來(lái)設(shè)置,這里僅僅給出參考。這樣我們將多窗口終端的控制玩弄于手掌之中啦。   

 

Vim配置

解決了終端窗口問(wèn)題,我們開始大刀闊斧的搗鼓編輯器啦,這里我對(duì)我使用的幾個(gè)Vim插件進(jìn)行整理,以及幾個(gè)基本配置進(jìn)行下說(shuō)明。

完整的vim配置文件參見: https://github.com/PytLab/dotfiles/blob/master/.vimrc

關(guān)于Vim安裝

這里主要說(shuō)一下在Mac上的Vim安裝,Vim的官網(wǎng)以及YouCompleteMe的README都有推薦使用MacVim, 但是如果我們并不想在使用Vim的時(shí)候還打開新的窗口而是直接在終端使用Vim的話需要在安裝MacVim后做一點(diǎn)小處理。

1. 安裝MacVim

  1. brew cask install macvim 

2. 使用MacVim的mvim腳本覆蓋掉系統(tǒng)自帶的vim

  1. alias vim='/usr/local/bin/mvim -v' 
  2.  
  3. alias vi='vim'  

自動(dòng)給打開的文件添加頭部

例如我們編寫Python腳本的時(shí)候經(jīng)常會(huì)在文件開頭添加執(zhí)行文件的Python路徑以及文件的編碼方式,我們可以通過(guò)在Vim的配置文件中添加一個(gè)函數(shù),并讓他在打開一個(gè)新的緩沖區(qū)的時(shí)候自動(dòng)添加到頭部。

  1. " Auto add head info 
  2.  
  3. " .py file into add header 
  4.  
  5. function HeaderPython() 
  6.  
  7.     call setline(1, "#!/usr/bin/env python"
  8.  
  9.     call append(1, "# -*- coding: utf-8 -*-"
  10.  
  11.     normal G 
  12.  
  13.     normal o 
  14.  
  15. endf 
  16.  
  17. autocmd bufnewfile *.py call HeaderPython()  

這樣當(dāng)我們使用

  1. vi new.py 

的時(shí)候便會(huì)匹配到文件后綴并執(zhí)行頭部添加函數(shù)進(jìn)行內(nèi)容添加, 其他語(yǔ)言的腳本例如bash、perl等都是類似的方式。

安裝插件管理器Vundle

如果要安裝插件,必須要有個(gè)方便的插件管理器,Vim的插件管理器有很多,這里我使用了Vundle,它的全稱是Vim Bundle,可以讓我們輕松的安裝、更新、搜索和清理Vim插件。Vundle本身是一個(gè)Vim插件,所以使我們安裝所有插件中最早需要安裝的插件。

Vundle的安裝方式這里就不詳細(xì)介紹了,可以參見:https://github.com/VundleVim/Vundle.vim

安裝好后我們需要修改下.vimrc文件:

  1. set nocompatible 
  2.  
  3. filetype off 
  4.  
  5. set rtp+=~/.vim/bundle/Vundle.vim 
  6.  
  7. call vundle#begin() 
  8.  
  9. " 在這里添加你想安裝的Vim插件 
  10.  
  11. call vundle#end()            " required 
  12.  
  13. filetype plugin indent on    " required  

這樣如果我們想安裝插件的話我們只需要在call vundle#begin() 和 call vundle#end()之間直接寫入就好了,非常方便,寫好后我們直接運(yùn)行

  1. vim +PluginInstall +qall 

vundle便會(huì)自動(dòng)下載并安裝好插件,我們直接作為伸手黨使用就好啦.   

 

自動(dòng)補(bǔ)全神器YouCompleteMe

YouCompleteMe是一個(gè)非常強(qiáng)大的Vim自動(dòng)補(bǔ)全插件,他的特別之處就在于他并不是像vim自帶的Ctrl-x和Ctrl-n那樣基于文本進(jìn)行補(bǔ)全,而是基于語(yǔ)義,通過(guò)分析源文件進(jìn)行語(yǔ)法分析,這得益于強(qiáng)大的clang/llvm。同時(shí)YCM也整合了多種插件,其中也包含語(yǔ)法糾錯(cuò),類似Syntastic的功能,但是只能進(jìn)行C/C++/Objective-C的語(yǔ)法檢測(cè),對(duì)于Python的話我們后面需要安裝Syntastic插件。

YCM雖然強(qiáng)大,但是安裝卻稍微麻煩些,首先他文件比較大,另外需要自己進(jìn)行編譯(NeoVundle插件管理器貌似可以直接幫你自動(dòng)編譯), 不過(guò)無(wú)論我之前在ubuntu還是現(xiàn)在的mac上,至少我還是沒有遇到什么很大的問(wèn)題的。

具體的安裝請(qǐng)參考YCM的安裝說(shuō)明: https://github.com/Valloric/YouCompleteMe#installation

YCM的相關(guān)設(shè)置:

  1. " Plugin YCM settings. 
  2.  
  3. set completeopt=longest,menu 
  4.  
  5. let g:ycm_min_num_of_chars_for_completion=2 
  6.  
  7. let g:ycm_cache_omnifunc=0 
  8.  
  9. let g:ycm_seed_identifiers_with_syntax=1 
  10.  
  11. let g:ycm_complete_in_comments = 1 
  12.  
  13. let g:ycm_complete_in_strings = 1 
  14.  
  15. let g:ycm_collect_identifiers_from_comments_and_strings = 0 
  16.  
  17. let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py' 
  18.  
  19. let g:syntastic_check_on_open=1 
  20.  
  21. let g:syntastic_enable_signs=1 
  22.  
  23. let g:syntastic_cpp_check_header = 1 
  24.  
  25. let g:syntastic_cpp_remove_include_errors = 1  

YCM除了在.vimrc中進(jìn)行配置外,還有一個(gè)Python的配置文件.ycm_extra_conf.py,在里面我們可以設(shè)置相應(yīng)的編譯選項(xiàng),比如編譯參數(shù),頭文件和庫(kù)文件的地址等等,這樣我們?cè)诰帉慍/C++等的時(shí)候ycm會(huì)找到相應(yīng)的頭文件和庫(kù)文件進(jìn)行編譯并給出相應(yīng)的提示。這個(gè)文件需要根據(jù)自己的項(xiàng)目根據(jù)自己的文件位置進(jìn)行自定義。

我的.ycm_extra_conf.py的完整版:https://github.com/PytLab/dotfiles/blob/master/.ycm_extra_conf.py  

 

為Python的縮進(jìn)助力

寫Python的時(shí)候你一定需要一款幫助你顯示縮進(jìn)的插件,indentLine就是一款提供縮指示線的插件,有純文字實(shí)現(xiàn),有了他在判斷Python代碼塊的時(shí)候就方便了許多。

插件地址:https://github.com/Yggdroot/indentLine

我相應(yīng)的配置:

  1. " Plugin indentLine settings. 
  2.  
  3. let g:indentLine_char = "┆" 
  4.  
  5. let g:indentLine_enabled = 1 
  6.  
  7. let g:autopep8_disable_show_diff=1 

效果: 

 

 

對(duì)打開的多個(gè)文件進(jìn)行操作

當(dāng)我們寫代碼的時(shí)候不可能每次只打開一個(gè)文件,而是打開很多個(gè),而且要經(jīng)常在這之間來(lái)回切換。vim提供了自己的buffer管理工具,但是并不直觀,這時(shí)可以使用minibufexplorer插件,這樣便可以像切換tab一樣在Vim中進(jìn)行buffer的切換來(lái)同時(shí)編輯多個(gè)文件。

效果如下圖:   

 

我們可以通過(guò)根據(jù)前面的buffer序號(hào)來(lái)使用Ctrl+w :b buffer-number來(lái)快速切換。

使用Pylint來(lái)幫助我們進(jìn)行Python語(yǔ)法檢測(cè)

首先Pylint是一個(gè)代碼分析工具,它能夠分析Python中的代碼錯(cuò)誤,查找不符合風(fēng)格標(biāo)準(zhǔn)(默認(rèn)PEP8)和有潛在問(wèn)題的代碼,如果單獨(dú)使用的話,他還可以為我們的Python代碼進(jìn)行檢測(cè)并生成一份報(bào)告,并為你的代碼進(jìn)行評(píng)分,像這樣:

  1. pylint incar.py --output-format=html > score.html  

 

 

 

我們可以利用syntastic插件來(lái)使用pylint幫助我們進(jìn)行語(yǔ)法檢查。

syntastic的安裝可以直接通過(guò)Vundle來(lái)進(jìn)行方便的安裝,安裝后我們需要進(jìn)行下配置:

  1. " Plugin syntastic settings. 
  2.  
  3. set statusline+=%#warningmsg# 
  4.  
  5. set statusline+=%{SyntasticStatuslineFlag()} 
  6.  
  7. set statusline+=%* 
  8.  
  9. let g:syntastic_always_populate_loc_list = 1 
  10.  
  11. let g:syntastic_auto_loc_list = 1 
  12.  
  13. let g:syntastic_check_on_open = 0 
  14.  
  15. let g:syntastic_check_on_wq = 0 
  16.  
  17. let g:syntastic_mode_map = {'mode''passive''active_filetypes': [], 'passive_filetypes': []} 
  18.  
  19. " Use pylint to check python files. 
  20.  
  21. let g:syntastic_python_checkers = ['pylint'
  22.  
  23. map <F5> :SyntasticToggleMode<CR> :SyntasticCheck<CR> 
  24.  
  25. Ignore warnings about newlines trailing. 
  26.  
  27. let g:syntastic_quiet_messages = { 'regex': ['trailing-newlines''invalid-name'
  28.  
  29.     \'too-many-lines''too-many-instance-attributes''too-many-public-methods'
  30.  
  31.     \'too-many-locals''too-many-branches'] }  

這里主要涉及兩個(gè)部分的配置,

  1. 一個(gè)是將檢測(cè)模式改成被動(dòng),由于Syntastic檢測(cè)并不是異步進(jìn)行的,如果每次保存的時(shí)候都進(jìn)行檢測(cè),都會(huì)卡在那里等一會(huì),如果我的代碼比較大的話會(huì)更久,所以我們?cè)谙胍獧z測(cè)的時(shí)候在檢測(cè)。
  2. 忽略掉一些我們不想看到的warnign,pylint完全按照PEP8來(lái)的話,我的代碼經(jīng)常會(huì)各種提示的warning,比如我喜歡在代碼最后一行留個(gè)空行也會(huì)有提示,因此我就通過(guò)正則表達(dá)式將次信息過(guò)濾掉,這時(shí)候就需要設(shè)置syntastic_quiet_message變量了。 

 

 

 

樹形目錄方便文件查看

像其他IDE一樣,左邊有樹形目錄的話,所有文件夾和文件都一目了然那一定是極好的,所以NERDTree插件就是這么一款工具,他可以直接通過(guò)Vundle進(jìn)行安裝,然后在配置文件中設(shè)置啟動(dòng)的快捷鍵以及窗口大小和忽略顯示的文件等等。

  1. " Plugin nerdtree settings. 
  2.  
  3. map <F2> :NERDTreeToggle<CR> 
  4.  
  5. let NERDTreeChDirMode=1 
  6.  
  7. let NERDTreeShowBookmarks=1 
  8.  
  9. let NERDTreeWinSize=25 
  10.  
  11. let NERDTreeShowHidden=1 
  12.  
  13. let NERDTreeIgnore=['\~$''\.pyc$''\.swp$''\.git$' 

 

 

 

在項(xiàng)目中迅速定位文件

ctrlp.vim 顧名思義,就是提供了同Sublime的Ctrl+p的功能,可以直接通過(guò)Vundle安裝,在配置文件中將其映射到功能鍵上便可以快速啟動(dòng)搜索,支持模糊匹配。

  1. map <F3> :CtrlP<CR>  

 

 

 

顯示文件中的類、函數(shù)、變量

tagbar插件可以幫助我們顯示當(dāng)前文件中的類、函數(shù)、變量等,方便我們閱讀代碼,它是基于ctags的,支持很多語(yǔ)言,具體詳見:https://github.com/majutsushi/tagbar/wiki

安裝好ctags之后可以直接從Vundle中進(jìn)行安裝。

在配置文件中可以將其綁定到快捷鍵上方便快速啟動(dòng)。

  1. map <F2> :TagbarToggle<CR> 

效果如下: 

 

 

 

其他插件

Vim 的插件很豐富,這里我就不再一一贅述了,希望這些強(qiáng)大的工具能讓我們?cè)诮K端中更優(yōu)雅的編寫Python(不限于Python啦),有關(guān)我使用的vim插件都在我的.vimrc中,有興趣的童鞋可以搜索相應(yīng)的插件名稱進(jìn)行查看。

  1. " Plugins. 
  2.  
  3. Plugin 'VundleVim/Vundle.vim' 
  4.  
  5. Plugin 'Valloric/YouCompleteMe' 
  6.  
  7. Plugin 'nathanaelkane/vim-indent-guides' 
  8.  
  9. Plugin 'fholgado/minibufexpl.vim' 
  10.  
  11. Plugin 'Yggdroot/indentLine' 
  12.  
  13. Plugin 'scrooloose/nerdtree' 
  14.  
  15. Plugin 'ctrlpvim/ctrlp.vim' 
  16.  
  17. Plugin 'majutsushi/tagbar' 
  18.  
  19. Plugin 'dyng/ctrlsf.vim' 
  20.  
  21. Plugin 'vim-airline/vim-airline' 
  22.  
  23. Plugin 'vim-airline/vim-airline-themes' 
  24.  
  25. Plugin 'MattesGroeger/vim-bookmarks' 
  26.  
  27. Plugin 'vim-syntastic/syntastic' 

 

同時(shí)為了方便自己我也寫了相應(yīng)的安裝和卸載腳本,方便大家參考,github地址:https://github.com/PytLab/dotfiles

總結(jié)

本文主要簡(jiǎn)單介紹下本人平時(shí)編程中使用tmux,vim等工具的配置,希望能借此幫助大家能更好的在終端中進(jìn)行程序編寫提高工作效率。

最后還是建議配置文件中不要盲目復(fù)制粘貼別人的配置,最好保證里面的配置自己都知道是做什么的,而且是對(duì)自己需要的。 

責(zé)任編輯:龐桂玉 來(lái)源: Python開發(fā)者
相關(guān)推薦

2020-09-25 11:30:20

Java判空代碼

2020-04-10 10:22:12

Java判空編程語(yǔ)言

2024-04-25 16:06:48

2024-07-10 19:06:09

2021-04-12 16:18:24

CPUFetchLinuxCPU

2024-11-21 09:00:00

Python字典代碼

2023-11-22 13:05:12

Pytest測(cè)試

2021-03-24 10:20:50

Fonts前端代碼

2024-08-29 08:07:59

GoAPI開發(fā)

2023-03-04 13:32:35

Linux創(chuàng)建目錄

2020-04-03 13:45:16

刪除Linux垃圾文件

2023-05-12 14:14:00

Java線程中斷

2020-02-24 11:12:01

Linux電腦數(shù)據(jù)

2023-12-20 13:50:00

SpringBootJSON序列化

2024-11-13 16:37:00

Java線程池

2019-05-23 10:11:39

Python編程語(yǔ)言singledispa

2021-10-26 10:28:41

開發(fā)架構(gòu)Kubernetes

2024-06-05 09:17:31

Python數(shù)據(jù)清洗開發(fā)

2024-12-24 08:03:56

2025-01-09 10:32:05

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)