活在終端里的每一天

重回ubuntu,這次可以更主動,更成熟的享受全棧linux的工作狀態,用了一段時間來折騰這幾個軟件,小有所成,提筆寫篇文章記錄一下過程. 我的終極目標是,全面啟用VIM的鍵位和操作模式,拔掉鼠標,能像彈鋼琴一樣工作.

為了達到這個目標,我這次主力配置了如下幾個軟件:

  1. 進化版bash--->zsh+oh-my-zsh
  2. bash的殼 ---> tmux
  3. 扔掉unity,改用平鋪式窗口管理器--->awesomewm
  4. 扔掉IDE,改用強大得出乎意料的VIM
  5. 其余還有很多好玩的小軟件,諸如ranger,xclip,scrot,guake等等,有空也寫一下

這一系列下來每個都有自己的配置文件,最現代化的辦法應該是搞一個庫專門來維護他們,以后升級電腦,換電腦直接從云端拉下來sh一下,一個一毛一樣的世界就會重現在你面前,這幾個東西我選擇的標準基本都是1能否高度定制化(插件化,開源化)2能否配置使用vim模式的鍵位

個人的配置庫放在coding上,國內速度就是飛快

1. 扔掉原裝的bash,換上ZSH

用過zsh后你就不會對系統中自帶的終端有任何的留戀。沒有見過zsh之前,我對linux的終端印象總是停留在rh9時代,tty上去,黑白兩色。。。接觸過了以后才知道這才是現代化的終端。。。大量的語法糖,超智能提示,超級美觀的各種配色主題,開發活躍,大量插件。。。最要命的是,你一旦習慣了zsh給的糖,你就恨不得給你所有的服務器都搞一套。。。

安裝很簡單,ubuntu16上apt里直接有,oh-my-zsh在github上,撿下來也可以一步安裝:

sudo apt-get install zsh -y #install zsh
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh

chsh -s /bin/zsh #將默認的shell切換成zsh

重新登錄后就可以使用zsh了,zsh使用rc作為配置模型,所以還需要創建一個~/.zshrc作為配置核心,這個文件在oh-my-zsh中提供有范例,里面有幾個關鍵配置:

# 使用的主題,主題位于~/.oh-my-zsh/themes下
# 你把omz搞下來之所以花了那么久時間就是因為一野搞下來上百個主題。。。
ZSH_THEME="lambda" 
# 啟用的插件,插件在omz/plugins目錄下,有很多很神奇的插件,可以去官網探索一下
plugins = (git)
#zsh的alias也是亮點之一,比原生的alias強悍
alias xclip='xclip -sel clip'  

我填過的坑有:

dir目錄顏色丟失問題

某些主題下目錄是不帶顏色的,對比過bashrc后重裝了dircolors,解決了這個問題:

git clone git://github.com/seebi/dircolors-solarized.git ~/dircolors-solarized
cp ~/dircolors-solarized/dircolors.256dark ~/.dircolors
eval 'dircolors .dircolors'

接著將腳本同樣寫入到.zshrc里面:

if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'

alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi

2. 裝上tmux使你的終端更加強大

tmux作為第二個出場的神器,也是我強力推薦的能顯著提高生產力,增加bigger的好東西,主要出場場景有幾個:

  1. 將大屏幕橫著分豎著分成幾個不同的區域,選項卡,提高工作效率
  2. 增加了session的概念,session可以持久化,第二天再開recover一下就回到昨天單記錄點,如果裝在服務器上,由于不關機,直接a一下就可以馬上進入工作狀態,還不怕掉線!
  3. 用在服務器上可以進行真正意義上的結對編程,多人可以同時ssh上去,然后attach到同一個session里,可以實現屏幕直播

安裝很簡單,如果想要最新版本可以在github上面下,然后自己make一下,也很簡單:

sudo apt-get install tmux -y
mkdir -p ~/.tmux
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

tmux默認查找配置文件~/.tmux.conf,他官方提供了插件管理器,有幾個強大的插件裝了以后讓你用得更舒服:

