---
layout: post
title: rbenv、fish 與 VSCode 設置之路
date: 2016-07-22
comments: true
---
# rbenv、fish 與 VSCode 設置之路
在最新的 VSCode 1.3.1 版裡,Integrated Terminal 變得更加好用,但由於上游套件 `xterm.js` 的緣故,`zsh` 還是有無法捲動的問題。不過作為一個 Rails 開發者,VSCode 已經是個足夠好用的、足矣媲美 Sublime Text 的編輯器了。為了能夠在 VSCode 開發 Rails,特別對目前的開發環境做出調整。
## 由 RVM 轉換至 rbenv
聽聞 [rbenv][rbenv] 相較 rvm 來說,是對系統較為乾淨的 ruby 版本管理工具。就趁這次更新開發環境一起重置吧!
### 移除 rvm
套件也內建了一鍵移除的方式:
```bash
rvm implode
```
做完之後也可以將 rvm 剩餘的檔案移掉:
```bash
rm -rf ~/.rvm
```
### 安裝 rbenv
參照了[專案官網][rbenv]的說明,只要把該 repo clone 下來,設置好 `PATH` 變數,在為 shell 加上一些設定便可以開始安裝 ruby 了。在 OS X 環境又更容易,只要用 Homebrew 一鍵安裝便成。
```bash
brew install rbenv
```
裝完之後就可以發現 rbenv 已經被裝到 Homebrew 的可執行位置了,可以跑 `which` 指令檢驗
```bash
which rbenv
# => /usr/local/bin/rbenv
```
在 Homebrew 安裝跑完之後,安裝腳本會提示已在 shell profile(.zshrc/.profile/.bash_profile) 加上 rbenv 初始化腳本,預設內容如下:
```bash
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
```
第二行的 `rbenv init -` 指令輸出,在你一般開啟的 Terminal 會跑出:
```bash
export PATH="/Users/USERNAME/.rbenv/shims:${PATH}"
export RBENV_SHELL=zsh
source '/usr/local/Cellar/rbenv/1.0.0/libexec/../completions/rbenv.zsh'
# ... 下面一串
```
不過在 VSCode 內建終端機卻會跑出:
```bash
export PATH="/usr/local/opt/rbenv/shims:${PATH}" # 就這行不同
export RBENV_SHELL=zsh
# ... 下面一樣
```
大概是執行權限不同的關係吧,rbenv 執行的位置不同也會讓 `gem`/`bundler` 裝到不同的位置,為了方便起見,一律設成一般終端機跑出來的那串。把下面這串貼到 `~/.zshrc` 最下面就是。
```bash
export PATH="/Users/USERNAME/.rbenv/shims:${PATH}"
export RBENV_SHELL=zsh
source '/usr/local/Cellar/rbenv/1.0.0/libexec/../completions/rbenv.zsh'
command rbenv rehash 2>/dev/null
rbenv() {
local command
command="$1"
if [ "$#" -gt 0 ]; then
shift
fi
case "$command" in
rehash|shell)
eval "$(rbenv "sh-$command" "$@")";;
*)
command rbenv "$command" "$@";;
esac
}
```
若是 fish 就貼下面這個:
```
setenv PATH '/Users/USERNAME/.rbenv/shims' $PATH
setenv RBENV_SHELL fish
. '/usr/local/Cellar/rbenv/1.0.0/libexec/../completions/rbenv.fish'
command rbenv rehash 2>/dev/null
function rbenv
set command $argv[1]
set -e argv[1]
switch "$command"
case rehash shell
. (rbenv "sh-$command" $argv|psub)
case '*'
command rbenv "$command" $argv
end
end
```
### 裝 ruby
```bash
rbenv install 2.3.1
rbenv global 2.3.1
gem install bundler
bundle install
```
搞定!
### Pow 的額外設定
其實在 Pow 的 [wiki](https://github.com/basecamp/pow/wiki/Troubleshooting) 就有解答,不過因為我又對 rbenv 做了 PATH 的改動,所以設定也不太一樣。
打開 ~/.powconfig 並貼入
```bash
export PATH="/Users/USERNAME/.rbenv/shims:/Users/USERNAME/.rbenv/shims/bin:$PATH"
```
然後重啟 pow service
```bash
touch ~/.pow/restart.txt
```
## 將主要 shell 由 zsh 換成 fish
zsh 有著非常有名的 [oh-my-zsh][oh-my-zsh] 設定檔管理框架,fish 底下也有個好用的叫 [fisherman][fisherman]。不過我終究是沒有把系統預設的 shell 換掉(`chsh` 指令),因為挺多工具與 fish 不相容。
fish 啟動速度飛快,帶我重回還沒有裝一堆 zsh 套件的美好往日時光。
### VSCode
講來講去這篇好像跟 VSCode 沒啥關係耶?那就附張截圖好了,VSCode 也是十分優秀的 Markdown 編輯器,內建了快速的 Preview,碼 code、寫文件、Terminal、Task Runner 全都內建了,還夠輕量快速,Extension 也陸續多了起來,還真不好挑剔啊 XD。
![][screenshot1]
[rbenv]: https://github.com/rbenv/rbenv
[oh-my-zsh]: https://github.com/robbyrussell/oh-my-zsh
[fisherman]: https://github.com/fisherman/fisherman
[screenshot1]: https://lh3.googleusercontent.com/-o17HvZ1w7k6NzK0kw84uJNdhTmnWCH1hGyHduSokRnhgdeoaIh8reqDVrlAc43uGIN9K5KZYpujZuuSdqrV5BiuBhYNsQlubHEfAPut1pGvbkYzw3zKLfuEpphlj7JpBKj9x3m-Zk-rA4s-xFXnagC3vO8otXWOAH7qXYg47kx8D1qHVDpwHjD4WW8yd1jV_CYZlL5VWfrbbiVAdlwBDalB_UexT8emkhqTMjNwQMhIwMyqEXk8LcsfuI5IqgpdR488KovW9Z3ckMJjMbMWSpYOUfMuJ4_pRgYPMla9cm-h6QcP5PXIyhfTERUTRUyUAawcJAWC74R519UVe_gLizh0RqvKazWU0ISCjXVOmbH_bljBAwRIBZobMme9W3deBztAMd0asjKFJnjsviDKDgb1n5y8wS6z5nfNGWijNJbl2JwpVv9EVStbGM4OoqM-9st2MO5oVZJEK8PgtNp1LvuBr3Qkch_k2RXnSZJTfxs4aYZroTJTplZI2XEZS8bkK6Xlczod9rFAvsBdSK2G1A3rixmyBrTOkb7YE7Z8E5NRGWXx3mJns607eu00e69bzGlSe7kc_IpwN1wiYUtqWuRjABPqIhsV=w1046-h781-no