2015年2月14日 星期六

我的好情人-Vim

終端機指令
ctrl+w 一次刪除一個單字
ctrl+u  一次刪除一整行指令
ctrl+r   找尋與輸入字串相符的最近執行過的指令



vim指令
ctrl+z   將vim隱藏到背景執行
fg   將vim恢復執行

vim模式
normal(commad)預設
edit
visual(select)

從normal到edit  按i(insert)或a(append 游標所在的後一個字元)或o(new line 新的一行)
從normal到visual
按v(選一個字母)


V(選一整行)


ctrl+v(選一個方形)


回到normal模式按 esc或ctrl + [
從visual到edit 按c
無法從edit到visual

在normal或visual中游標移動:按h(游標往左移動)、j(往上移動)、k(往下移動)、l(往右移動)
vim小遊戲,練習使用hjkl移動游標:http://vim-adventures.com/

在normal或visual中可使用的指令:
w、W 往後跳一個字
b、B   往前跳一個字
0 跳到行頭
$ 跳到行尾

fx     往後找最近的x(x可以替換成其他想要找的字母)
Fx    往前找到最近的x(x可以替換成其他想要找的字母)
/sit    搜尋離游標最近的sit,在按下n會跳到下一個找到的sit(sit可以替換成其他想找的單字)
*    找尋離目前游標最近且與游標所在的單字相符的單字

}    移到下一個段落(section)
{    移到上一個段落(section)
g    移到頁首
G   移到頁尾


zz  將游標所在的行往上移
zt   將游標所在的行移到畫面最上面
zb  將游標所在的行移到最底下

vit 選取2個tag之間的文字(編輯HTML文件)
vat 選取2個tag與2個tag之間的文字
vi" 選取2個"之間的文字
va" 選取2個"之間的文字,連""一起選取
viw 選取目前游標所在的單字
將以上的指令的v替換成c代表選取之後進入編輯模式
將以上的指令的v替換成d代表選取之後刪除

:w /temp/abc.txt  將目前的檔案存到temp資料夾之下,並存成abc.txt(第一次存檔)
:w  存檔
:q   離開
:q!  離開但不存檔
vi abc.txt  使用vim編輯abc.txt

:tabe   開一個新的tab(tabe後可空一格)
vi -p test1.txt test2.txt test3.txt test4.txt 將指定的檔案使用tab全部開啟
gt  移到前一個tab
gT 移到後一個tab

:new   新增一個水平分割視窗
:vnew或:vs 新增一個垂直分割視窗
:bd  關閉目前的分割視窗
vi -o test1.txt test2.txt test3.txt test4.txt 將指定的檔案全部開啟並使用上下分割視窗將所有檔案顯示出來
vi -O test1.txt test2.txt test3.txt test4.txt 將指定的檔案全部開啟並使用左右割視窗將所有檔案顯示出來

切換分割視窗
ctrl+w+h  切換到左方分割視窗
ctrl+w+j   切換到下方分割視窗
ctrl+w+k  切換到上方分割視窗
ctrl+w+l   切換到右方分割視窗
ctrl+w+w 切換分割視窗

:ls 列出目前所有的buffer(所有開啟的檔案)

:b3切換到編號的buffer
:bd關閉目前的budffer
:b filename 切換到指定檔名的buffer
:tab ba 將所有的buffer使用tab打開

:d3w  一次刪除3個字母

vim相關組合指令(以下的指令前面加v代表選取,加d代表刪除):
aw    around world
iw     inner world

as      a sentence
is       inner sentence

ap      a paragraph
ip       inner paragraph

摺疊程式碼
將要折疊的程式碼選取之後按:zf
按l取消折疊

選取全部程式碼
ggVG
將V換成zf  --> 全部程式碼折疊
將V換成d   -->  全部程式碼刪除


Editing
在一般模式底下
D   清除游標所在行之後的資料
C   清除游標所在行之後的資料,並進入編輯模式
u    回到上一步(undo)
ctrl+r 取消復原(redo)
dG  清除游標所在之後的資料
dgg 清除游標所在之前的資料
z    刪除一個字元
.     重複上一個動作(action 進入編輯模式之後,執行某些指令,離開編輯模式)
dd  刪除游標所在行的所有資料
3dd 刪除3行

~ 將游標所在的字元切換為大寫或小寫
:m+  將游標所在行往下移一行
:m-2   將游標所在行往上移一行
>>  縮排
shift+<<  減少縮排
=   將游標所在行程式碼按照格式縮排(re-format)
gg=G 將所有程式碼按照格式縮排(re-format whole file)

yy 複製游標所在的行
3yy 複製游標往後3行
p  貼上
3p 貼上3次

dw   刪掉游標之後的單字
diw  刪掉游標所在的單字
cw   刪掉游標之後的單字,並進入編輯模式
ciw  刪掉游標所在的單字,並進入編輯模式

r 進入替換模式,一次替換一個字
R進入替換模式,一次替換一個單字

J   將底下一行移到游標所在行
3J  將底下3行移到游標所在行

:set number 顯示行號

.vimrc  vim的設定檔,可依個人喜好設定
set history=1000
set undolevels=100 取消復原
set number   加上行號
set cursorline  游標所在行加上底線
setclipboard+=unnamed  將系統的剪貼簿與vim的同步
set scrolloff=5  移到最底下或最前面時可看到5行
set hlsearch   將搜尋到的字標示出來
set visuallbell   將錯誤的提示聲音關掉
set noerrorbells將錯誤的提示聲音關掉
noremap <F7> gT 將按鍵F7對應到按下gT的功用

:sourse .vimrc 重新套用設定檔

vim外掛管理器
在終端機執行mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/
.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
在.vimrc中貼上這段:execute pathogen#infect()

在vim中安裝資料夾樹狀圖
在終端機執行cd ~/.vim/bundle && git clone git://github.com/tpope/vim-sensible.git