假使有一段程式碼如下:
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月30日 星期五
[基礎] VIM 如何進行字元的替換
2007年11月29日 星期四
python 玩字串
python除了string內建的功能之外,還有其他玩法,更重要的是配合其他內建的資料結構,像是list, tuple, dictionary進而產生強大的功能。以下就是一點點示範。
字串連結和複製 ('+', '*' )
>>> print 'a' + 'b' + 'c'
abc
>>> print 'abc' * 3
abcabcabc
字串插入 ( tuple ,dictionary )
用tuple插入:
>>> print '%s %s %s' %( 'a' , 'b' , 'c' )
a b c
也可以把template存成字串,等待被插入:
>>> template = '%s %s %s'
>>> print template % ( 'a', 'b' , 'c' )
a b c
用字典插入:
>>> temp_dict = '%(first)s %(second)s %(third)s'
>>> intp_dict = { 'first' : 'how' ,
'second' : 'are',
'third' : 'you',
}
>>> print temp_dict % intp_dict
how are you
字串分解和結合 ( list )
用space來分割字串:
>>> s1 = 'how are you'
>>> s1.split()
['how', 'are', 'you']
>>> a = s1.split()
>>> print a
['how', 'are', 'you']
用減號來組合字串:
>>> '-'.join(a)
'how-are-you'
再示範一次
依照換行符號來分割:
>>> s1 = '''first line
second line
end line'''
>>> a = s1.split( '\n' )
>>> print a
['first line', 'second line', 'end line']
用逗號組合回去 :
>>> s_comma = ','.join(a)
>>> print s_comma
first line,second line,end line
用逗號分割:
>>> s_comma_a = s_comma.split(',')
>>> print s_comma_a
['first line', 'second line', 'end line']
用換行符號組合回去 :
>>> print '\n'.join( s_comma_a )
first line
second line
end line
[基本操作] 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開啟)