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

在終端中優雅地編寫Python

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

前言

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

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

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

先來個大致的效果圖吧:   

 正文

終端窗口管理工具Tmux

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

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

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

修改快捷鍵前綴

關于tmux的配置比較簡單,我先把快捷鍵的前綴從Ctrl-b換成了Ctrl-l,主要是根據個人喜好,因為這樣左手Ctrl右手l個人覺得比較方便。

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

修改分屏快捷鍵

tmux的分屏快捷鍵默認值為:

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

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

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

將復制模式改為vim的復制模式

由于使用vim習慣了而且不想在去碰鼠標,tmux也是可以將復制模式修改成同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中光標移動一樣的四個鍵上同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  

修改面板大小的快捷鍵

這里為了能夠將大小更靈活的移動,我將鼠標控制打開,這樣就能通過鼠標進行方便精準的面板大小調整了。

  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  

配置當然要根據自己的使用習慣來設置,這里僅僅給出參考。這樣我們將多窗口終端的控制玩弄于手掌之中啦。   

 

Vim配置

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

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

關于Vim安裝

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

1. 安裝MacVim

  1. brew cask install macvim 

2. 使用MacVim的mvim腳本覆蓋掉系統自帶的vim

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

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

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

  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()  

這樣當我們使用

  1. vi new.py 

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

安裝插件管理器Vundle

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

Vundle的安裝方式這里就不詳細介紹了,可以參見: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()之間直接寫入就好了,非常方便,寫好后我們直接運行

  1. vim +PluginInstall +qall 

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

 

自動補全神器YouCompleteMe

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

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

具體的安裝請參考YCM的安裝說明: https://github.com/Valloric/YouCompleteMe#installation

YCM的相關設置:

  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中進行配置外,還有一個Python的配置文件.ycm_extra_conf.py,在里面我們可以設置相應的編譯選項,比如編譯參數,頭文件和庫文件的地址等等,這樣我們在編寫C/C++等的時候ycm會找到相應的頭文件和庫文件進行編譯并給出相應的提示。這個文件需要根據自己的項目根據自己的文件位置進行自定義。

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

 

為Python的縮進助力

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

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

我相應的配置:

  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 

效果: 

 

 

對打開的多個文件進行操作

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

效果如下圖:   

 

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

使用Pylint來幫助我們進行Python語法檢測

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

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

 

 

 

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

syntastic的安裝可以直接通過Vundle來進行方便的安裝,安裝后我們需要進行下配置:

  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檢測并不是異步進行的,如果每次保存的時候都進行檢測,都會卡在那里等一會,如果我的代碼比較大的話會更久,所以我們在想要檢測的時候在檢測。
  2. 忽略掉一些我們不想看到的warnign,pylint完全按照PEP8來的話,我的代碼經常會各種提示的warning,比如我喜歡在代碼最后一行留個空行也會有提示,因此我就通過正則表達式將次信息過濾掉,這時候就需要設置syntastic_quiet_message變量了。 

 

 

 

樹形目錄方便文件查看

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

  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$' 

 

 

 

在項目中迅速定位文件

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

  1. map <F3> :CtrlP<CR>  

 

 

 

顯示文件中的類、函數、變量

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

安裝好ctags之后可以直接從Vundle中進行安裝。

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

  1. map <F2> :TagbarToggle<CR> 

效果如下: 

 

 

 

其他插件

Vim 的插件很豐富,這里我就不再一一贅述了,希望這些強大的工具能讓我們在終端中更優雅的編寫Python(不限于Python啦),有關我使用的vim插件都在我的.vimrc中,有興趣的童鞋可以搜索相應的插件名稱進行查看。

  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' 

 

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

總結

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

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

責任編輯:龐桂玉 來源: Python開發者
相關推薦

2020-09-25 11:30:20

Java判空代碼

2020-04-10 10:22:12

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開發

2023-03-04 13:32:35

Linux創建目錄

2020-04-03 13:45:16

刪除Linux垃圾文件

2023-05-12 14:14:00

Java線程中斷

2024-11-13 16:37:00

Java線程池

2020-02-24 11:12:01

Linux電腦數據

2023-12-20 13:50:00

SpringBootJSON序列化

2019-05-23 10:11:39

Python編程語言singledispa

2021-10-26 10:28:41

開發架構Kubernetes

2024-08-12 08:15:46

2021-01-04 09:12:31

集合變量

2025-01-09 10:32:05

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产美女精品 | 91精品在线看 | 国产精品一区二区av | av毛片在线播放 | 午夜无码国产理论在线 | 色婷婷婷婷色 | 91精品国产一区二区在线观看 | 欧美精品一二三 | www日韩 | 成人福利视频网站 | 国产成人一区二区三区电影 | 欧美一区二区视频 | 先锋资源网 | 一区二区精品视频 | 在线视频 亚洲 | 成年人精品视频在线观看 | 精品一区二区三区四区在线 | 久久尤物免费一区二区三区 | 日本黄色免费大片 | 国产成人精品一区二三区在线观看 | 国产福利网站 | 伊人久久免费视频 | 国产麻豆乱码精品一区二区三区 | 天天综合网永久 | 国产在线精品一区 | 日韩在线小视频 | 91欧美 | 日韩精品一区二区三区免费观看 | 久久天堂 | 国产视频中文字幕 | 91视频一区二区三区 | 欧美亚洲国产日韩 | 毛片a区| av性色 | 91秦先生艺校小琴 | 九七午夜剧场福利写真 | 成人免费观看男女羞羞视频 | 老司机精品福利视频 | 99热.com| 久久久久国产一区二区三区 | 一级二级三级在线观看 |