成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

前言

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

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

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

先來個大致的效果圖吧:   

 正文

終端窗口管理工具Tmux

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

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

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

修改快捷鍵前綴

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

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

修改分屏快捷鍵

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

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

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

  • <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四個同Vim中光標(biāo)移動一樣的四個鍵上同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ū)⒋笮「`活的移動,我將鼠標(biāo)控制打開,這樣就能通過鼠標(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í)慣來設(shè)置,這里僅僅給出參考。這樣我們將多窗口終端的控制玩弄于手掌之中啦。   

 

Vim配置

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

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

關(guān)于Vim安裝

這里主要說一下在Mac上的Vim安裝,Vim的官網(wǎng)以及YouCompleteMe的README都有推薦使用MacVim, 但是如果我們并不想在使用Vim的時候還打開新的窗口而是直接在終端使用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'  

自動給打開的文件添加頭部

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

  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 

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

安裝插件管理器Vundle

如果要安裝插件,必須要有個方便的插件管理器,Vim的插件管理器有很多,這里我使用了Vundle,它的全稱是Vim Bundle,可以讓我們輕松的安裝、更新、搜索和清理Vim插件。Vundle本身是一個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便會自動下載并安裝好插件,我們直接作為伸手黨使用就好啦.   

 

自動補(bǔ)全神器YouCompleteMe

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

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

具體的安裝請參考YCM的安裝說明: 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)行配置外,還有一個Python的配置文件.ycm_extra_conf.py,在里面我們可以設(shè)置相應(yīng)的編譯選項(xiàng),比如編譯參數(shù),頭文件和庫文件的地址等等,這樣我們在編寫C/C++等的時候ycm會找到相應(yīng)的頭文件和庫文件進(jìn)行編譯并給出相應(yīng)的提示。這個文件需要根據(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的時候你一定需要一款幫助你顯示縮進(jìn)的插件,indentLine就是一款提供縮指示線的插件,有純文字實(shí)現(xiàn),有了他在判斷Python代碼塊的時候就方便了許多。

插件地址: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 

效果: 

 

 

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

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

效果如下圖:   

 

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

使用Pylint來幫助我們進(jìn)行Python語法檢測

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

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

 

 

 

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

syntastic的安裝可以直接通過Vundle來進(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'] }  

這里主要涉及兩個部分的配置,

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

 

 

 

樹形目錄方便文件查看

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

  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的功能,可以直接通過Vundle安裝,在配置文件中將其映射到功能鍵上便可以快速啟動搜索,支持模糊匹配。

  1. map <F3> :CtrlP<CR>  

 

 

 

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

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

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

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

  1. map <F2> :TagbarToggle<CR> 

效果如下: 

 

 

 

其他插件

Vim 的插件很豐富,這里我就不再一一贅述了,希望這些強(qiáng)大的工具能讓我們在終端中更優(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' 

 

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

總結(jié)

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

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

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

2020-04-10 10:22:12

Java判空編程語言

2020-09-25 11:30:20

Java判空代碼

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測試

2021-03-24 10:20:50

Fonts前端代碼

2024-08-29 08:07:59

GoAPI開發(fā)

2023-03-04 13:32:35

Linux創(chuàng)建目錄

2024-11-13 16:37:00

Java線程池

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序列化

2021-10-26 10:28:41

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

2019-05-23 10:11:39

Python編程語言singledispa

2024-08-12 08:15:46

2025-01-09 10:32:05

2021-01-04 09:12:31

集合變量
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 久久久久久免费精品一区二区三区 | 精品国产一区二区三区在线观看 | 亚洲欧美日韩精品久久亚洲区 | 成人妇女免费播放久久久 | 一区二区在线 | 日韩一级精品视频在线观看 | 国产精品久久久久久久久久久久 | 天天草天天干 | 久久久久久一区 | 欧美日韩高清免费 | 国产精品18久久久久久白浆动漫 | 欧美极品在线视频 | a视频在线观看 | 欧美一区二区三区免费在线观看 | 日韩免费看片 | 精品久久久一区 | 黄色在线网站 | 欧美一级免费片 | 久久性色| 日本精品一区二区在线观看 | 午夜成人免费视频 | 国产日韩欧美在线观看 | 羞羞视频网页 | 日韩精品一区二区三区中文在线 | 91视频播放 | 亚洲自拍偷拍免费视频 | av在线伊人 | 欧美亚洲视频 | 国产成人麻豆免费观看 | 日本成人中文字幕在线观看 | 精品毛片 | 综合久久久久久久 | 国产乱码精品1区2区3区 | 日日草夜夜草 | 欧美激情久久久 | 四虎影院久久 | 新91视频网 | 日日夜夜精品免费视频 | 久久99久久98精品免观看软件 | 在线国产一区二区三区 | 伊人久久麻豆 |