"欸,你都用什麼編輯器?" "小畫家啊"
其實有蠻長一段時間都用sublime text
寫code,但不管是在研究所時期或是現在工作以後,幾乎都需要連線到遠端開發機作業,即便可以用掛載磁碟的方式在本地端編輯,但若是加個VPN再參雜一些種花點心的網路...
恩,就這樣我又回到vim
的懷抱。以往都直接抓vgod大神的設定檔來改,但你知道改code改到最後都會想說直接重寫還比較快,加上我用到的套件其實不多,所以乾脆自己設定一個。
基本上是使用Vundle這套plug-in manager 來幫我安裝所有的plugin,是我目前使用起來最簡潔的工具了
以下是我的vimrc
,可以看得出來基本上是以javascript
與reactjs
開發為主
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()
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
Plugin 'tpope/vim-fugitive'
" vim-airline
Plugin 'vim-airline/vim-airline'
Plugin 'elzr/vim-json'
Plugin 'pangloss/vim-javascript'
Plugin 'mattn/emmet-vim'
Plugin 'mxw/vim-jsx'
" 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
"
set nocompatible " not compatible with the old-fashion vi mode
set bs=2 " allow backspacing over everything in insert mode
set history=50 " keep 50 lines of command line history
set ruler " show the cursor position all the time
set autoread " auto read when file is changed from outside
set laststatus=2
syntax on
let g:airline_powerline_fonts = 1
let g:airline_theme='solarized'
syntax enable
set nu
除此之外,既然要遠端連線工作,總不能每次斷線以後,都要手動重新打開上一次工作階段,並且清除temp file
吧!
我們是程式設計師,我們很懶,所以需要更聰明的作法。因此tmux
就很重要了!
tmux是什麼呢? 根據官方文件:
*tmux is a terminal multiplexer. It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminal. And do a lot more. *
看到沒有!
** Detach them (they keep running in the background) and reattach them to a different terminal **
簡單來說,有了tmux,以後連線到遠端VM或是server時,就算在你開著好幾個session並且vim使用中的情況下,網路斷了或是你想拿著筆電去樓下買咖啡,回來時還是可以無痛回到你原先的工作狀態!不會因為連線中斷而需要重新initialize你原先的state。
那要怎麼使用這麼好用的工具呢?
$ apt-get install tmux
安裝很簡單,接著要編輯tmux.conf
,以下是我的設定檔:
unbind C-b
set -g prefix ^A
bind a send-prefix
# set colors
set-window-option -g window-status-current-fg blue
set-window-option -g window-status-current-bg yellow
set-window-option -g window-status-current-attr default
# switch to next window
unbind C-Right
bind -n C-Right next-window
# switch to previous window
unbind C-Left
bind -n C-Left previous-window
# split windows like vim
# vim's definition of a horizontal/vertical split is reversed from tmux's
bind s split-window -v
bind v split-window -h
# move around panes with hjkl, as one would in vim after pressing ctrl-w
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
# vi-style controls for copy mode
setw -g mode-keys vi
unbind [
bind Escape copy-mode
unbind p
bind p paste-buffer
bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection
unbind ,
bind A command-prompt "rename-window '%%'"
好,其實也很多是東抓西抓出來的,所以依照我這份設定檔,我常用的指令大概就是:
&
符號,就可以刪除當前session用了tmux以後好像世界太平一片祥和風和日麗,但是事情沒有這麼簡單,當你用慣iterms方便的捲軸功能去瀏覽先前的terminal紀錄後,發現開了tmux就捲不上去時可能會很痛苦,不過沒關係,還是有折衷方案!
好的,老實說這篇只是我想記錄一下我的記錄檔案... 所以如果需要好好學習tmux的人,可以移駕 Tsung's Blog