例子直接來啦:
i am not a cute boy.
u r so bad.
i am so good.
經過事先的排版之後,想要把第二行的"so bad"跟第三行的"so good"反白複製。
首先,把游標移到第二行的"so"的"s",再按"ctrl+q",接著使用J、K、H跟L做上下移動,就大功告成啦!
2008年1月2日 星期三
[基礎] 如何進行區塊性的反白
2007年12月26日 星期三
[基礎]刪除游標之後的所有字
原本如下:
i am not a cute boy, and i mean it.
想要刪除"mean"後面所有的字,就先把游標移到"m"然後"shift+c"
即可得到:
i am not a cute boy, and i
同時進入插入模式,直接打字就可以進行編輯嚕!!
2007年12月25日 星期二
[基礎] 折疊??folding??
假設有一個例子是這樣的:
i am not a cute boy.
u r so bad.
i am so good.
#folding one
sdfsf
sdfsdfsdf
sdfsdfsdffsdfsdfsdf
#folding two
asdfasdf
asfwerfsd
wecv9ifkd
希望把"folding one"跟"folding two"下面的三行都折疊隱藏起來。首先,把游標移到"folding one"那一行,先"vip",然後再按"zf",同樣的再把游標移到"folding two"那一行,然後按"vip"跟"zf",可以得到以下折疊後的結果:
參考網址:http://edt1023.sayya.org/vim/node12.html
[基礎]如何刪除一個「字」 How to delete a word
如何刪除一個字呢?利用一個範例來看看吧!
i am not a cute boy, and i really mean it.
如果我們想要刪除really,可以先把游標移到r,利用"dw"跟"cw"把really刪除!
使用"dw"的話會變成
i am not a cute boy, and i mean it
這時候游標會在"mean"的"m"。
若是使用"cw"的話,會變成
i am not a cute boy, and i mean it.
這時候游標會在"mean"的前面一個空格,同時進入插入模式。使用"cw"是比較方便的模式,可以避免原本字與字之間的空格被刪除,也不用再重新進入插入模式!
2007年12月2日 星期日
[基礎] 如何把程式碼縮行
使用迴圈或是判斷式的時候,都會希望裡面的程式碼能縮排,好方便閱讀。當有程式碼如下的時候,可以利用巨集來完成!!x = wgn(100,100000);
kaiser_windowed = windowed(x,'kaiser');
noise_kaiser_windowed = x_ref - kaiser_windowed;
var_noise = var(noise_kaiser_windowed);
假設每一次的縮行都是四個空白鍵,我們可以執行以下步驟(比較麻煩又笨的方法):
聰明一點的方法就是:
如此即可完成嚕!!!
2007年12月1日 星期六
[基礎]如何利用VIM,把程式中的等號對齊? <利用巨集>
在寫程式的過程中,讓等號對齊,可以讓整個程式版面看起來很清爽,同時也可以很明顯的分辨出變數,要對程式碼進行改造也比較容易!一般在寫程式的時候,並不會太去注意在一整段類似的程式中,每一行的等號是不是有對齊,往往都是在最後確認整個程式執行無誤的時候,才會回過頭來修改程式內容,做標齊的動作。
假設原本的code沒有特別注意對齊的話,會顯示如下:x = wgn(100,100000);
kaiser_windowed = windowed(x,'kaiser');
noise_kaiser_windowed = x_ref - kaiser_windowed;
var_noise = var(noise_kaiser_windowed);
為了版面好看,希望所有的等號都能夠對齊,因此我們要使用到巨集的功能。
利用上一個程式碼,步驟如下:
即可使等號對齊,形成一個美美的畫面嚕!!
2007年11月30日 星期五
[基礎] VIM 如何進行字元的替換
假使有一段程式碼如下:
kaiser_windowed(kaiser_size_index) = windowed(x,'kaiser',kaiser_window_size(window_size_index), ref_length);
noise_kaiser_windowed(u_index) = ones(length(kaiser_window_size),1)*x_ref - kaiser_windowed;
一般而言,上面的程式碼經過驗證,確定無誤之後,會想要再複製上面的兩行,同時賦予不同的功能。於是會變成:
kaiser_windowed(kaiser_size_index) = windowed(x,'kaiser',kaiser_window_size(window_size_index), ref_length);
noise_kaiser_windowed(u_index) = ones(length(kaiser_window_size),1)*x_ref - kaiser_windowed;
kaiser_windowed(kaiser_size_index) = windowed(x,'kaiser',kaiser_window_size(window_size_index), ref_length);
noise_kaiser_windowed(u_index) = ones(length(kaiser_window_size),1)*x_ref - kaiser_windowed;
kaiser_windowed(kaiser_size_index) = windowed(x,'kaiser',kaiser_window_size(window_size_index), ref_length);
noise_kaiser_windowed(u_index) = ones(length(kaiser_window_size),1)*x_ref - kaiser_windowed;
於是乎,我們想要把上述程式裡面第三到第六行的「kaiser」要改成「hamming」跟「direct」,等同於使用不同的變數來呼叫函式。在VIM裡面有兩種方法可以達到更換字元的目的,先介紹一下第一種方法:
格式如下:
":/s/要被代換的字/想要代換的字/g"
最後的g是指把選取的範圍,都做代換!
例子:
把要代換字的部分,利用"Vip"選取之後,執行
":/s/kaiser/hamming/g" %用"hamming"來代替"kaiser"
":/s/kaiser/direct/g"%用"direct"來代替"kaiser"
第二種方法:
1. 先來到"kaiser"的開頭"k",然後計算一下"kaiser"有幾個字母,然後執行"c6l",意思是刪除六個字
2. <輸入新的字,例如:"hamming"
3. 執行搜尋"/kaiser",此時"kaiser"會被反白
4. 執行"n.",讓VI可以做重複的刪除替換的動作!!
第二種方法的好處是,使用者可以自己親眼確認,有哪一些字是需要被替換的,有哪一些自不需要被替換,比第一種方式,無腦的全部替代,更安全嚕!!
2007年11月29日 星期四
[基本操作] vim session
Session的目的就是把目前視窗的狀態記錄下來,之後可以還原到目前狀態。
最常用的情況是program時,可能會一次開好幾個檔,可能是用split也有可能是開在tab。等下次再來寫code時,想要到之前打開的檔案叫出來編輯。
Session的操作分為:
- 將目前狀態存入session
- 讀出session,並還原之前狀態
存入session
:browse mks
這時會跳出filedialog。輸入session的名字(例如:Session.vim)按確定即可。
讀出session,並還成之前狀態
讀出session(例如:Session.vim)
輸入:so %
即可開啟之前的狀態
2007年11月28日 星期三
VIM GUI介面
建議使用gvim的gui介面。
除了可以使用滑鼠來做輔助之外,
在vim7.0之後還有可以新增tab。
由於大部份的資料和tip都是著重在文字介面的操作,反而一些gui上好用的功能被忽略了。
以下就想到的做一些筆記:
顯示menu bar
:set guioptions+=m
隱藏menu bar
:set guioptions-=m
顯示toolbar
:set guioptions+=T
隱藏toolbar
:set guioptions-=T
另存新檔 (會打開file dialog)
:browse save
向右切換tab
gt
向左切換tab
gT
把目前split關掉,並新開成tab
<c-w>T
滑鼠也可以搜尋字喔。
按shift,在到字上按滑鼠右鍵。
可用split的方式開新檔案
將檔案圖式ctrl拖曳至視窗
(直接拖放是用buffer開啟)