1. 程式人生 > >一些Linux工具

一些Linux工具

因為筆者本科是學電子的,所以大概去年的這個時候,我還對Linux一點兒也不瞭解,我一直以為作業系統就是Windows那樣的,寫程式就該是用VS那樣的IDE。所以,剛接觸Linux的時候我極端不適應,我可以說是很排斥用Linux,我當時很贊成曾經看到的一篇文章:使用Linux的程式設計師都是受虐狂。尤其是用shell,這怎麼用啊?難道操作電腦不該是點選滑鼠嗎?還有寫程式碼,vim更是變態啊,竟然有人用這種東西,簡直無法理解。雖然Linux下現在也有了圖形介面,但是跟Windows比這是渣渣好嗎……

後來,因為一些原因不得不用Linux,慢慢的,從開始連cd命令都不知道,後來慢慢地適應了Linux,開始習慣用命令列操作,尤其是在無法用GUI的情況下,慢慢體會到shell的強大。當然了,要想適應Linux還是需要一段時間的,尤其是從沒接觸過Linux的使用者從Windows轉過來。不過,經過一段時間的使用我覺得程式設計師是會喜歡上Linux的。就像《The Unix-Haters Handbook》裡的一句話:“The fundamental difference between Unix and the Macintosh operating system is that Unix was designed to please programmers

