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月12日 星期三

python date物件


>>> from datetime import date

# 創造一個date物件

# date( year, month , day )
>>> d = date( 2008, 1,1 )
>>> d
datetime.date(2008, 1, 1)

# 求( 哪一年,哪一月,哪一天 )
>>> ( d.year , d.month , d.day )
(2008, 1, 1)

# 求星期幾 ( 2008-01-01是星期二 )
>>> d.weekday() , d.isoweekday()
(1, 2)
>>># weekday()是以星期一當0
>>># isoweekday() 是以星期一當1


# 求date物件是( 哪一年,哪一週,星期幾 )
>>> d.isocalendar()
(2008, 1, 2)
>>> d.isoformat()
'2008-01-01'

# today也是date物件
>>> today = date.today()

# 今天是2007年12月12日星期三
>>> today.year, today.month , today.day, today.isoweekday()
(2007, 12, 12, 3)


展開繼續閱讀........

2007年12月8日 星期六

window鮮為人知的快速鍵

windows算是最普遍的作業系統了,為了有好效率,ctrl-c ctrl-v
ctrl-x算是大家都知道的快速鍵了。

進階一點大概會知道,alt-f4是關閉視窗,ctrl-w或ctrl-q有時可以關掉視窗。

這裡提供一些大家比較不知道的快速鍵。

*關閉視窗
step1: alt-space 之後會在標題列上出現選單。
step2: 選 c 就可以關閉視窗。

其他像是縮小或還原以此類推。

*神奇的shift+alt在ms word
文字縮排突排 shift+alt+左右鍵
文字向上移動 shift+alt+上下鍵
表格分離結合 shift+alt+上下鍵

*快速打開想要的程式

prepare1: 先把常用的程式的捷徑放到開始功能表
prepare2: 把捷徑改名,例如 "Microsoft Office Word 2003",就改成"w Microsoft Office Word 2003"

step1: win 打開start menu
step2: w 打開word

展開繼續閱讀........

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);

假設每一次的縮行都是四個空白鍵,我們可以執行以下步驟(比較麻煩又笨的方法):

  1. "qq" :開始錄製名稱為q的巨集
  2. "D4|" :「刪除此行」後,跳到四格之後

  3. "pj0q" :「貼上刪除的文字」後,「跳到下一行」的「開頭」,同時「結束巨集的錄製」
  4. "@q" :執行剛剛錄製的巨集q
  5. "@@" :重複執行巨集
聰明一點的方法就是:
  1. "vip"
  2. ">>"
  3. "."

如此即可完成嚕!!!

展開繼續閱讀........

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);

為了版面好看,希望所有的等號都能夠對齊,因此我們要使用到巨集的功能。
利用上一個程式碼,步驟如下:

  1. 找最右邊的等號的欄數,上面的程式碼,最右邊的等號是在座標(3,23)
  2. "qq" :第一個q是開啟巨集,第二個q是巨集的名稱
  3. "f=D" :「找尋」「等號」並且「刪除等號後面所有的字」
  4. "23|" :跳到第23欄
  5. "pj0q" :「貼上刪除的文字」後,「跳到下一行」的「開頭」,同時「結束巨集的錄製」
  6. "@q" :執行剛剛錄製的巨集q
  7. "@@" :重複執行巨集
即可使等號對齊,形成一個美美的畫面嚕!!

展開繼續閱讀........

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日 星期四

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的操作分為:

  1. 將目前狀態存入session
  2. 讀出session,並還原之前狀態

存入session

:browse mks

這時會跳出filedialog。輸入session的名字(例如:Session.vim)按確定即可。

讀出session,並還成之前狀態

讀出session(例如:Session.vim)

輸入:so %

即可開啟之前的狀態

展開繼續閱讀........

2007年11月28日 星期三

VIM GUI介面

建議使用gvimgui介面。

除了可以使用滑鼠來做輔助之外,

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開啟)

 

 


展開繼續閱讀........