起步于308的小菜菜

no money no dream coder 一枚

Sed技巧小结

1.删除行首空格

1
2
3
sed 's/^[]*//g' filename
sed 's/^ *//g' filename
sed 's/^[[:space:]]*//g' filename

2.行后和行前添加新行

1
2
3
行前:sed 's/pattern/\n&/g' filename
行后:sed 's/pattern/&\n/g' filename
&=pattern

3.使用变量替换(使用双引号)

1
sed -e "s/$var1/$var2/g" filename

4.在第一行前插入文本

1
sed -i '1 i\插入字符串' filename

5.在最后一行插入

1
sed -i '$ a\插入字符串' filename

6.在匹配行前插入

1
sed -i '/pattern/i "插出入字符串"' filename

7.在匹配行后插入

1
sed -i '/pattern/a “插入字符串”' fielname

8.删除文本中空行和空格组成的行以及#号注释的行

1
grep -v ^# filename | sed '/^[[:space:]]*$/d'|sed '/^$/d'

2013中场休息

1
2
3
4
5
6
7
8
9
10
这篇博文是在gentoo下敲出来的
2013到底怎么了?
2012世界末日的诅咒吗?
小贝退役了
....
690多万大学生毕业
...
想说的太多了就不扯了
人不扯淡枉少年啊
特别讨厌虚伪的人做虚伪的事~~~

Python网络编程2

python网络编程之socket

code

(server2.py) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/env python
'''#/*=============================================================================
#
# Author: mengdaikun - mengdaikun@gmail.com
#
# QQ : 646978600
#
# Last modified: 2013-04-09 15:37
#
# Filename: server2.py
#
# Description: 
#
#=============================================================================*/'''
# basic server by python 

import os , sys , socket

host = ''
port = 5566

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind((host,port))
print "Waiting for connecting..."
s.listen(5)

while 1:
    clientsock , clientaddr = s.accept()
    print "Got connect from",clientsock.getpeername()
    clientsock.close()

Python网络编程1

网络编程之socket

code

(server1.py) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/env python
'''#/*=============================================================================
#
# Author: mengdaikun - mengdaikun@gmail.com
#
# QQ : 646978600
#
# Last modified: 2013-04-09 14:24
#
# Filename: server1.py
#
# Description: 
#
#=============================================================================*/'''
#server for python 

import sys,os,socket

host = ''
port = 5566

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind((host,port))
s.listen(1)

print "Server is running on port %d;press Ctrl-C to terminate." % port

while 1:
    clientsock,clientaddr = s.accept()
    clientfile = clientsock.makefile('rw',0)
    clientfile.write("Welcome, " + str(clientaddr) + "\n")
    clientfile.write("Please enter a string:")
    line = clientfile.readline().strip()
    clientfile.write("You enter %d characters.\n" % len(line))
    clientfile.close()
    clientsock.close()

OJ之python监控

利用python监控在线平台是否存活

code

(oj.py) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/env python
#check for oj
'''/*=============================================================================
#
# Author: mengdaiku - mengdaikun@gmail.com
#
# QQ : 646978600
#
# Last modified: 2013-05-20 16:09
#
# Filename: oj.py
#
# Description:python监控程序在线评判系统并发短信通知和邮件 
#
=============================================================================*/'''

import os
import time
import urllib

def count_string(weburl,string_tobe_find):
    try:
        web = urllib.urlopen(weburl).read()
    except:
        return -1
    string = str(web)

    return string.count(string_tobe_find)

def check():
    status = count_string('http://acm.cjlu.edu.cn/status.php',"waiting")

    if status == -1:
        os.system("/usr/local/fetion/fetion --sid=usid --pwd=passwd --to=18767161672 --msg-utf8=mdk-OJ-down!")
        #print time.ctime(time.time()),"OJ index can'n open","please check for oj"
    elif status > 1:
        os.system("/usr/local/fetion/fetion --sid=usid --pwd=passwd --to=18767161672 --msg-utf8=mdk-OJ-down!")
        #print time.ctime(time.time()),"OJ waiting now","please deal with"
    else:
        os.system("/usr/local/fetion/fetion --sid=usid --pwd=passwd --to=18767161672 --msg-utf8=mdk-OJ-normal!")
        #print time.ctime(time.time()),"Oj normal now!"

