因為筆者本科是學電子的,所以大概去年的這個時候,我還對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安裝:
[code]sudo apt-get install htop
2.zsh
Ubuntu默認的shell是bash,但是zsh是一個更加強大的shell,但是因為配置太復雜,雖然很好用但是用的人不多,直到有一個叫做oh-my-zsh的開源項目,它把使用zsh的難度降了下來,接下來我們看看zsh怎麼安裝和配置。
Mac默認直接有zsh的,但是Ubuntu默認沒有安裝zsh,需要我們自己安裝:
[code]sudo apt-get install zsh
然後安裝oh-my-zsh:
[code]git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
更改默認shell:
[code]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。
vundlevundle是一個vim插件管理工具,它能夠搜索、安裝、更新和移除vim插件,再也不需要手動管理vim插件。
安裝vundle:
[code]git clonehttps://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
在.vimrc裡面加上如下配置:
[code]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 fromhttp://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
,就開始安裝你的各種插件了:
具體使用方法還可以參閱Vim配置、插件和使用技巧。
NERD TreeNERD Tree是一個樹形目錄插件,方便浏覽當前目錄有哪些目錄和文件。
我在~/.vimrc文件中配置NERD Tree,設置一個啟用或禁用NERD Tree的鍵映射
nmap <F5> :NERDTreeToggle<cr>
,這樣就可以在vim裡點擊F5打開或者關閉NERD Tree了。
YouCompleteMe用過VS的大家可能都對VS的代碼補全功能記憶深刻,其實vim下一樣可以進行代碼補全,YouCompleteMe就是這樣一個插件。YouCompleteMe是一個快速、支持模糊匹配的vim代碼補全引擎。
YouCompleteMe的安裝稍微麻煩一些,它需要在vundle插件執行插件安裝之後對YouCompleteMe進行編譯,執行以下命令:
[code]cd ~/.vim/bundle/YouCompleteMe
./install.py
當然,對於不同的的語言支持需要不同的方法,具體可以參考github。
Vim Powerline另一個插件是Vim Powerline,Vim Powerline是一個顯示vim狀態欄插件,它能夠顯示vim模式、操作環境、編碼格式、行數/列數等信息。
暫時我覺得好用的工具就是這些,以後覺得別的工具還會在這裡更新,最後感謝那些造這些輪子並開源貢獻給大家的那些大神們,如果你也用了這些工具,不妨在github上給他們點個star,算是對他們的感謝。
5.參考資料
1.終極 Shell
2.tmux的使用方法和個性化配置
3.Vim配置、插件和使用技巧
4.spf13/spf13-vim
5.VundleVim/Vundle.vim
6.Valloric/YouCompleteMe