可可熊的窝

vim进阶

IN: Linux   Tags: ,    Comments: 4

/*摘自:http://edt1023.sayya.org/vim/index.html
  *
  *里面有很多非常好用的我用蓝色标记了一下,看看你都知道这些好用的功能吗?
 *
 */

Ctrl+f 即 PageDown 翻頁(Forward,向前、下翻頁)。
Crtl+b 即 PageUp 翻頁(Backward,向後、上翻頁)。

0 是數目字 0 而不是英文字母 o。移至行首,(含空白字元)。
W 移动一个符,但會忽略一些標點符號。
e 移至後一個字字尾。
E 同上,但會忽略一些標點符號。
b 移至前一個字字首。
B 同上,但會忽略一些標點符號。
H 移至螢幕頂第一個非空白字元。
M 移至螢幕中間第一個非空白字元。
L 移至螢幕底第一個非空白字元。

) 移至下一個句子(sentence)首。
( 移至上一個句子(sentence)首。sentence(句子)是以 . ! ? 為區格。
} 移至下一個段落(paragraph)首。
{ 移至上一個段落(paragraph)首。paragraph(段落)是以空白行為區格。

R进入替换模式

I 在行首開始輸入文字。此之行首指第一個非空白字元處,要從真正的第一個字元處開始輸人文字,可使用 0i 或 gI(Vim 才有)。
A 在行尾開始輸入文字。這個好用,您不必管游標在此行的什麼地方,只要按 A 就會在行尾等著您輸入文字。
O 在游標所在行上開一新行來輸入文字。
J 將下一行整行接至本行(Joint)。

dG 刪至檔尾。
d1G 刪至檔首。或 dgg(只能用於 Vim)。
D 刪至行尾,或 d$(含游標所在處字元)。
d0 刪至行首,或 d^(不含游標所在處字元)。請回憶一下 $ 及 ^ 所代表的意義,您就可以理解 d$ 及 d^ 的動作,這就是 vi(m) 可愛之處。

5J 將五行合併成一行。
5i A 然後按 Ecs,插入五個 A。中文也可以!
2i sys Esc 插入 syssys。中文也可以!

:ce(nter) 本行文字置中。注意是冒號命令!
:ri(ght) 本行文字靠右。
:le(ft) 本行文字靠左。所謂置中、靠左右,是參考 textwidth(tw) 的設定。如果 tw 沒有設定,預設是80,就是以 80 個字元為總寬度為標準來置放。當然您也可以如 sw 一樣馬上重設。

gqap 整段重排,或 gqip,在段落中位何地方都可以使用。和中文的配合見下述。
gqq 本行重排。
gqG 全文重排,是以游標所在處的段落開始重排至檔尾。以空白行為段落的間隔。

» 整行向右移一個 shiftwidth(預設是 8 個字元,可重設)。这个好啊,写代码时缩进就方便了。
« 整行向左移一個 shiftwidth(預設是 8 個字元,可重設)。

:[range]s/pattern/string/5.1
range 指的是範圍,1,7 指從第一行至第七行,1,$ 指從第一行至最後一行,也就是整篇文章,也可以 % 代表。還記得嗎? % 是目前編輯的文章,# 是前一次編輯的文章。
pattern 就是要被替換掉的字串,可以用 regexp 來表示。
string 將 pattern 由 string 所取代。
c confirm,每次替換前會詢問。
e 不顯示 error。
g globe,不詢問,整行替換。
i ignore 不分大小寫。

mx x 代表 26 個小寫英文字母,這樣游標所在處就會被 mark。
`x 回到書籤原設定位置。` 是 backward quote,就是 Tab 鍵上面那一個。
‘x 回到書籤設定行行首。’ 是 forward quote,是 Enter 鍵隔壁那一個。

# 或 Ctrl+^ 編輯前一個檔案,用於兩檔互相編輯時相當好用。這種用法不管是 argument list 或 buffer list 檔案間皆可使用。還記得嗎?# 代表的是前一次編輯的檔案。

:f 或 Ctrl+g 顯示目前編輯的檔名、是否經過修改及目前游標所在之位置。
:f 檔名 改變編輯中的檔名。(file)
:r 檔名 在游標所在處插入一個檔案內容。(read)

vim -x [檔名] 加密编辑一个文件,每次编辑时要求输入密码,否则为乱码。也可以在编辑时使用:X命令来设置密码,不过要注意,设置以后需要保存并退出。

Ctrl+w n 即 :new。開一空的新視窗。
Ctrl+w s 即 :sp(lit),會開一新視窗,且原檔分屬兩個視窗。
Ctrl+w f 開一新視窗,並編輯游標所在處之 word 為檔名的檔案。
Ctrl+w q 即 :q 結束分割出來的視窗。
Ctrl+w o 即 :o nly! 使游標所在之視窗,成為目前唯一顯示的視窗其它視窗會隱藏起來。
Ctrl+w j 移至下視窗。
Ctrl+w k 移至上視窗。還記得 hjkl 的按鍵移動方式嗎?

:sh(ell) 執行 shell。使用 exit 回到 vim。
:r !commond 這個就妙了!會在游標所在處次一行插入外部指令 commond 執行後的輸出內容。例如 :r !date 就會插入日期時間。這在 elvis 是會插入在游標所在處那一行。
:n,mw !commond 以 n 至 m 行內之資料,當做外部指令 commond 的 input。這算是相當高級的用法了,初學者大概還用不上,不過印象中留有一個這樣的功能,以後總是會用得上的。
K 大寫 K 會顯示游標所在處之 word 的 man page 系統線上使用手冊。

09-30
2007

又一道题

IN: C, 编程相关       Comments: 4

“有一个3×3的矩阵,现在要往里面填9个不同的数字。唯一的要求是:相邻的数字相加不能为质数。注:数字的取值范围为:1~N。(N为一个>=10的数)请用程序解出尽可能多的符合要求的矩阵。”

C语言写的解,很麻烦的说,还是Python写的简单,可以看看王聪同学用Python写的代码

C语言代码

09-28
2007

诺基亚1116使用一周报告

IN: Life   Tags: ,    Comments: 6

  • 待机时间:
  • 可以说是很长了吧,比我想象中的还要好,星期天下午充的电,到今天(星期五)整整五天的时间,其中使用内容包括:
    通话时间:73分钟
    短信收发:72条
    其它操作:30+分钟(估计还要长些)

    其中晚上12点到7点关机

  • 通话质量
  • 很清晰,声音也挺高的,这个很重要,不然某些人又会不高兴了……

  • 手机功能
  • 可以满足我的需要。通讯录,短信的管理都挺方便的,还有个单键拨号可以设置为打电话或者发短信,只要长按数字键就可以,挺方便的。不过有一点不太爽,就是换电池时手机的时间需要重新设置,手机里有一个自动更新时间,但不知道怎么用,也可能就没用。
    手机的铃声效果也不错,其中还有真人铃声,呵呵,俺以前那个彩屏的都没有。

  • 手机外观
  • 还算可以,手感也可以,只不过发短信时按键用着不太习惯,因为按键没有凸出来。不过买了个硅胶套套上后发短信还挺舒服的。

  • 反应速度
  • 整体上速度挺快,特别是关机,可以说是秒关,开机速度也可以很快就可以载入通信录,而我以前那个机子得几分钟才能载入通信录(我的联系人都在SIM卡的)。

  • 综合评分
  • 给个9分差不多吧:-)