set -g @plugin 'tmux-plugins/tpm'  #插件管理器
set -g @plugin 'tmux-plugins/tmux-sensible'  #常用的高級設置
set -g @plugin 'tmux-plugins/tmux-resurrect' #session持久化
set -g @plugin 'tmux-plugins/tmux-pain-control' #vim模式的快捷鍵
set -g @plugin 'tmux-plugins/tmux-prefix-highlight' #高亮按下前綴鍵

tmux的快捷鍵很多,但都是有固定套路的,比如:

prefix+| 將屏幕豎分為兩半,同理橫著就是prefix+-
prefix+hjkl vim模式了,在各個不同的panel間移動
prefix+c(create) 創建新的窗口,同理prefix+n(next)移動到下個窗口
prefix+? 顯示所有可用的快捷鍵

我踩過的坑有:

在tmux下使用vim,固定的配色會顯示不正確

這是因為tmux使用的顏色模式和原來的不一樣,解決方法很簡單啟動tmux時使用

alias tmux=`tmux -2`

然后在tmux的配置文件中使用

set -g default-terminal "screen-256color"

3. 是時候改用awesomewm了,unity走開走開

為了更好的使用awesomewm,我推薦你多來幾個顯示器,你會爽到飛起,唯一不舒服的就是,你又得再記7,8個快捷鍵。。。

unity很華麗,但啟動也不是一般的慢,而且實在沒法做到全鍵盤操作,對于我等coder,華麗的界面雖然可以給你帶來心靈的局部愉悅,但并不是我等的追蹤的本意,是不?

amesomewm意為平鋪式窗口管理器 我原來在多個任務之間切換的時慣用虛擬桌面+alt/tab,任務一多加上坑爹的unity,實在讓人抓狂,換用awesome后,手不用離開鍵盤,3個屏幕隨意切換,再加上高度定制的配置文件,當你看明白后,可以定制里面的一切。簡直就是coder式的窗口管理器!
安裝

# awesome核心,擴展,屏保,gnome風格的窗口元素
sudo apt-get install -y awesome awesome-extra xscreensaver gnome-settings-daemon

安裝很簡單,注銷后在登錄界面可以選擇使用awswome登錄。配置很麻煩,因為這全套都是用lua擼出來的!包括每一個按鈕,每一個函數。。。默認配置文件在~/.config/awesome/rc.lua,文件很長,我就不貼了,有興趣的自己看我整理好的配置文件,全面定制過vim-style的快捷鍵:

Mod+j/k: 在同一個屏幕中切換程序
Mod+1/2/3:切換到當前屏幕的第N個虛擬桌面
Ctrl+Mod+j/k:切換到下一個屏幕
Mod+o:將當前的程序丟到另一個屏幕上顯示

我踩過的坑有:

程序自啟動問題

程序自啟動其實有兩個點:

  1. x啟動后但awesome沒啟動:這個點可以使用xinitrc和xprofile掛載窗口主題,屏保:
#!/usr/bin/env bash
gnome-settings-daemon &
#網絡管理程序
# nm-applet &
# 自動更新程序
# update-notifier &
# 屏保
xscreensaver -nosplash &
ln -sf ~/.confhub/awesomewm-config/config/xinitrc ~/.xinitrc
ln -sf ~/.confhub/awesomewm-config/config/xinitrc ~/.xprofile
  1. awesome框架啟動完成后,就可以使用rc.lua來加載常用程序了,記得要使用runonce來啟動,容錯率更高
run_once("synapse")
run_once("ss-qt5")
run_once("fcitx-autostart")
run_once("nm-applet")
run_once("open-xscreen")

4. VIM終于來了

大神說的:世界上只有3種編輯器,VIM,Emacs,其他。。。


大神又說:Emacs是編輯器中的神,而VIM是神的編輯器。。。

我主要使用vim來進行nodejs和web相關的開發,vim完全可以勝任,下述的配置也是圍繞這個展開,但如果你想使用vim來調試java的話,我個人感覺依然是idea+vim插件比較強勢
VIM是這堆東西里面最復雜的一個,我也留到最后再寫,基本上vim一個插件就可以給你玩幾天,更別提幾十個插件了。。。