, whereas the Mac was designed to please users. (Windows, on the other hand, was designed to please accountants.”Linux就是一種類Unix的作業系統,Linux之所以說是為程式設計師設計的是因為它非常靈活,你可以用它實現任何東西,如果你不爽某個工具,你可以把它換掉,自己造一個換上去。對於具有Geek精神的程式設計師來說,他們很樂意開發一些輪子來方便自己也造福後來者。與此同時,因為這些好用而略顯雜亂的工具的存在,使得Linux的使用學習成本也更大一些,可以選擇的更多人越不知道怎麼選擇。

所謂工欲善其事,必先利其器。所以,借鑑別人的經驗挑選一些好用的工具是很重要的,下面是一些我覺得好用的工具,雖然很多我用得還不是很熟,而且很多強大的功能我還沒有用到,但是還是記錄下來,為了方便自己(因為自己如果換一個環境就要重新配一遍,還要翻別人的部落格,挺麻煩的),所以按照我的使用習慣記錄下來。另外,如果別人覺得有用的話也可以略微看一下,以後如果遇到好用的工具我還會記錄到這篇部落格裡。

1.htop

htop 是Linux系統中的一個互動的程序檢視器,一個文字模式的應用程式(在控制檯或者X終端中),需要ncurses。

與Linux傳統的top相比,htop更加人性化。它可讓使用者互動式操作,支援顏色主題,可橫向或縱向滾動瀏覽程序列表,並支援滑鼠操作。

與top相比,htop有以下優點:

可以橫向或縱向滾動瀏覽程序列表,以便看到所有的程序和完整的命令列。htop還可以檢視cpu佔用率之類的詳細資訊,總之我覺得htop比top好用。
htop的介面如下:

這裡寫圖片描述

htop的安裝比較簡單,直接可以用apt-get安裝:

sudo apt-get install htop

2.zsh

Ubuntu預設的shell是bash,但是zsh是一個更加強大的shell,但是因為配置太複雜,雖然很好用但是用的人不多,直到有一個叫做oh-my-zsh的開源專案,它把使用zsh的難度降了下來,接下來我們看看zsh怎麼安裝和配置。
Mac預設直接有zsh的,但是Ubuntu預設沒有安裝zsh,需要我們自己安裝:

sudo apt-get install zsh

然後安裝oh-my-zsh:

git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

更改預設shell:

chsh -s /bin/zsh

然後退出重新進入shell,就可以使用zsh。zsh的補全功能非常強大,切換目錄時甚至可以不用cd直接輸入想要切換的目錄,當然了zsh的功能遠不止此,具體使用可以參閱終極 Shell,裡面有更詳細的zsh功能介紹。

3.tmux

tmux是一個優秀的終端複用軟體,即使非正常掉線,也能保證當前的任務執行,這一點對於 遠端SSH訪問特別有用,網路不好的情況下仍然能保證工作現場不丟失!此外,tmux完全使用鍵盤 控制視窗,實現視窗的切換功能。來看一個tmux的使用截圖:

這裡寫圖片描述

這裡,我把視窗切分為三個視窗,一個開啟vim,其他的進行瀏覽檔案,執行除錯程式之用。當然了,如果你樂意,你可以把視窗切分成任意個,只要你螢幕足夠大。在沒用tmux之前我一直是在圖形介面上開一堆終端視窗,然後等到使用時半天找,tmux極大地方便了我們使用shell。
tmux另外一個非常讚的功能是儲存工作現場,如果你用shh連線伺服器工作,網路不是那麼好,有時會掉線,掉線之後之前進行的工作可能就丟失了,有了tmux之後你就不用擔心了,掉線之後tmux依然在後臺執行,重新連線之後你只要執行tmux attach,工作現場就回來了。
當然,tmux還有其他一些功能,同樣的你也可以個性化定製自己使用tmux的習慣,只需要配置~/.tmux.conf檔案,具體的使用方法請參閱tmux的使用方法和個性化配置

4.vim外掛

在Linux下寫程式,尤其是在沒有圖形介面時,一般我們使用vim寫程式,當然了Emacs也是非常優秀的編輯器,這個看個人習慣選擇自己喜歡的編輯器。vim是一個比較經典的編輯器(這裡強烈推薦一個vim教程:簡明 Vim 練級攻略),但是如果不對vim進行一些配置的話,可能會覺得vim用起來很不方便,很反人類。好在有很多大神為大家制作好用的輪子(也就是各種外掛),把這些外掛用上之後,vim一點兒也不比IDE差,先上一個vim的配置圖:
這裡寫圖片描述

這個配置可以在這裡找到。更強大的配置還有spf13-vim
這些配置很強大,外掛也很多,但是有些我並不需要,我最需要的是以下四個外掛:vundle,NERD Tree,YouCompleteMe,Vim Powerline。

vundle

vundle是一個vim外掛管理工具,它能夠搜尋、安裝、更新和移除vim外掛,再也不需要手動管理vim外掛。
安裝vundle:

git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

在.vimrc裡面加上如下配置:

set nocompatible              " be iMproved, required
filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
"call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html
Plugin 'L9'
" Git plugin not hosted on GitHub
Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
Plugin 'file:///home/gmarik/path/to/plugin'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" Install L9 and avoid a Naming conflict if you've already installed a
" different version somewhere else.
Plugin 'ascenator/L9', {'name': 'newL9'}

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList       - lists configured plugins
" :PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line

當然,以上Plugin後面不是必須的,這是舉例說明使用不同型別的外掛如何新增,你可以選擇你需要的外掛加到上面這些行裡面。配置好.vimrc檔案之後,開啟vim,執行:BundleInstall或在shell中直接執行vim +BundleInstall +qall,就開始安裝你的各種外掛了:

這裡寫圖片描述

NERD Tree

NERD Tree是一個樹形目錄外掛,方便瀏覽當前目錄有哪些目錄和檔案。

這裡寫圖片描述

我在~/.vimrc檔案中配置NERD Tree,設定一個啟用或禁用NERD Tree的鍵對映nmap <F5> :NERDTreeToggle<cr>,這樣就可以在vim裡點選F5開啟或者關閉NERD Tree了。

YouCompleteMe

用過VS的大家可能都對VS的程式碼補全功能記憶深刻,其實vim下一樣可以進行程式碼補全,YouCompleteMe就是這樣一個外掛。YouCompleteMe是一個快速、支援模糊匹配的vim程式碼補全引擎。

這裡寫圖片描述

YouCompleteMe的安裝稍微麻煩一些,它需要在vundle外掛執行外掛安裝之後對YouCompleteMe進行編譯,執行以下命令:

cd ~/.vim/bundle/YouCompleteMe
./install.py

當然,對於不同的的語言支援需要不同的方法,具體可以參考github

Vim Powerline

另一個外掛是Vim Powerline,Vim Powerline是一個顯示vim狀態列外掛,它能夠顯示vim模式、操作環境、編碼格式、行數/列數等資訊。

這裡寫圖片描述

暫時我覺得好用的工具就是這些,以後覺得別的工具還會在這裡更新,最後感謝那些造這些輪子並開源貢獻給大家的那些大神們,如果你也用了這些工具,不妨在github上給他們點個star,算是對他們的感謝。

5.參考資料