if __name__ == '__main__':
    print "\t OJ check now  by --python mdk"
    from time import sleep
    check()
    #check()
    sleep(5)

python网络爬虫之ACM

每一个acmer的一个福音,利用vim+爬虫代码提交代码,在putty里大作手脚啦

(AC.py) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''/*=============================================================================
#
# Author: mengdaiku - mengdaikun@gmail.com
#
# QQ : 646978600
#
# Last modified: 2013-05-20 15:59
#
# Filename: AC.py
#
# Description: submit for poj come from www.cnblogs.com/ma6174/archive/2012/07/26/2609791.html chang
# by mdk
# 
=============================================================================*/'''
import re
import sys
import logging
from time import sleep
import urllib,urllib2,cookielib
from bs4 import BeautifulSoup

class POJ:
    URL_HOME = 'http://poj.org/'
    URL_LOGIN = URL_HOME + 'login?'
    URL_SUBMIT = URL_HOME + 'submit?'
    URL_STATUS = URL_HOME + 'status?'
    #结果信息
    INFO =['RunID','User','Problem','Result','Memory','Time','Language','Code Length','Submit Time']
    #语言
    LANGUAGE = {
            'G++':'0',
            'GCC':'1',
            'JAVA':'2',
            'PASCAL':'3',
            'C++':'4',
            'C':'5',
            'FORTRAN':'6',
            }

    def __init__(self, user_id, password):
        self.user_id = user_id
        self.password = password
        cj = cookielib.LWPCookieJar()
        self.opener =urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
        urllib2.install_opener(self.opener)

    def login(self):
        data = dict(
                user_id1 = self.user_id,
                password1 = self.password,
                B1 = 'login',
                url = '.')
        postdata = urllib.urlencode(data)
        try:
            req = urllib2.Request(POJ.URL_LOGIN,postdata)
            res = self.opener.open(POJ.URL_LOGIN,postdata).read()
            if res.find('loginlog')>0:
                logging.info("login successful!")
                return True
            else:
                logging.error('login failed')
                return False
        except:
            logging.error('login failed')
            return False

    def submit(self,pid,language,src):
        submit_data = dict(
                problem_id = pid,
                language = POJ.LANGUAGE[language.upper()],
                source = src,
                submit = 'Submit',)
        postdata2 = urllib.urlencode(submit_data)
        try:
            req2 = urllib2.Request(POJ.URL_SUBMIT,data = postdata2)
            res = self.opener.open(POJ.URL_SUBMIT,postdata2).read()
            logging.info('submit successful')
            return True
        except:
            logging.error('submit error')
            return False

    def result(self,user_id):
        url = POJ.URL_STATUS + urllib.urlencode({'user_id':user_id})
        page = urllib2.urlopen(url)
        soup = BeautifulSoup(page)
        table = soup.findAll('table',{'class':'a'}) #提取表格
        pattern = re.compile(r'>[-+: \w]*<')  #正则表达式匹配需要的信息
        result = pattern.findall(str(table))
        #正在评判,编译或等待
        wait = ['Running & Judging','Compiling','Waiting']
        for i in range(3):
            if result[32][1:-1]==wait[i] or result[32][1:-1] == '':
                logging.info(result[32])
#                sleep(1)
                return False
        #最终结果在result序列中的位置
        num = [21,24,28,32,35,37,40,43,45]
        for i in range(9):
            print POJ.INFO[i],':',result[num[i]][1:-1]
        return True


if __name__=='__main__':
    #基础logging模块配置
    FORMAT = '----%(message)s----'
    logging.basicConfig(level=logging.INFO,format = FORMAT)
    if len(sys.argv) > 1: #从外部传入参数
        user_id = 'username'
        pwd = 'userpasswd'
        pid, lang, src, = sys.argv[1:]
        src = open(src,'r').read()
    else:  #测试
        user_id = '5566mdk'
        pwd = '5566mdk'
        pid = 1000
        lang = 'gcc'
        src = '''
        #include<stdio.h>
        int main()
        {
            int a,b;
            scanf("%d%d",&a,&b);
            printf("%d",a+b);
            return 0;
        }
        '''
    logging.info('connecting to server')
    poj = POJ(user_id,pwd)
    if poj.login():
        logging.info("submiting")
        if poj.submit(pid,lang,src):
            logging.info('getting result')
            status = poj.result(user_id)
            while status!=True:  #直到检测到结果
                status = poj.result(user_id)

Python天气预报

利用python提取网页版的天气预报放入一个文件,并用shell提取今明两天的做fetion发送的内容,把脚本放入crontab shell脚本在这里略 code

(tianqi.py) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/env python
#coding:utf-8
'''/*=============================================================================
#
# Author: mengdaiku - mengdaikun@gmail.com
#
# QQ : 646978600
#
# Last modified: 2013-05-20 16:11
#
# Filename: tianqi.py
#
# Description: 网络抓取网页天气预报并利用split整合发短信通知(发信脚本略) 
#
=============================================================================*/'''


import sys, re, urllib2, datetime
from HTMLParser import HTMLParser

class main(HTMLParser):
    def __init__(self):
        HTMLParser.__init__(self)
        self.tarsum = ['td','th','br']
        self.readingtitle = 0
        self.curtag = None
        self.curattrs = 0
        self.marktag = None
        self.result = {}
        self.timeclock = 0
        for i in range(0,7):
            self.result[datetime.date.today() + datetime.timedelta(days=i)] = []
    def handle_starttag(self,tag,attrs):
        self.curtag = tag
        self.curattrs = len(attrs)
        if tag == 'table' and len(attrs) == 7:
            self.readingtitle = 1
            self.marktag = tag
        if self.readingtitle == 1:
            if tag == self.marktag:
                self.timeclock = -2
            elif tag == 'td':
                self.timeclock += 1
    def handle_data(self,data):
        if self.curtag in self.tarsum and self.curattrs == 0 and self.readingtitle == 1:
            days = datetime.date.today() + datetime.timedelta(days=self.timeclock)
           # self.result[days].append(data.strip())
            self.result[days].append(data.strip())
    def handle_endtag(self,tag):
        if tag == self.marktag:
            self.readingtitle = 0
    def getvalue(self):
        return self.result

if __name__ == '__main__':
    url = urllib2.urlopen('http://qq.ip138.com/weather/zhejiang/HangZhou.htm')
    page = url.read()
    page = unicode(page,'gb2312','ignore').encode('utf-8','ignore')
    line = main()
    line.feed(page)
    for key,value in line.getvalue.items():
        print key,
        for a in value:
            print a,
        print

搬家了

~终于搬好家了~抛弃了wordpress~之前在新浪sae搞过~但效果不理想~以后就在这里安家一段时间了~之所以选op而不选wp~op拥有wp所没有的~支持git&github 装好后直接几个命令就可以发表博文了~

1
2
3
4
5
$ rake new_post["name"] # 发表的博文名
$ rake new_page["name"] # 页面 
$vim *.markdown 
$ rake generate
$ rake deploy

就这么命令,代码支持高亮~重要的是可用vim ^_^

依旧沿街摆摊中~哈哈~没钱买vps啊啊啊啊

苦逼一枚

纪念搬家在此留下一笔

周一的面试

1
time: 2013 5 13 4:30 ~ 5:30 
1
国内一家大的互联网公司
1
address:浙大路41号汉庭酒店301
1
面试官: 资深码农(SA吧)
1
二逼码农:mdk
1
2
3
4
5
6
7
8
9
10
11
main()
{
  1.tcp/ip 七层协议
  2.tcp/ip 三次握手
  3.tcp/ip 状态
  4.个人的一些情况
  5.deal access.log with shell(awk,sed,re)
  6.个人项目
  7.一些OS的问题
  .........
}
(mdk1.sh) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/bash - 
#===============================================================================
#
#          FILE: mdk1.sh
# 
#         USAGE: ./mdk1.sh 
# 
#   DESCRIPTION: the total process apache or nginx
# 
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: ---
#         NOTES: ---
#        AUTHOR: mengdaikun (), 
#  ORGANIZATION: 
#       CREATED: 2013Äê05ÔÂ18ÈÕ 13ʱ22·Ö00Ãë CST
#      REVISION:  ---
#===============================================================================

set -o nounset                              # Treat unset variables as an error

# for httpd
total1=`ps aux | grep httpd | grep -v grep | wc -l`
#for apache
total2=`ps aux | grep apache | grep -v grep | wc -l`
#for nginx 
total3=`ps aux | grep nginx | grep -v grep | wc -l`

echo "the total process is : httpd:$total1  apache : $total2 nginx : $total3"
(mdk2.sh) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash - 
#===============================================================================
#
#          FILE: mdk2.sh
# 
#         USAGE: ./mdk2.sh 
# 
#   DESCRIPTION: check total in tcp port 80 
# 
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: ---
#         NOTES: ---
#        AUTHOR: mengdaikun (), 
#  ORGANIZATION: 
#       CREATED: 2013Äê05ÔÂ18ÈÕ 13ʱ32·Ö42Ãë CST
#      REVISION:  ---
#===============================================================================

set -o nounset                              # Treat unset variables as an error

total=`netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l`

echo "the total connect in tcp port 80 have $total"
(mdk3.sh) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash - 
#===============================================================================
#
#          FILE: mdk3.sh
# 
#         USAGE: ./mdk3.sh 
# 
#   DESCRIPTION: total the ip address
# 
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: ---
#         NOTES: ---
#        AUTHOR: mengdaikun (), 
#  ORGANIZATION: 
#       CREATED: 2013Äê05ÔÂ18ÈÕ 13ʱ41·Ö24Ãë CST
#      REVISION:  ---
#===============================================================================

set -o nounset                              # Treat unset variables as an error

echo "the total ipddress is:"

cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr
(mdk4.sh) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash - 
#===============================================================================
#
#          FILE: mdk4.sh
# 
#         USAGE: ./mdk4.sh 
# 
#   DESCRIPTION: view the url page
# 
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: ---
#         NOTES: ---
#        AUTHOR: mengdaikun (), 
#  ORGANIZATION: 
#       CREATED: 2013Äê05ÔÂ18ÈÕ 13ʱ44·Ö32Ãë CST
#      REVISION:  ---
#===============================================================================

set -o nounset                              # Treat unset variables as an error

echo "the view page:"

cat access.log | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 20
(mdk5.sh) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash - 
#===============================================================================
#
#          FILE: mdk5.sh
# 
#         USAGE: ./mdk5.sh 
# 
#   DESCRIPTION: tcpdump
# 
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: ---
#         NOTES: ---
#        AUTHOR: mengdaikun (), 
#  ORGANIZATION: 
#       CREATED: 2013Äê05ÔÂ18ÈÕ 13ʱ48·Ö15Ãë CST
#      REVISION:  ---
#===============================================================================

set -o nounset                              # Treat unset variables as an error

echo "the port 80 in tcpdump"

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F . '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -rn | head -n 20
(mdk6.sh) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash - 
#===============================================================================
#
#          FILE: mdk6.sh
# 
#         USAGE: ./mdk6.sh 
# 
#   DESCRIPTION: up address view page
# 
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: ---
#         NOTES: ---
#        AUTHOR: mengdaikun (), 
#  ORGANIZATION: 
#       CREATED: 2013Äê05ÔÂ18ÈÕ 13ʱ54·Ö58Ãë CST
#      REVISION:  ---
#===============================================================================

set -o nounset                              # Treat unset variables as an error

awk '{++s[$1]} END {for ( i in s) print i,s[i]}' access.log
(mdk7.sh) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash - 
#===============================================================================
#
#          FILE: mdk7.sh
# 
#         USAGE: ./mdk7.sh 
# 
#   DESCRIPTION: 
# 
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: ---
#         NOTES: ---
#        AUTHOR: mengdaikun (), 
#  ORGANIZATION: 
#       CREATED: 2013Äê05ÔÂ18ÈÕ 15ʱ02·Ö06Ãë CST
#      REVISION:  ---
#===============================================================================

set -o nounset                              # Treat unset variables as an error

sleep 10&

id=$!

char=("-" "/" "|" "\\")

n=0

while ps aux | grep "^[[:space:]]*id" > /dev/null
do
  echo -ne "\rwaiting...${char[$n]}"
  n=$(( (n+1)%4 ))
  sleep 1
done

echo OK.

总结完毕 ^_^

Myvimrc

my vimrc

(myvimrc) download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
set syntax=on

set noeb

set confirm

set autoindent
set cindent

set tabstop=4

set softtabstop=4
set shiftwidth=4

set noexpandtab

set smarttab

set number
set history=1000

set nobackup
set noswapfile

set ignorecase

set hlsearch
set incsearch

set gdefault

set enc=utf-8
set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936

set langmenu=zh_CN.UTF-8
set helplang=cn

set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%d/%m/%y\ -\ %H:%M\")}

set laststatus=2

set ruler

set cmdheight=2

filetype on

filetype plugin on

filetype indent on

set viminfo+=!

set iskeyword+=_,$,@,%,#,-

set linespace=0

set wildmenu

set backspace=2

set whichwrap+=<,>,h,l

set mouse=a
set selection=exclusive
set selectmode=mouse,key

set report=0

set shortmess=atI

set fillchars=vert:\ ,stl:\ ,stlnc:\

set showmatch

set matchtime=5

set scrolloff=3

set smartindent

if has("autocmd")
   autocmd FileType xml,html,c,cs,java,perl,shell,bash,cpp,python,vim,php,ruby set number
   autocmd FileType xml,html vmap <C-o> <ESC>'<i<!--<ESC>o<ESC>'>o-->
   autocmd FileType java,c,cpp,cs vmap <C-o> <ESC>'<o/*<ESC>'>o*/
   autocmd FileType html,text,php,vim,c,java,xml,bash,shell,perl,python setlocal textwidth=100
   autocmd Filetype html,xml,xsl source $VIMRUNTIME/plugin/closetag.vim
   autocmd BufReadPost *
      \ if line("'\"") > 0 && line("'\"") <= line("$") |
      \   exe "normal g`\"" |
      \ endif
endif " has("autocmd")

map <F5> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
exec "!gcc % -o %<"
exec "! ./%<"
endfunc

map <F6> :call CompileRunGpp()<CR>
func! CompileRunGpp()
exec "w"
exec "!g++ % -o %<"
exec "! ./%<"
endfunc

map <F7> :w<cr>:!python %<cr>


map <F8> :call CompileRunSH()<CR>
func! CompileRunSH()
exec "w"
exec "!chmod u+x %"
exec "!./%"
endfunc


map <F9> :call Debug()<CR>
func!  Debug()
exec "w"
exec "!gcc % -o %< -gstabs+"
exec "!gdb %<"
endfunc

set encoding=utf-8
function! SetFileEncodings(encodings)
    let b:myfileencodingsbak=&fileencodings
    let &fileencodings=a:encodings
endfunction
function! RestoreFileEncodings()
    let &fileencodings=b:myfileencodingsbak
    unlet b:myfileencodingsbak
endfunction

au BufReadPre *.nfo call SetFileEncodings('cp437')|set ambiwidth=single
au BufReadPost *.nfo call RestoreFileEncodings()

au BufRead,BufNewFile *  setfiletype txt

set foldenable
set foldmethod=manual
nnoremap <space> @=((foldclosed(line('.')) < 0) ? 'zc' : 'zo')<CR>

let g:miniBufExplMapWindowNavVim = 1
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplModSelTarget = 1
:colorscheme evening
filetype plugin indent on
set guifont=Courier\ 12
set nocompatible
let $VIMFILES=$HOME.'/.vim'
map <F4> :call TitleDet()<cr>'s
function AddTitle()
    call append(0,"/*=============================================================================")
    call append(1,"#")
    call append(2,"# Author: mengdaiku - mengdaikun@gmail.com")
    call append(3,"#")
    call append(4,"# QQ : 646978600")
    call append(5,"#")
    call append(6,"# Last modified: ".strftime("%Y-%m-%d %H:%M"))
    call append(7,"#")
    call append(8,"# Filename: ".expand("%:t"))
    call append(9,"#")
    call append(10,"# Description: ")
    call append(11,"#")
    call append(12,"=============================================================================*/")
    echohl WarningMsg | echo "Successful in adding the copyright." | echohl None
endf
"更新最近修改时间和文件名
function UpdateTitle()
    normal m'
    execute '/# *Last modified:/s@:.*$@\=strftime(":\t%Y-%m-%d %H:%M")@'
    normal ''
    normal mk
    execute '/# *Filename:/s@:.*$@\=":\t\t".expand("%:t")@'
    execute "noh"
    normal 'k
    echohl WarningMsg | echo "Successful in updating the copy right." | echohl None
endfunction
"判断前10行代码里面,是否有Last modified这个单词,
"如果没有的话,代表没有添加过作者信息,需要新添加;
"如果有的话,那么只需要更新即可
function TitleDet()
    let n=1
    "默认为添加
    while n < 10
        let line = getline(n)
        if line =~ '^\#\s*\S*Last\smodified:\S*.*$'
            call UpdateTitle()
            return
        endif
        let n = n + 1
    endwhile
    call AddTitle()
endfunction
map <F3> :call TitleDet1()<cr>'s
function AddTitle1()
    call append(0,"#/*=============================================================================")
    call append(1,"#")
    call append(2,"# Author: mengdaikun - mengdaikun@gmail.com")
    call append(3,"#")
    call append(4,"# QQ : 646978600")
    call append(5,"#")
    call append(6,"# Last modified: ".strftime("%Y-%m-%d %H:%M"))
    call append(7,"#")
    call append(8,"# Filename: ".expand("%:t"))
    call append(9,"#")
    call append(10,"# Description: ")
    call append(11,"#")
    call append(12,"#=============================================================================*/")
    echohl WarningMsg | echo "Successful in adding the copyright." | echohl None
endf
"更新最近修改时间和文件名
function UpdateTitle1()
    normal m'
    execute '/# *Last modified:/s@:.*$@\=strftime(":\t%Y-%m-%d %H:%M")@'
    normal ''
    normal mk
    execute '/# *Filename:/s@:.*$@\=":\t\t".expand("%:t")@'
    execute "noh"
    normal 'k
    echohl WarningMsg | echo "Successful in updating the copy right." | echohl None
endfunction
"判断前10行代码里面,是否有Last modified这个单词,
"如果没有的话,代表没有添加过作者信息,需要新添加;
"如果有的话,那么只需要更新即可
function TitleDet1()
    let n=1
    "默认为添加
    while n < 10
        let line = getline(n)
        if line =~ '^\#\s*\S*Last\smodified:\S*.*$'
            call UpdateTitle1()
            return
        endif
        let n = n + 1
    endwhile
    call AddTitle1()
endfunction
map <F2> :call TitleDet2()<cr>'s
function AddTitle2()
    call append(0,"'''/*=============================================================================")
    call append(1,"#")
    call append(2,"# Author: mengdaikun - mengdaikun@gmail.com")
    call append(3,"#")
    call append(4,"# QQ : 646978600")
    call append(5,"#")
    call append(6,"# Last modified: ".strftime("%Y-%m-%d %H:%M"))
    call append(7,"#")
    call append(8,"# Filename: ".expand("%:t"))
    call append(9,"#")
    call append(10,"# Description: ")
    call append(11,"#")
    call append(12,"=============================================================================*/'''")
    echohl WarningMsg | echo "Successful in adding the copyright." | echohl None
endf
"更新最近修改时间和文件名
function UpdateTitle2()
    normal m'
    execute '/# *Last modified:/s@:.*$@\=strftime(":\t%Y-%m-%d %H:%M")@'
    normal ''
    normal mk
    execute '/# *Filename:/s@:.*$@\=":\t\t".expand("%:t")@'
    execute "noh"
    normal 'k
    echohl WarningMsg | echo "Successful in updating the copy right." | echohl None
endfunction
"判断前10行代码里面,是否有Last modified这个单词,
"如果没有的话,代表没有添加过作者信息,需要新添加;
"如果有的话,那么只需要更新即可
function TitleDet2()
    let n=1
    "默认为添加
    while n < 10
        let line = getline(n)
        if line =~ '^\#\s*\S*Last\smodified:\S*.*$'
            call UpdateTitle2()
            return
        endif
        let n = n + 1
    endwhile
    call AddTitle2()
endfunction
set t_Co=256
colorscheme darkburn
let g:SuperTabRetainCompletionType=2
let g:SuperTabDefaultCompletionType="<C-X><C-O>"