所以我了解了規模以后,果斷使用了github上面星最高的vim項目:·spf13,8000多顆星基于這個,移除了不用的插件,改成適合做web和nodejs開發的結構


下面就是漫長的踩坑之旅:

重新編譯vim

注意,ubuntu apt中的vim雖然已經是huge集了(除非你和我一樣,直接使用ubuntu16,一步到位),但對于我們還是不適用,因為我們要使用YCM做語法完成和跳轉,而YCM在我這里使用python2死活時不時有bug,而換成python3后就妥妥的,所以第一步就是要從source編譯vim,加入python3,參考這個

基于spf13開搞

直接從git上拉下來,修改配置后就可以開始安裝:

git clone https://github.com/spf13/spf13-vim.git ~/.spf13-vim

# 重新調整分組,去除php等我不需要的插件們
ln -sf ~/.confhub/vim-config/vimrc.before.local ~/.vimrc.before.local
# 額外裝的插件
ln -sf ~/.confhub/vim-config/vimrc.bundles.local ~/.vimrc.bundles.local
# 自定義配置
ln -sf ~/.confhub/vim-config/vimrc.local ~/.vimrc.local

# 腳本會把插件全部拉下來,都在github上,很慢,要有耐心
sh ~/.spf13-vim/bootstrap.sh
# js的自動完成使用
cd ~/.vim/bundle/YouCompleteMe && ./install.sh --tern-completer

YCM很難整,js的語法提示部分使用的是ternjs,搞過了才知道原來很多編輯器里內帶的js自動完成都是由ternjs完成的。安裝編譯過程可能會有很多問題,語法提示模式時YCM跟隨VIM啟動,然后YCM接管默認的提示模型,額外的js就去調用tern來完成提示。

在項目的根目錄放置一個.tern-project文件就可以實現完美的語法提示:

{
    "libs": [
        "ecma6",
        "browser",
        "underscore",
        "jquery",
        "chai"
    ],
    "plugins": {
        "node": {}
    }
}

效果是這樣:

YCM的提示和系統的提示展開快捷鍵沖突

這個問題糾結了很久,一直不知道是什么問題,后來在stackoverflow上發現了有人有類似的問題才反映過來:

" fix the ycm and snippets bugs
let g:UltiSnipsExpandTrigger = "<nop>"
let g:ulti_expand_or_jump_res = 0
function ExpandSnippetOrCarriageReturn()
    let snippet = UltiSnips#ExpandSnippetOrJump()
    if g:ulti_expand_or_jump_res > 0
        return snippet
    else
        return "\<CR>"
    endif
endfunction
inoremap <expr> <CR> pumvisible() ? "<C-R>=ExpandSnippetOrCarriageReturn()<CR>" : "\<CR>"

spf13

spf13已經是大而全的了,基本已經沒啥需要改進單,為了工作方便額外,還裝了如下這些插件方便js開發:

Bundle 'mxw/vim-jsx'  #react jsx的格式化和語法高亮
Bundle 'ternjs/tern_for_vim' #tern
Bundle 'maksimr/vim-jsbeautify' #jsbeautify的vim接口
Bundle 'sjl/gundo.vim' #歷史記錄時光機
Bundle 'mustache/vim-mustache-handlebars' #handlebars模板高亮

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,273評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,870評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,742評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,527評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,010評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,250評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,769評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,656評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,853評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,103評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,472評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,717評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,487評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,815評論 2 372

推薦閱讀更多精彩內容

  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,889評論 6 342
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,781評論 18 139
  • 前言 最早我也只是在服務器上編輯文件的時候用用vim來改改程序,并沒有把vim當做自己的主力編輯器。但是偶然的一次...
    Python中文社區閱讀 1,919評論 1 14
  • 「最近還好嗎,有找到你珍惜的人嗎?」 看到這個突然想起最近一段對話 中秋快樂 還好嗎? 毛事沒有 中秋快樂啊 就停...
    擰發條的鳥閱讀 255評論 0 0
  • 這是一篇反思日記!今天突然壓抑不住自己的心情,決心一定要寫一點什么。思來想去,寫什么呢,一本正經的文章寫不來,那就...
    每天慌閱讀 443評論 0 0