09-28
2007

Python学习笔记三

IN: Python, 编程相关       Comments: 4

Python中完整的if语句是
if condition:
    XX
elif:
    YY
else:
    ZZ

Python中没有switch语句,不过可以使用dictionary,或者if-elif-else来实现

关于缩进:Python是以缩进来识别语句块的,例如:

x = 1
if x:
    y = 0
    if y:
        print ‘block2′
    print ‘block1′
print ‘block0′

上面这段程序的结果是:
block1
block0
但如果缩进改为这样:

x = 1
if x:
    y = 0
    if y:
        print ‘block2′
        print ‘block1′
print ‘block0′
结果就变为了:
block0
长字符串
print “a very loooooooooooooooooooooooong statement “\
“test”
两行都使用双引号,第一行末使用反斜杠。

关于while语句:
while : # Loop test
# Loop body
else: # Optional else
# Run if didn’t exit loop with break
else是可选的,而且只有在while中的循环没有进行时才执行。

09-27
2007

12个小球

IN: Life   Tags: ,    Comments: 7

题目:有12个乒乓球特征相同,其中只有一个重量异常,现在要求用一部没有砝码的天平称三次,将那个重量异常的球找出来。 (尤其特别注意:是异常,但不知是轻了还是重了)

  1. 把小球分四组,每组3个。
  2. 随便找出两组(甲,乙)来放在天平上秤一次:如果天平平衡,则异常小球在剩下两组(丙,丁)中,如果天平不平衡,则异常小球在天平上
  3. 假设天平平衡,然后在天平上的甲,乙两组球中各取走两个小球(天平仍然平衡),把丙丁两组中的小球各取两个放在天平上,再秤一次:
  4. 如果天平平衡,则异常小球为丙,丁两组中剩下的两个球中的一个,此时取走天平上的小球,从甲,乙组中正常的小球中拿一个小球与丙中的小球秤一次:
    • 如果平衡,则丁中剩下的小球为异常小球,如果不平衡,则丙中的小球为异常小球。
  5. 如果天平不平衡,则异常小球为放在天平上丙,丁两个小球中的一个,则此可以拿走任意一个上球,再放入一个正常小球,如果天平平衡,则异常小球为取走的那个,如果不平衡,则异常小球为留在天平上的那个。
  6. 上面的解法不正确。

09-27
2007
loading...