<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>帅朱&#124;朱帅&#039;s Blog</title>
	<atom:link href="http://www.shuaizhu.com/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.shuaizhu.com/wordpress</link>
	<description>Simply is the Best</description>
	<lastBuildDate>Fri, 30 Dec 2011 06:20:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.2</generator>
		<item>
		<title>vim查找与替换</title>
		<link>http://www.shuaizhu.com/wordpress/vim%e6%9f%a5%e6%89%be%e4%b8%8e%e6%9b%bf%e6%8d%a2/</link>
		<comments>http://www.shuaizhu.com/wordpress/vim%e6%9f%a5%e6%89%be%e4%b8%8e%e6%9b%bf%e6%8d%a2/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 06:20:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.shuaizhu.com/wordpress/?p=2117</guid>
		<description><![CDATA[&#34; 搜索 /joe/e : 设置光标到匹配&#34;joe&#34;的末尾 /joe/e+1 : 设置光标到匹配&#34;joe&#34;的末尾再后移一位 /joe/s-2 : 设置光标到匹配&#34;joe“的开头再前移两位 /^joe.*fred.*bill/ : 匹配以'j'开头且&#34;joe&#34;到&#34;fred&#34;到&#34;bill&#34;之间至少有一个字符 /^[A-J]\+/ : 搜索'A'到’J‘重复两次以上的开头行 /begin\_.*end : 多行匹配 /fred\_s*joe/i : 可以是任何空白字符包括\n,\t等等 /fred\&#124;joe : 搜索fred或者joe /.*fred\&#38;.*joe : 搜索同时包括fred跟joe的行 /\&#60;fred\&#62;/i : 搜索独立的单词fred /\&#60;\d\d\d\d\&#62; : 搜索独立的4位数字 /\D\d\d\d\d\D : 搜索6位字符串中间4位数字前后两位不能为数字 /\&#60;\d\{4}\&#62; : 同/\&#60;\d\d\d\d\&#62; &#34; 查找空行 /^\n\{3} : 匹配三连续的空行 &#34; 使用正则表达式组查找 /\(fred\).*\(joe\).*\2.*\1 &#34; 正则表达式重复 /^\([^,]*,\)\{8} &#34; visual searching [...]]]></description>
			<content:encoded><![CDATA[<pre class="brush: php; title: ;">

&quot; 搜索
/joe/e : 设置光标到匹配&quot;joe&quot;的末尾
/joe/e+1 : 设置光标到匹配&quot;joe&quot;的末尾再后移一位
/joe/s-2 : 设置光标到匹配&quot;joe“的开头再前移两位
/^joe.*fred.*bill/ : 匹配以'j'开头且&quot;joe&quot;到&quot;fred&quot;到&quot;bill&quot;之间至少有一个字符
/^[A-J]\+/ : 搜索'A'到’J‘重复两次以上的开头行
/begin\_.*end : 多行匹配
/fred\_s*joe/i : 可以是任何空白字符包括\n,\t等等
/fred\|joe : 搜索fred或者joe
/.*fred\&amp;.*joe : 搜索同时包括fred跟joe的行
/\&lt;fred\&gt;/i : 搜索独立的单词fred
/\&lt;\d\d\d\d\&gt; : 搜索独立的4位数字
/\D\d\d\d\d\D : 搜索6位字符串中间4位数字前后两位不能为数字
/\&lt;\d\{4}\&gt; : 同/\&lt;\d\d\d\d\&gt;
&quot; 查找空行
/^\n\{3} : 匹配三连续的空行
&quot; 使用正则表达式组查找
/\(fred\).*\(joe\).*\2.*\1
&quot; 正则表达式重复
/^\([^,]*,\)\{8}
&quot; visual searching
:vmap // y/&lt;C-R&gt;&quot;&lt;CR&gt; : visually模式下的键盘映射，把//映射成匹配当前选中的文本
:vmap &lt;silent&gt; // y/&lt;C-R&gt;=escape(@&quot;, '\\/.*$^~[]')&lt;CR&gt;&lt;CR&gt; : 包括空白字符
&quot; \zs 和 \ze 匹配原 :h /\zs
/&lt;\zs[^&gt;]*\ze&gt; : 匹配尖括号中的内容
&quot; 零宽度匹配 :h /\@=
/&lt;\@&lt;=[^&gt;]*&gt;\@= : search for tag contents, ignoring chevrons
/&lt;\@&lt;=\_[^&gt;]*&gt;\@= : search for tags across possible multiple lines
&quot; 多行查找 \_ 的意思是包括换行符
/&lt;!--\_p\{-}--&gt; : 匹配&lt;!--开始到--&gt;结尾的所有内容
/fred\_s*joe/i : 匹配fred开始到joe，之间一定得是空白字符
/bugs\(\_.\)*bunny : 匹配所有bugs到bunny的字符串
:h \_ : help
&quot; 查找函数声明，nmap为normal模式下的键盘映射
:nmap gx yiw/^\(sub\&lt;bar&gt;function\)\s\+&lt;C-R&gt;&quot;&lt;CR&gt;
&quot; 查找多个文件
:bufdo /searchstr/ : 在多个文件缓冲区里执行查找
&quot; 更好的多文件查找定位方法
:bufdo %s/searchstr/&amp;/gic : 在多个文件缓冲区里查找，按下n停止
&quot; 怎样不使用 / 来查找网址
?http://www.vim.org/ : 向后查找
&quot; 查找指定字符以外的字符串
/\c\v([^aeiou]&amp;\a){4} : 查找4个辅音字母
----------------------------------------
#替换
:%s/fred/joe/igc : 普通替换命令
:%s/\r//g : 删除 DOS 的换行符 ^M
&quot; 你的文本文件是否乱七八糟的排成一行？使用如下命令
:%s/\r/\r/g : 转换 DOS 回车符 ^M 为真正的回车符
:%s= *$== : 删除行尾空白
:%s= \+$== : 同上
:%s#\s*\r\?$## : 删除尾部空白和dos换行符
:%s#\s*\r*$## : 同上
&quot; 删除空行
:%s/^\n\{3}// : 删除连续3个空行
:%s/^\n\+/\r/ : 压缩空行，多个替换为一个
%s#&lt;[^&gt;]\+&gt;##g : 删除html的tag部分
&quot; IF YOU ONLY WANT TO KNOW ONE THING
:'a,'bg/fred/s/dick/joe/igc : 非常有用
# 译释：''a,''b指定一个范围：mark a ~ mark b
# g//用一个正则表达式指出了进行操作的行必须可以被fred匹配
# 看后面，g//是一个全局显示命令
# s/dick/joe/igc则对于这些满足条件的行进行替换
&quot; 复制列
:%s= [^ ]\+$=&amp;&amp;= : 复制最后一列
:%s= \f\+$=&amp;&amp;= : 一样
:%s= \S\+$=&amp;&amp; : 晕，还一样！
&quot; 记忆（反向引用）
:s/\(.*\):\(.*\)/\2 : \1/ : 将两个字段颠倒
:%s/^\(.*\)\n\1$/\1/ : 删除重复行
&quot; 非贪婪匹配 \{-}
:%s/^.\{-}pdf/new.pdf/ : 删除第一个pdf
&quot; use of optional atom \?
:%s#\&lt;[zy]\?tbl_[a-z_]\+\&gt;#\L&amp;#gc : lowercase with optional leading characters
&quot; 跨越尽量多的行
:%s/&lt;!--\_.\{-}--&gt;// : 删除多行注释
:help /\{-} : 查看非贪婪匹配的更多帮助
&quot; 使用寄存器替换
:s/fred/&lt;c-r&gt;a/g : 将fred替换为寄存器a里的内容
:s/fred/&lt;c-r&gt;asome_text&lt;c-r&gt;s/g
:s/fred/\=@a/g : better alternative as register not displayed
&quot; 在一行里写多种命令
:%s/\f\+\.gif\&gt;/\r&amp;\r/g | v/\.gif$/d | %s/gif/jpg/
:%s/a/but/gie|:update|:next : 当使用 @: 来重复
&quot; 或运算
:%s/suck\|buck/loopy/gc : 替换suck或者buck（这里|不是管道）
&quot; 调用vim函数
:s/__date__/\=strftime(&quot;%c&quot;)/ : 将__date__替换成当前日期，使用strftime函数
&quot; 处理列，替换所有在第三列中的str1
:%s:\(\(\w\+\s\+\)\{2}\)str1:\1str2:
&quot; 交换第一列跟第四列
:%s:\(\w\+\)\(.*\s\+\)\(\w\+\)$:\3\2\1:
&quot; 过滤form中的内容放在寄存器里
:redir @*|sil exec 'g#&lt;\(input\|select\|textarea\|/\=form\)\&gt;#p'|redir END
:nmap ,z :redir @*&lt;Bar&gt;sil exec 'g@&lt;\(input\&lt;Bar&gt;select\&lt;Bar&gt;textarea\&lt;Bar&gt;
/\=form\)\&gt;@p'&lt;Bar&gt;redir END&lt;CR&gt;
&quot; 两位以上的数字减三（带进位。这个命令挺有趣）
:%s/\d\+/\=(submatch(0)-3)/
&quot; 包含loc或者functions的行中的数字加6
:g/loc\|function/s/\d/\=submatch(0)+6/
&quot; 比上面更好的方法
:%s#txtdev\zs\d#\=submatch(0)+1#g
:h /\zs 查看帮助
&quot; 前缀为gg的数字加6
:%s/\(gg\)\@&lt;=\d\+/\=submatch(0)+6/
:h zero-width 查看帮助
&quot; 替换一个特定字符串为数字
:let i=10 | 'a,'bg/Abc/s/yy/\=i/ |let i=i+1 # 将yy转换成10，11，12等等
&quot; 比上面的更精确
:let i=10 | 'a,'bg/Abc/s/xx\zsyy\ze/\=i/ |let i=i+1 # 将xxyy 转换成 xx11,xx12,
xx13
&quot; find replacement text, put in memory, then use \zs to simplify substitute
:%s/&quot;\([^.]\+\).*\zsxx/\1/
&quot; Pull word under cursor into LHS of a substitute
:nmap &lt;leader&gt;z :%s#\&lt;&lt;c-r&gt;=expand(&quot;&lt;cword&gt;&quot;)&lt;cr&gt;\&gt;#
&quot; Pull Visually Highlighted text into LHS of a substitute
:vmap &lt;leader&gt;z :&lt;C-U&gt;%s/\&lt;&lt;c-r&gt;*\&gt;/
----------------------------------------
&quot; all following performing similar task, substitute within substitution
&quot; Multiple single character substitution in a portion of line only
:%s,\(all/.*\)\@&lt;=/,_,g : replace all / with _ AFTER &quot;all/&quot;
&quot; Same thing
:s#all/\zs.*#\=substitute(submatch(0), '/', '_', 'g')#
&quot; Substitute by splitting line, then re-joining
:s#all/#&amp;^M#|s#/#_#g|-j!
&quot; Substitute inside substitute
:%s/.*/\='cp '.submatch(0).' all/'.substitute(submatch(0),'/','_','g')/
----------------------------------------
&quot; 全局显示命令
:g/gladiolli/# : 查找并显示匹配的行号
:g/fred.*joe.*dick/ : 显示所有含有 fred,joe &amp; dick的行
:g/\&lt;fred\&gt;/ : 显示单一单词fred
:g/^\s*$/d : 删除所有空行
:g!/^dd/d : 删除不含字符串''dd''的行
:v/^dd/d : 同上
:g/fred/,/joe/d : 删除所有的从fred到joe
:g/-------/.-10,.d : 以-------为标记删除之前的10行
:g/{/ ,/}/- s/\n\+/\r/g : 删除 {...}之间的空行
:v/\S/d : Delete empty lines (both types)
:v/./,/./-j : 压缩空行
:g/^$/,/./-j : 同上
:g/&lt;input\|&lt;form/p : 或运算
:g/^/put_ : 双倍行宽 (pu = put)
:g/^/m0 : 颠倒文件 (m = move)
:'a,'bg/^/m'b : 颠倒选中的 a 到 b
:g/^/t. : 重复行
:g/fred/t$ : 拷贝行从fred到结尾
:g/stage/t'a : 拷贝行从stage 到 marker a（a为标记的位置）
:g/\(^I[^^I]*\)\{80}/d : 删除最少包含80个tab的行
&quot; perform a substitute on every other line
:g/^/ if line('.')%2|s/^/zz /
&quot; match all lines containing &quot;somestr&quot; between markers a &amp; b
&quot; copy after line containing &quot;otherstr&quot;
:'a,'bg/somestr/co/otherstr/ : co(py) or mo(ve)
&quot; as above but also do a substitution
:'a,'bg/str1/s/str1/&amp;&amp;&amp;/|mo/str2/
:%norm jdd : 隔行删除
&quot; 增加数字 (键入 &lt;c-a&gt;)
:.,$g/^\d/exe &quot;norm! \&lt;c-a&gt;&quot;: 增加从当前行首到结尾的数字
:'a,'bg/\d\+/norm! ^A : 增加数字
&quot; 保存全局命令的结果 (注意必须使用添加模式) 你需要使用 qaq 清空寄存器a.
&quot;save results to a register/paste buffer 存储结果到 寄存器/粘贴 到 a
:g/fred/y A : 添加配备行到寄存器到 a
:g/fred/y A | :let @*=@a : 放入复制缓冲区
:let @a=''|g/Barratt/y A |:let @*=@a
:'a,'b g/^Error/ . w &gt;&gt; errors.txt
&quot; 复制每一行，然后在复制出来的每一行两侧加上一个 print '复制出来的内容'
:g/./yank|put|-1s/'/&quot;/g|s/.*/Print '&amp;'/
&quot; 用文件中的内容替换字符串，-d 表示删除“标记”
:g/^MARK$/r tmp.ex | -d
&quot; display prettily
:g/&lt;pattern&gt;/z#.5 : display with context
:g/&lt;pattern&gt;/z#.5|echo &quot;==========&quot; : display beautifully
&quot; Combining g// with normal mode commands
:g/|/norm 2f|r* : replace 2nd | with a star
&quot;send output of previous global command to a new window
:nmap &lt;F3&gt; :redir @a&lt;CR&gt;:g//&lt;CR&gt;:redir END&lt;CR&gt;:new&lt;CR&gt;:put! a&lt;CR&gt;&lt;CR&gt;
----------------------------------------
&quot; 全局命令和替换命令联姻 (强大的编辑能力)
:'a,'bg/fred/s/joe/susan/gic : 可以使用反向引用来匹配
:g/fred/,/joe/s/fred/joe/gic : non-line based (ultra)
----------------------------------------
&quot; 先找fred，然后找joe
:/fred/;/joe/-2,/sid/+3s/sally/alley/gIC
----------------------------------------
&quot; create a new file for each line of file eg 1.txt,2.txt,3,txt etc
:g/^/exe &quot;.w &quot;.line(&quot;.&quot;).&quot;.txt&quot;
----------------------------------------
&quot; Absolutely essential
----------------------------------------
* # g* g# : 查找当前光标下的单词（单个单词） (&lt;cword&gt;) (向前/向后)
% : 匹配括号 {}[]()
. : 重复上次操作
@: : 重复上次的命令
matchit.vim : 适%能匹配 &lt;script&gt; &lt;?php等标记
&lt;C-N&gt;&lt;C-P&gt; : 插入模式下自动完成填词
&lt;C-X&gt;&lt;C-L&gt; : 行自动完成（超级有用）
/&lt;C-R&gt;&lt;C-W&gt; : 把单个&lt;cword&gt;单词放入搜索或者命令行
/&lt;C-R&gt;&lt;C-A&gt; : 把字符串中有的单词&lt;CWORD&gt;放入搜索或者命令行
:set ignorecase : 忽略大小写
:syntax on : 打开语法高亮 Perl,HTML,PHP 等等
:h regexp&lt;C-D&gt; : 按ctrl+d得到包含regexp的列表
(按tab自动不齐)
----------------------------------------
&quot; 简单编辑更新 _vimrc文件
:nmap ,s :source $VIM/_vimrc :普通模式下的键盘映射 ,s映射成加载用户目录下的
_vimrc文件
:nmap ,v :e $VIM/_vimrc :,v映射成打开_vimrc文件
----------------------------------------
#VISUAL 模式 (方便增加 HTML 标签)
:vmap sb &quot;zdi&lt;C-R&gt;z&lt;ESC&gt; : 在 VISUALLY模式下将选中的文本前后分别加上
:vmap st &quot;zdi&lt;?= &lt;C-R&gt;z ?&gt;&lt;ESC&gt; : 加上 &lt;?= ?&gt;
----------------------------------------
&quot; 浏览
:Exp(lore) : 浏览文件
:Sex(plore) : 分割窗口浏览文件
:ls : 显示缓冲区
:cd .. : 设置当前目录位置
:args : 查看当前打开的所有文件
:lcd %:p:h : 改变路径到当前编辑的文件
:autocmd BufEnter * lcd %:p:h : 放入.vimrc自动完成上面的命令
----------------------------------------
&quot; 缓冲区浏览(一直排名前10的vim脚本)
&quot; 需要 bufexplorer.vim http://www.vim.org/script.php?script_id=42
\be : 缓冲浏览器中查看缓冲列表
\bs : 同上，但是分割窗口
----------------------------------------
&quot; 转换大小写
guu : 将正行的字母转换成小写
gUU : 将正行的字母转换成大写
Vu : 转换选中的行（小写）
VU : 转换选中的行（大写）
g~~ : 反向转换
vEU : 转换词大写
vE~ : 反向转换词
ggguG : 将当前编辑文件内容全部转换成小写
&quot; Visually 模式下选择所有的字母及数字 (放入 .vimrc文件中)
vmap ,c :s/\&lt;\(.\)\(\k*\)\&gt;/\u\1\L\2/g&lt;CR&gt;
&quot; 大写所有句子的第一个字母
:%s/[.!?]\_s\+\a/\U&amp;\E/g
----------------------------------------
gf : 打开当前光标下或后的文件
:nnoremap gF :view &lt;cfile&gt;&lt;cr&gt; : 打开当前光标下或后的文件, 如果不存在则创建
ga : 显示当前光标下单个字的ascii,十进制，十六进制……
ggVGg? : 将整个文件用rot13编码……（谁看得懂啊~~hoho)
ggg?G : 同上 (针对大文件)
:8 | normal VGg? : 将第八行用rot13编码
:normal 10GVGg? : 同上
&lt;C-A&gt;,&lt;C-X&gt; : 增加，减少当前光标下的数字
win32 用户需要重定义 CNTRL-A
&lt;C-R&gt;=5*5 : 插入25 (小型计算器)
----------------------------------------
&quot; 几个彩蛋……
:h 42 : also http://www.google.com/search?q=42
:h holy-grail
:h!
----------------------------------------
&quot; 标记 &amp; 移动
'. : 跳回最后编辑的行 (超有用)
`. : 同上，但是定位编辑点
g; : 跳转到比较旧的编辑位置（如果有的话） (vim6.3后的新功能)
g, : 这个是较心的位置 (同上)
:changes :打出改变表
:h changelist : 查看“改变表跳转”的帮助
&lt;C-O&gt; : 依次沿着你的跳转记录向回跳 (从最近的一次开始)
&lt;C-I&gt; : 依次沿着你的跳转记录向前跳
:ju(mps) : 列出跳转轨迹
:help jump-motions
:history : 列出历史记录
:his c : 命令行历史
:his s : 搜索历史
q/ : 搜索命令历史的窗口
q: : 命令行命令历史的窗口
:&lt;C-F&gt; : 历史窗口
----------------------------------------
&quot; 缩写 &amp; 映射
:map &lt;f7&gt; :'a,'bw! c:/aaa/x
:map &lt;f8&gt; :r c:/aaa/x
:map &lt;f11&gt; :.w! c:/aaa/xr&lt;CR&gt;
:map &lt;f12&gt; :r c:/aaa/xr&lt;CR&gt;
:ab php : 查看以php开头的缩写
:map , : 列出所有的映射（以逗号开始的）
&quot; 允许映射 F10 (win32)
set wak=no : :h winaltkeys
&quot; 映射中常使用的表示
&lt;CR&gt; : 回车
&lt;ESC&gt; : Esc
&lt;LEADER&gt; : 右斜杠
&lt;BAR&gt; : 管道符号
&lt;BACKSPACE&gt; : 退格键
&lt;SILENT&gt; : 不回显
#显示自定义的 RGB 颜色显示当前光标下的字符串 例如 #445588
:nmap &lt;leader&gt;c :hi Normal guibg=#&lt;c-r&gt;=expand(&quot;&lt;cword&gt;&quot;)&lt;cr&gt;&lt;cr&gt;
map &lt;f2&gt; /price only\\|versus/ :in a map need to backslash the \
----------------------------------------
&quot; Simple PHP debugging display all variables yanked into register a
&quot; 简单的 PHP 调试将所有显示的变量放入寄存器a
iab phpdb exit(&quot;&lt;hr&gt;Debug &lt;C-R&gt;a &quot;);
----------------------------------------
&quot; 使用寄存器来映射 (放入 .vimrc文件自动加载)
:let @m=&quot;:'a,'bs/&quot;
:let @s=&quot;:%!sort -u&quot;
----------------------------------------
&quot; 列出寄存器
:reg : 显示当前所有的寄存器
:reg a : 显示寄存器a中的内容
&quot;1p.... : 引用一个叫1的寄存器
:let @y='yy@&quot;' : pre-loading registers (put in .vimrc)
qqq : 清空寄存器 &quot;q&quot;
----------------------------------------
&quot; 一些有用的决窍
&quot;ayy@a : 把当前行作为命令执行
yy@&quot; : 上面的匿名寄存器
u@. : 只执行键入的命令
----------------------------------------
&quot; 从其它命令处获得输入（需要外部命令）
:r!ls.exe : 从ls 获得输入插入到当前位置
!!date : 从date获得输入（删除当前行）
&quot; 使用外部sort排序
:%!sort -u : 用sort排序整个文件（结果覆盖整个文件）
:'a,'b!sort -u : 从mark a到mark b之间的内容进行排序
!1} sort -u : 排序一个段落
:g/^$/;,/^$/-1!sort : Sort each block (note the crucial <img src='http://www.shuaizhu.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
----------------------------------------
&quot; 多文件管理 (基本的)
:bn : 跳转到下一个buffer
:bp : 跳转到前一个buffer
:wn : 保存当前buffer并跳转到下一个buffer (超有用)
:wp : 保存当前buffer并跳转到前一个buffer
:bd : 把当前文件从buffer移出 (超有用)
:bun : 卸载当前buffer (关闭这个窗口但是不移出)
:badd file.c : 添加file.c到buffer列表
:b 3 : 前往第三个 buffer
:b main : 前往含有main的buffer中 比如说 main.c
:sav php.html : 把当前文件存为php.html并打开
:sav! %&lt;.bak : 换一个后缀名保存 (旧方法)
:sav! %:r.cfm : 同上
:sav %:s/fred/joe/ : 替换文件名
:sav %:s/fred/joe/:r.bak2 : 替换文件和后缀
:!mv % %:r.bak : 重命名当前文件
:e! : 打开未修改之前的文件
:w c:/aaa/% : 存储文件到指定位置
:e # : 编辑标记为#的文件在buffer中
:rew : 返回到第一个可编辑的文件
:brew : 回到第一个buffer
:sp fred.txt : 分割窗口打开fred.txt
:sball,:sb : 把所有的 buffers分割显示在一个窗口中 (超有用)
:scrollbind : in each split window
:map &lt;F5&gt; :ls&lt;CR&gt;:e # : 按F5显示所有buffer, 并显示行号
:set hidden : 允许不保存当前buffer而进行切换
----------------------------------------
&quot; 在分割窗口中快速切换
map &lt;C-J&gt; &lt;C-W&gt;j&lt;C-W&gt;_
map &lt;C-K&gt; &lt;C-W&gt;k&lt;C-W&gt;_
----------------------------------------
&quot; 录制命令 (最好的技巧)
qq # 录制命令放入 q寄存器
输入一些命令
q # 录制结束
@q :执行放入寄存器q中的内容
@@ ：重复
5@@ ：重复5次
&quot; 编辑一个 寄存器/录制
&quot;qp :显示寄存器q中的内容(普通模式下)
&lt;ctrl-R&gt;q :显示寄存器q中的内容 (插入模式下)
&quot; 你现在可以看到记录内容，随便编辑
&quot;qdd :删除，重新存入q
@q :执行 录制/寄存器 q
&quot; 在可视块中运行记录
1) 定义记录/寄存器
qq:s/ to/ from/g^Mq
2) 定义可视块
V}
3) 键入 : 将显示下面信息
:'&lt;,'&gt;
4)完成如下操作
:'&lt;,'&gt;norm @q
----------------------------------------
&quot;combining a recording with a map (to end up in command mode)
nnoremap ] @q:w!&lt;bar&gt;bd
----------------------------------------
&quot; 可视化模式提供一种灵活易用的方法选择一块文本供操作符使用
&quot; 记出
v : 进入可视化模式
V : 进入可视化行选择模式
&lt;C-V&gt; : 进入可视化块选择模式
gv : 重新选择
o : 选择的区域头尾移动
&quot;*y : 复制选择区域到paste buffer
V% : 选择一个匹配段
V}J : 合并一个段落
V}gJ : 合并一个段落，并保留空格
----------------------------------------
&quot; 删除选中的10行的前两个字符（不过这里应该假设是紧凑的排版格式，不能包含空格、
tab等字符的，可是经实验应该是钱3个字符才对啊？？）
0&lt;c-v&gt;10j2ld
----------------------------------------
&quot; 如何用可视块拷贝几列
&quot; 可视块(并非通常的 v 命令)
&lt;C-V&gt;，然后通过移动命令选择列 (win32 &lt;C-Q&gt;)
然后执行 c,d,y,r 等命令
----------------------------------------
&quot; how to overwrite a visual-block of text with another such block
Pick the first block: ctrl-v move &quot;ay
Pick the second block: ctrl-v move c ctrl-o &quot;aP &lt;esc&gt;
----------------------------------------
&quot; _vimrc 基本设置
:set incsearch : 输入搜索命令时，立即显示目前输入的模式对应的匹配。匹配的字符串
被高亮。
:set wildignore=*.o,*.obj,*.bak,*.exe : tab补全时忽略这些忽略这些
:set shiftwidth=3 : 设置自动缩进为3个字符
:set vb t_vb=&quot;. : 安静模式，关闭响铃跟闪烁
:set browsedir=buffer : 设置文件浏览使用的目录
“注：
”last 使用文件浏览器最近访问相同的目录。
“buffer 使用相关缓冲区的目录。
”current 使用当前目录。
“{path} 使用指定目录。
----------------------------------------
&quot; 启动windows中的IE
:nmap ,f :update&lt;CR&gt;:silent !start c:\progra~1\intern~1\iexplore.exe
file://%:p&lt;CR&gt;
:nmap ,i :update&lt;CR&gt;: !start c:\progra~1\intern~1\iexplore.exe &lt;cWORD&gt;&lt;CR&gt;
----------------------------------------
&quot; 在vim里打开ftp
cmap ,r :Nread ftp://209.51.134.122/public_html/index.html
cmap ,w :Nwrite ftp://209.51.134.122/public_html/index.html
gvim ftp://www.somedomain.com/index.html # 使用 netrw.vim
----------------------------------------
&quot; 向寄存器中添加内容 (使用相应寄存器名称的大写)
&quot; 复制5行放入a寄存器，然后向下跳转10行再复制5行
&quot;a5yy
10j
&quot;A5yy
----------------------------------------
[I : 显示当前行中字符的所有匹配(超级有用)
----------------------------------------
&quot; 常规缩进
:'a,'b&gt;&gt; ：将mark a到mark b之间的内容进行两次缩进
&quot; 虚拟模式下缩进 (可重复)
:vnoremap &lt; &lt;gv
”这是一个虚拟模式下的键盘映射 &lt; 映射为&lt;gv
&quot;&lt; 意为向内缩进，gv 上面已有解释，为重复上次选区
“&lt;gv 也就是先向内缩进然后再选择刚才的选区
“这样就可以只按 &lt; 实现重复缩进了
:vnoremap &gt; &gt;gv ：向内缩进，原理同上
&quot; 块缩进
&gt;i{
&gt;a{
&quot; also
&gt;% and &lt;%
”自己试试看吧，涉及到用 { 的语言很有用，比如c,c++等
----------------------------------------
&quot; 重定向 &amp; 粘贴到寄存器 * （*为寄存器名称）
:redir @* : 重定向命令到paste缓冲区
:redir END : 结束
:redir &gt;&gt; out.txt : 重定向到文件
&quot; 操作粘贴缓冲区
&quot;*yy : 复制到寄存器
&quot;*p : 从寄存器中粘贴一行
&quot; 复制到粘贴缓冲区 (扩展模式)
:'a,'by* : 复制一个范围到粘贴寄存器
:%y* : 复制一个括号匹配到粘贴缓冲区
:.y* : 复制当前行到粘贴缓冲区
&quot; 从剪贴板上过滤非可打印字符
&quot; 当从一些 GUI 程序粘贴时会有用处
:nmap &lt;leader&gt;p :let @* = substitute(@*,'[^[:print:]]','','g')&lt;cr&gt;&quot;*p
----------------------------------------
&quot; 重新格式化文本
gq} : 合并一个段落
gqap : 当前段落
ggVGgq : 全部段落
Vgq : 当前行
&quot; 在70列的时候换行
:s/.\{,69\};\s*\|.\{,69\}\s\+/&amp;\r/g
----------------------------------------
&quot; 命令使用于多个文件
:argdo %s/foo/bar/e : 在所有文件上操做 :args
:bufdo %s/foo/bar/e
:windo %s/foo/bar/e
:argdo exe '%!sort'|w! : 包含外部命令
----------------------------------------
&quot; 命令行技巧
gvim -h : 显示帮助
ls | gvim - : 管道操作
cat xx | gvim - -c &quot;v/^\d\d\|^[3-9]/d &quot; : 从管道出过滤内容
gvim -o file1 file2 : 分割窗口显示两个文件
&quot; 打开文件后执行一条命令
gvim.exe -c &quot;/main&quot; joe.c : 打开 joe.c &amp; 跳转到 &quot;main&quot;
&quot; 在打开一个文件时执行多条命令
vim -c &quot;%s/ABC/DEF/ge | update&quot; file1.c
&quot; 在一组文件上执行多条命令
vim -c &quot;argdo %s/ABC/DEF/ge | update&quot; *.c
&quot; 从一系列文件中删除一块区域
vim -c &quot;argdo /begin/+1,/end/-1g/^/d | update&quot; *.c
&quot; 自动编辑文件 (编辑命令序列Ex commands已经包含在convert.vim中了)
vim -s &quot;convert.vim&quot; file.c
#不加载.vimrc跟任何plugin(干净清新的 VIM^_^)
gvim -u NONE -U NONE -N
&quot; Access paste buffer contents (put in a script/batch file)
gvim -c 'normal ggdG&quot;*p' c:/aaa/xp
&quot; 将paste中的内容送往默认的打印机
gvim -c 's/^/\=@*/|hardcopy!|q!'
&quot; gvim 里的 grep (win32 or *nix)
:grep somestring *.php : 创建匹配的文件列表
&quot; 使用 :cn(向后后) :cp(向前) 操纵列表
:h grep ：查看帮助
----------------------------------------
&quot; GVIM 的差异比较
gvim -d file1 file2 : vimdiff (比较不差异)
dp : 把光标处的不同放到另一个文件
do : 在光标处从另一个文件取得不同
----------------------------------------
&quot; Vim traps
在正则表达式中 + | ( { 都要加上转义符(反斜杠)
/fred\+/ : 匹配 fred/freddy 但不匹配 free
/\(fred\)\{2,3}/ : note what you have to break
----------------------------------------
&quot; \v ，或叫做very magic (通常都是这么叫)可以取消转义符
/codes\(\n\|\s\)*where : 普通的正则表达式
/\vcodes(\n|\s)*where : very magic
----------------------------------------
&quot; 把对象送到命令行或者搜索行
&lt;C-R&gt;&lt;C-W&gt; : 执行当前光标下的单个单词
&lt;C-R&gt;&lt;C-A&gt; : 执行当前光标下尽可能多的单词
&lt;C-R&gt;- : 送至一个小型寄存器（同样使用于插入模式）
&lt;C-R&gt;[0-9a-z] : 送至一个命名寄存器 (括弧同上)
&lt;C-R&gt;% : 送至文件名(#也行) (同上)
&lt;C-R&gt;=somevar : 送至一个变量 (例如 :let sray=&quot;ray[0-9]&quot;)
----------------------------------------
&quot; 控制寄存器
:let @a=@_ : 清除寄存器 a
:let @a=&quot;&quot; : 同上 a
:let @*=@a : 拷贝寄存器 a 到 paste buffer
:let @*=@: : 拷贝最后执行的命令到 paste buffer
:let @*=@/ : 拷贝最后执行的查找命令到paste buffer
:let @*=@% : 拷贝当前文件到 paste buffer

map &lt;f11&gt; &quot;qyy:let @q=@q.&quot;zzz&quot;
----------------------------------------
&quot; 帮助的帮助？ (使用 TAB)
:h quickref : VIM 快速参考页
:h tips : Vim'自己的技巧帮助
:h visual&lt;C-D&gt;&lt;tab&gt; : 虚拟模式的帮助列表
: 然后使用tab选择它们
:h ctrl&lt;C-D&gt; : 所有关于ctrl键的帮助列表
:helpg uganda : 过滤帮助文件 使用 :cn, :cp 查找下一个及后一个
:h :r : 关于 :ex 的命令帮助
:h CTRL-R : 普通模式相关
:h /\r : \r是什么的意思
:h \\zs : 使用双反斜线查找关于 \zs 的帮助
:h i_CTRL-R : 在插入模式中 &lt;C-R&gt;的解释
:h c_CTRL-R : 在命令模式中 &lt;C-R&gt; 的解释
:h v_CTRL-V : 虚拟模式
:h tutor : VIM 快速指南
&lt;C-[&gt;, &lt;C-T&gt; : Move back &amp; Forth in HELP History
gvim -h : VIM 命令行帮助
----------------------------------------
&quot; 选项设置在那里
:scriptnames : 列出所有已经加载的 plugins, _vimrcs文件
:verbose set history? :显示 history的值并显示在那里定义的
:function : 列出所有函数
:func SearchCompl : 显示指定函数的细节
----------------------------------------
&quot; 制作你自己的VIM 帮助
:helptags /vim/vim64/doc : 重新编译所有 *.txt 的帮助文件在这个目录里
:help add-local-help ：如何添加本地帮助
----------------------------------------
&quot; 用外部程序运行文件 (例如 php)
map &lt;f9&gt; :w&lt;CR&gt;:!c:/php/php.exe %&lt;CR&gt;
map &lt;f2&gt; :w&lt;CR&gt;:!perl -c %&lt;CR&gt;
----------------------------------------
&quot; 在另一个buffer中，捕捉当前脚本的输出
:new | r!perl # : 新建一个buffer，从另一个buffer中读入结果
:new! x.out | r!perl # : 同上，并指定一个新文件名
:new+read!ls
----------------------------------------
&quot; create a new buffer, paste a register &quot;q&quot; into it, then sort new buffer
:new +put q|%!sort
----------------------------------------
&quot; 插入DOS换行符
:%s/$/\&lt;C-V&gt;&lt;C-M&gt;&amp;/g : (that's what you type
:%s/$/\&lt;C-Q&gt;&lt;C-M&gt;&amp;/g : for Win32) 对于Win32应该这样
:%s/$/\^M&amp;/g : 你看到的^M是一个字符
----------------------------------------
&quot; 自动删除行尾 Dos回车符和空格
autocmd BufRead * silent! %s/[\r \t]\+$//
autocmd BufEnter *.php :%s/[ \t\r]\+$//e
----------------------------------------
&quot; 对指定文件或文件类型执行某个动作
autocmd VimEnter c:/intranet/note011.txt normal! ggVGg?
autocmd FileType *.pl exec('set fileformats=unix')
----------------------------------------
&quot; 把最后一个命令贴到当前位置
i&lt;c-r&gt;:
&quot; 把最后一个搜索指令贴到当前位置
i&lt;c-r&gt;/
----------------------------------------
&quot; 更多的完成功能
&lt;C-X&gt;&lt;C-F&gt; :插入当前目录下的一个文件名到当前位置
# 在insert模式下使用
# 然后用 Ctrl-P/Ctrl-N 翻页
----------------------------------------
&quot; 替换一个visual区域
&quot; 选择一个区域，然后输入 :s/Emacs/Vim/ 等等，vim会自动进入:模式
:'&lt;,'&gt;s/Emacs/Vim/g : 前面的' '&lt;.'&gt; 是vim自动添加的
gv : 重新选择前一个可视区域 (ULTRA)
----------------------------------------
&quot; 在文件中插入行号
:g/^/exec &quot;s/^/&quot;.strpart(line(&quot;.&quot;).&quot; &quot;, 0, 4)
:%s/^/\=strpart(line(&quot;.&quot;).&quot; &quot;, 0, 5)
:%s/^/\=line('.'). ' '
----------------------------------------
#用VIM的方式来编号行
:set number : 显示行号
:map &lt;F12&gt; :set number!&lt;CR&gt; : Show linenumbers flip-flop
:%s/^/\=strpart(line('.').&quot; &quot;,0,&amp;ts)
#从任意行开始编号(需要perl)
:'a,'b!perl -pne 'BEGIN{$a=223} substr($_,2,0)=$a++'
#产生数字列表
#Type in number on line say 223 in an empty file
qqmnYP`n^Aq : in recording q repeat with @q
&quot; 递增已存在数字到文件末
:.,$g/^\d/exe &quot;normal! \&lt;c-a&gt;&quot;
&quot; 高级递增，参见：

http://vim.sourceforge.net/tip_view.php?tip_id=150

----------------------------------------
&quot; 高级递增 (真的很有用)
&quot; 把下面几句放到 _vimrc
let g:I=0
function! INC(increment)
let g:I =g:I + a:increment
return g:I
endfunction
&quot; 例如从mark a 到mark b 递增，从223开始，步长为5
:let I=223
:'a,'bs/^/\=INC(5)/
&quot; create a map for INC
cab viminc :let I=223 \| 'a,'bs/$/\=INC(5)/
----------------------------------------
&quot; 生成从 23-64 的数字列表
o23&lt;ESC&gt;qqYp&lt;C-A&gt;q40@q
----------------------------------------
&quot; 在当前插入模式下编辑/移动 (真得很有用)
&lt;C-U&gt; : 删除全部
&lt;C-W&gt; : 删除最后一个单词
&lt;HOME&gt;&lt;END&gt; : 移动到行首/行尾
&lt;C-LEFTARROW&gt;&lt;C-RIGHTARROW&gt; : 向前/后移动一个单词
&lt;C-X&gt;&lt;C-E&gt;,&lt;C-X&gt;&lt;C-Y&gt; : scroll while staying put in insert
----------------------------------------
#加密(小心使用，不要忘了密码)
:X : vim会提示你输入密码
:h :X
----------------------------------------
&quot; 模式行 (使文件只读等)，必须在前/后 5行内
// vim:noai:ts=2:sw=4:readonly:
&quot; vim:ft=html: : 使用 HTML 语法高亮
:h modeline
----------------------------------------
&quot; 建立你自己的菜单项
amenu Modeline.Insert\ a\ VIM\ modeline &lt;Esc&gt;&lt;Esc&gt;ggOvim:ff=unix ts=4 ss=4&lt;CR&gt;
vim60:fdm=marker&lt;esc&gt;gg
----------------------------------------
&quot; 一个保存当前光标下的狭义字到一个文件的函数
function! SaveWord()
normal yiw
exe ':!echo '.@0.' &gt;&gt; word.txt'
endfunction
map ,p :call SaveWord()
----------------------------------------
&quot; 删除重复行的函数
function! Del()
if getline(&quot;.&quot;) == getline(line(&quot;.&quot;) - 1)
norm dd
endif
endfunction

:g/^/ call Del() #使用该函数的一个例子
----------------------------------------
&quot; 双字节编码 (non alpha-numerics)
:digraphs : 显示编码表
:h dig : 帮助
i&lt;C-K&gt;e' : 输入 é
i&lt;C-V&gt;233 : 输入 é (Unix)
i&lt;C-Q&gt;233 : 输入 é (Win32)
ga : 查看字符的hex值
#删除非 ascii 字符
:%s/[&lt;C-V&gt;128-&lt;C-V&gt;255]//gi : where you have to type the Control-V
:%s/[?-?]//gi : Should see a black square &amp; a dotted y
:%s/[&lt;C-V&gt;128-&lt;C-V&gt;255&lt;C-V&gt;01-&lt;C-V&gt;31]//gi : All pesky non-asciis
:exec &quot;norm /[\x00-\x1f\x80-\xff]/&quot; : same thing
#Pull a non-ascii character onto search bar
yl/&lt;C-R&gt;&quot; :
/[^a-zA-Z0-9_[:space:][:punct:]] : search for all non-ascii
----------------------------------------
&quot; 文件名自动完成 (例如 main_c.c)
:e main_&lt;tab&gt; : tab 键完成
gf : 打开光标处广义字命名的文件 (normal模式)
main_&lt;C-X&gt;&lt;C-F&gt; : 文件名自动完成(insert模式)
----------------------------------------
&quot; Vim复杂使用
&quot; 交换两个单词
:%s/\&lt;\(on\|off\)\&gt;/\=strpart(&quot;offon&quot;, 3 * (&quot;off&quot; == submatch(0)), 3)/g
&quot; 交换两个单词
:vnoremap &lt;C-X&gt; &lt;Esc&gt;`.``gvP``P
----------------------------------------
&quot; 把text文件转换成html文件(oh,ft)
:runtime! syntax/2html.vim : 转换 txt 成 html
:h 2html
----------------------------------------
&quot; VIM 有一个内部自带的 grep 命令
:grep some_keyword *.c : 得到一个包含some_keyword的c文件名列表
:cn : 去下一个出现的位置
----------------------------------------
&quot; 强制无扩展名的文件的语法着色方式
:set syntax=perl
&quot; 取消语法着色 (很有用)
:set syntax off
&quot; 改变色彩主题 (在~vim/vim??/colors中的任何文件)
:colorscheme blue
&quot; 通过使用模式行强迫使用 HTML 语法高亮
# vim:ft=html:
&quot; 强制自动语法加亮(非标准的文件扩展)
au BufRead,BufNewFile */Content.IE?/* setfiletype html
----------------------------------------
:set noma (non modifiable) : 防止修改
:set ro (Read Only) : 只读保护
----------------------------------------
&quot; 对话 (打开一堆文件)
gvim file1.c file2.c lib/lib.h lib/lib2.h : 在&quot;对话&quot;中加载这些文件
:mksession : 生成一个Session文件 (默认是Session.vim)
:q
gvim -S Session.vim : 重新加载所有文件
----------------------------------------
#标记(tags) (跳转到子程序/函数)
taglist.vim : 很流行的插件
:Tlist : 显示标记 (函数列表)
&lt;C-]&gt; : 跳转到光标处的函数
----------------------------------------
&quot; columnise a csv file for display only as may crop wide columns
:let width = 20
:let fill=' ' | while strlen(fill) &lt; width | let fill=fill.fill | endwhile
:%s/\([^;]*\);\=/\=strpart(submatch(1).fill, 0, width)/ge
:%s/\s\+$//ge
&quot; Highlight a particular csv column (put in .vimrc)
function! CSVH(x)
execute 'match Keyword /^\([^,]*,\)\{'.a:x.'}\zs[^,]*/'
execute 'normal ^'.a:x.'f,'
endfunction
command! -nargs=1 Csv :call CSVH(&lt;args&gt;)
&quot; call with
:Csv 5 : highlight fifth column
----------------------------------------
&quot; 折叠：隐藏某些片断，使查看更容易
zf} : 使用动作命令折叠一个段落
v}zf : 使用可视模式折叠一个段落
zf'a : 折叠到一个标记上
zo : 打开折叠
zc : 重新关闭折叠
----------------------------------------
&quot; 显示&quot;不可见字符&quot;
:set list
:h listchars
----------------------------------------
&quot; 如何在不进入插入模式的情况下粘贴&quot;普通模式的命令&quot;
:norm qqy$jq
----------------------------------------
&quot; 处理文件名
:h filename-modifiers : 帮助
:w % : 写入当前文件
:w %:r.cfm : 改变文件扩展名为 .cfm
:!echo %:p : 显示完整路径和文件名
:!echo %:p:h : 只显示完整路径
:!echo %:t : 只显示文件名
:reg % : 显示文件名
&lt;C-R&gt;% : 插入文件名 (插入模式)
&quot;%p : 插入文件名 (普通模式)
/&lt;C-R&gt;% : 在文本中查找文件名
----------------------------------------
&quot; 删除，但不破坏 buffer 内容
&quot;_d : 你一直想要的东西
&quot;_dw : 例如：删除一个单词 (使用黑洞???)
----------------------------------------
&quot; 送完整的路径名到剪贴板，用于邮件附件等
nnoremap &lt;F2&gt; :let @*=expand(&quot;%:p&quot;)&lt;cr&gt; :unix
nnoremap &lt;F2&gt; :let @*=substitute(expand(&quot;%:p&quot;), &quot;/&quot;, &quot;\\&quot;, &quot;g&quot;)&lt;cr&gt; :win32
----------------------------------------
&quot; 不用离开 Vim 就能修改文件名的简单 shell 脚本
$ vim
:r! ls *.c
:%s/\(.*\).c/mv &amp; \1.bla
:w !sh
:q!
----------------------------------------
&quot; 在一个文本里计算单词数
g&lt;C-G&gt;
----------------------------------------
&quot; 你自己设置高亮显示的例子
:syn match DoubleSpace &quot; &quot;
:hi def DoubleSpace guibg=#e0e0e0
----------------------------------------
&quot; reproduce previous line word by word
imap ] @@@&lt;ESC&gt;hhkyWjl?@@@&lt;CR&gt;P/@@@&lt;CR&gt;3s
nmap ] i@@@&lt;ESC&gt;hhkyWjl?@@@&lt;CR&gt;P/@@@&lt;CR&gt;3s
&quot; 根据文件类型映射快捷键
:autocmd bufenter *.tex map &lt;F1&gt; :!latex %&lt;CR&gt;
:autocmd bufenter *.tex map &lt;F2&gt; :!xdvi -hush %&lt;.dvi&amp;&lt;CR&gt;
----------------------------------------
&quot; 读取 MS-Word 文档，需要 antiword
:autocmd BufReadPre *.doc set ro
:autocmd BufReadPre *.doc set hlsearch!
:autocmd BufReadPost *.doc %!antiword &quot;%&quot;
----------------------------------------
&quot; a folding method
vim: filetype=help foldmethod=marker foldmarker=&lt;&lt;&lt;,&gt;&gt;&gt;
A really big section closed with a tag &lt;&lt;&lt;
--- remember folds can be nested ---
Closing tag &gt;&gt;&gt;
----------------------------------------
&quot; Just Another Vim Hacker JAVH
vim -c &quot;:%s%s*%Cyrnfr)fcbafbe[Oenz(Zbbyranne%|:%s)[[()])-)Ig|norm Vg?&quot;
# 译释：呵呵，谁来解释一下吧！
# 其实不过是在启动vim的时候执行了一个命令
# 先写入了 Just Another Vim Hacker 的rot13编码
# 然后再解码
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.shuaizhu.com/wordpress/vim%e6%9f%a5%e6%89%be%e4%b8%8e%e6%9b%bf%e6%8d%a2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>grep 匹配多个关键词</title>
		<link>http://www.shuaizhu.com/wordpress/grep-%e5%8c%b9%e9%85%8d%e5%a4%9a%e4%b8%aa%e5%85%b3%e9%94%ae%e8%af%8d/</link>
		<comments>http://www.shuaizhu.com/wordpress/grep-%e5%8c%b9%e9%85%8d%e5%a4%9a%e4%b8%aa%e5%85%b3%e9%94%ae%e8%af%8d/#comments</comments>
		<pubDate>Mon, 26 Dec 2011 08:38:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.shuaizhu.com/wordpress/?p=2115</guid>
		<description><![CDATA[查找当前目录下文本内含有 keya keyb keyc 其中之一的行 grep -r -E &#8220;keya&#124;keyb&#124;keyc&#8221; .]]></description>
			<content:encoded><![CDATA[<p>查找当前目录下文本内含有 keya keyb keyc 其中之一的行<br />
grep -r -E &#8220;keya|keyb|keyc&#8221; .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shuaizhu.com/wordpress/grep-%e5%8c%b9%e9%85%8d%e5%a4%9a%e4%b8%aa%e5%85%b3%e9%94%ae%e8%af%8d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php 压缩html长度</title>
		<link>http://www.shuaizhu.com/wordpress/php-%e5%8e%8b%e7%bc%a9html%e9%95%bf%e5%ba%a6/</link>
		<comments>http://www.shuaizhu.com/wordpress/php-%e5%8e%8b%e7%bc%a9html%e9%95%bf%e5%ba%a6/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 09:41:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.shuaizhu.com/wordpress/?p=2112</guid>
		<description><![CDATA[function compress_html($string) { $string = str_replace(&#34;\r\n&#34;, '', $string); $string = str_replace(&#34;\n&#34;, '', $string); $string = str_replace(&#34;\t&#34;, '', $string); $pattern = array ( &#34;'&#60;!--[/!]*?[^&#60;&#62;]*?&#62;'si&#34;, &#34;' '&#34;, ); $replace = array ( &#34;&#34;, &#34;&#34;, ); return preg_replace($pattern, $replace, $string); }]]></description>
			<content:encoded><![CDATA[<pre class="brush: php; title: ;">
function compress_html($string) {
    $string = str_replace(&quot;\r\n&quot;, '', $string);
$string = str_replace(&quot;\n&quot;, '', $string);
$string = str_replace(&quot;\t&quot;, '', $string);
$pattern = array (
                    &quot;'&lt;!--[/!]*?[^&lt;&gt;]*?&gt;'si&quot;,
                    &quot;'  '&quot;,
                    );
    $replace = array (
                    &quot;&quot;,
                    &quot;&quot;,
                    );
    return preg_replace($pattern, $replace, $string);
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.shuaizhu.com/wordpress/php-%e5%8e%8b%e7%bc%a9html%e9%95%bf%e5%ba%a6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php监听socket</title>
		<link>http://www.shuaizhu.com/wordpress/php%e7%9b%91%e5%90%acsocket/</link>
		<comments>http://www.shuaizhu.com/wordpress/php%e7%9b%91%e5%90%acsocket/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 07:26:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.shuaizhu.com/wordpress/?p=2110</guid>
		<description><![CDATA[&#60;?php set_time_limit(0); $commonProtocol = getprotobyname(&#34;tcp&#34;); $socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol); if ($socket) { $result = socket_bind($socket, 'localhost', 1888); if ($result) { $result = socket_listen($socket, 5); if ($result) { echo &#34;listen ok&#34;; } } }else{ echo &#34;listen failed&#34;; } do { if (($msgsock = socket_accept($socket))) { /* 发送提示信息给连接上来的用户 */ $msg = &#34;==========================================\r\n&#34; . &#34;Welcome to the [...]]]></description>
			<content:encoded><![CDATA[<pre class="brush: php; title: ;">
&lt;?php
set_time_limit(0);

$commonProtocol = getprotobyname(&quot;tcp&quot;);
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);
if ($socket) {
$result = socket_bind($socket, 'localhost', 1888);
if ($result) {
   $result = socket_listen($socket, 5);
   if ($result) {
    echo &quot;listen ok&quot;;
   }
}
}else{
echo &quot;listen failed&quot;;
}

do {
if (($msgsock = socket_accept($socket))) { /* 发送提示信息给连接上来的用户 */
   $msg = &quot;==========================================\r\n&quot; .
   &quot;Welcome to the PHP Test Server. \r\n\r\n&quot; .
   &quot;To quit, type 'quit'. \r\n&quot; .
   &quot;To shut down the server type 'shutdown'.\r\n&quot; .
   &quot;To get help message type 'help'.\r\n&quot; .
   &quot;==========================================\r\n&quot; .
   &quot;php&gt;&quot;;
}

socket_write($msgsock, $msg, strlen($msg));

do {
   $buf = socket_read($msgsock, 2048, PHP_BINARY_READ);

   if (false === $buf) {
    echo &quot;socket_read() failed: reason: &quot; . socket_strerror($result) . &quot;\n&quot;;
    break 2;
   }
   if (!$buf = trim($buf)) {
    continue;
   } /* 客户端输入quit命令时候关闭客户端连接 */
   if ($buf == 'q') {
    break;
   } /* 客户端输入shutdown命令时候服务端和客户端都关闭 */
   if ($buf == 'shutdown') {
    socket_close($msgsock);
    break 2;
   } /* 客户端输入help命令时候输出帮助信息 */
   if ($buf == 'h'){
$msg = &quot; PHP Server Help Message \r\n\r\n&quot; .
    &quot; To quit, type 'quit'. \r\n&quot; .
    &quot; To shut down the server type 'shutdown'.\r\n&quot; .
    &quot; To get help message type 'help'.\r\n&quot; .
    &quot;php&gt; &quot;;
    socket_write($msgsock, $msg, strlen($msg));
    continue;
   } /* 客户端输入命令不存在时提示信息 */
   $talkback = &quot;PHP: unknow command '$buf'.\r\nphp&gt; &quot;;
   socket_write($msgsock, $talkback, strlen($talkback));
   echo &quot;$buf\n&quot;;
} while (true);
socket_close($msgsock);
}while (true);
/* 关闭Socket连接 */
socket_close($socket);
?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.shuaizhu.com/wordpress/php%e7%9b%91%e5%90%acsocket/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php分割中英文混合字符串</title>
		<link>http://www.shuaizhu.com/wordpress/php%e5%88%86%e5%89%b2%e4%b8%ad%e8%8b%b1%e6%96%87%e6%b7%b7%e5%90%88%e5%ad%97%e7%ac%a6%e4%b8%b2/</link>
		<comments>http://www.shuaizhu.com/wordpress/php%e5%88%86%e5%89%b2%e4%b8%ad%e8%8b%b1%e6%96%87%e6%b7%b7%e5%90%88%e5%ad%97%e7%ac%a6%e4%b8%b2/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 09:54:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.shuaizhu.com/wordpress/?p=2105</guid>
		<description><![CDATA[&#60;?php function str_split_utf8($str,$charset) {    $str = iconv($charset,'utf-8',$str);     $split=1;    $array = array();    for ( $i=0; $i &#60; strlen( $str );  ){        $value = ord($str[$i]);         if($value &#62; 127){             if($value &#62;= 192 &#38;&#38; $value &#60;= 223)             $split=2;   [...]]]></description>
			<content:encoded><![CDATA[<pre class="brush: php; title: ;">&lt;?php
function str_split_utf8($str,$charset) {  
  $str = iconv($charset,'utf-8',$str);   
 $split=1;    $array = array();  
  for ( $i=0; $i &lt; strlen( $str ); 
){    
    $value = ord($str[$i]);   
     if($value &gt; 127){   
         if($value &gt;= 192 &amp;&amp; $value &lt;= 223)   
         $split=2;  
          elseif($value &gt;= 224 &amp;&amp; $value &lt;= 239) 
           $split=3;      
      elseif($value &gt;= 240 &amp;&amp; $value &lt;= 247)  
          $split=4;
        }else{        
    $split=1;   
     }     
   $key = NULL;  
      for ( $j = 0; $j &lt; $split; $j++, $i++ ) {    
        $key .= $str[$i];  
      }     
   array_push( $array, $key ); 
   }    
    foreach($array as $key=&gt;$value)  
  {     
   $array[$key] = iconv('utf-8',$charset,$value); 
   }  
  return $array;}$string =&quot;大婶个变态&quot;;
$arr1 = str_split_utf8($string,'gbk');
var_dump($arr1);</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.shuaizhu.com/wordpress/php%e5%88%86%e5%89%b2%e4%b8%ad%e8%8b%b1%e6%96%87%e6%b7%b7%e5%90%88%e5%ad%97%e7%ac%a6%e4%b8%b2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>android刷机记录</title>
		<link>http://www.shuaizhu.com/wordpress/android%e5%88%b7%e6%9c%ba%e8%ae%b0%e5%bd%95/</link>
		<comments>http://www.shuaizhu.com/wordpress/android%e5%88%b7%e6%9c%ba%e8%ae%b0%e5%bd%95/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 15:39:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.shuaizhu.com/wordpress/?p=2102</guid>
		<description><![CDATA[今日刷机，看教程一次成功 http://bbs.anzhi.com/thread-1779494-1-1.html 一、文件准备 我们需要的文件一共有： 1.破解root权限.apk  破解Root权限.apk (154.54 KB, 下载次数: 1162) 2.超级终端.apk  超级终端.apk (74.32 KB, 下载次数: 1389) 3.G大的3.0版本recovery.img  recovery.img (4.16 MB, 下载次数: 2334) 4.Victor团队的2.3最终版:地址http://bbs.anzhi.com/thread-1707885-1-1.html 第4条，img 就是rom，大约几十到100M ，一般以zip文件命名，里面包含boot.img文件 system文件夹 META-INF文件夹 ！]]></description>
			<content:encoded><![CDATA[<p>今日刷机，看教程一次成功</p>
<p><a href="http://bbs.anzhi.com/thread-1779494-1-1.html">http://bbs.anzhi.com/thread-1779494-1-1.html</a></p>
<p>一、文件准备<br />
我们需要的文件一共有：<br />
1.破解root权限.apk <img src="http://bbs.anzhi.com/static/image/filetype/unknown.gif" border="0" alt="" /> <a href="http://bbs.anzhi.com/forum.php?mod=attachment&amp;aid=MTg1NDQyfGY4MDNlZjBkfDEzMjMxODI1MzB8MTkzNzY4NnwxNzc5NDk0" target="_blank">破解Root权限.apk</a> <em>(154.54 KB, 下载次数: 1162) </em><br />
2.超级终端.apk <img src="http://bbs.anzhi.com/static/image/filetype/unknown.gif" border="0" alt="" /> <a href="http://bbs.anzhi.com/forum.php?mod=attachment&amp;aid=MTg1NDQxfGRmNGM0MjAxfDEzMjMxODI1MzB8MTkzNzY4NnwxNzc5NDk0" target="_blank">超级终端.apk</a> <em>(74.32 KB, 下载次数: 1389) </em><br />
3.G大的3.0版本recovery.img <img src="http://bbs.anzhi.com/static/image/filetype/unknown.gif" border="0" alt="" /> <a href="http://bbs.anzhi.com/forum.php?mod=attachment&amp;aid=MTg1NDQwfDk0YzcyYmY0fDEzMjMxODI1MzB8MTkzNzY4NnwxNzc5NDk0" target="_blank">recovery.img</a> <em>(4.16 MB, 下载次数: 2334) </em><br />
4.Victor团队的2.3最终版:地址<a href="http://bbs.anzhi.com/thread-1707885-1-1.html" target="_blank">http://bbs.anzhi.com/thread-1707885-1-1.html</a></p>
<p>第4条，img 就是rom，大约几十到100M ，一般以zip文件命名，里面包含boot.img文件 system文件夹 META-INF文件夹 ！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shuaizhu.com/wordpress/android%e5%88%b7%e6%9c%ba%e8%ae%b0%e5%bd%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>svn撤销</title>
		<link>http://www.shuaizhu.com/wordpress/svn%e6%92%a4%e9%94%80/</link>
		<comments>http://www.shuaizhu.com/wordpress/svn%e6%92%a4%e9%94%80/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 12:43:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.shuaizhu.com/wordpress/?p=2100</guid>
		<description><![CDATA[svn 撤销错误的提交，以当前目录下 index.php为例 察看日志 svn log index.php 比较下内容,错误版本version 100和正确版本99 svn diff -r  100:99 index.php 确认100版本有问题后，撤销改动 svn merge -r 100:99 index.php svn 撤销错误的提交，以当前目录下 index.php为例 察看日志svn log index.php 比较下内容,错误版本version 100和正确版本99svn diff -r  100:99 index.php 确认100版本有问题后，撤销改动svn merge -r 100:99 index.php 最后提交，svn  ci]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">svn 撤销错误的提交，以当前目录下 index.php为例</div>
<div id="_mcePaste">察看日志</div>
<div id="_mcePaste">svn log index.php</div>
<div id="_mcePaste">比较下内容,错误版本version 100和正确版本99</div>
<div id="_mcePaste">svn diff -r  100:99 index.php</div>
<div id="_mcePaste">确认100版本有问题后，撤销改动</div>
<div id="_mcePaste">svn merge -r 100:99 index.php</div>
<p>svn 撤销错误的提交，以当前目录下 index.php为例<br />
察看日志svn log index.php<br />
比较下内容,错误版本version 100和正确版本99svn diff -r  100:99 index.php<br />
确认100版本有问题后，撤销改动svn merge -r 100:99 index.php</p>
<p>最后提交，svn  ci</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shuaizhu.com/wordpress/svn%e6%92%a4%e9%94%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vim 插件记录</title>
		<link>http://www.shuaizhu.com/wordpress/vim-%e6%8f%92%e4%bb%b6%e8%ae%b0%e5%bd%95/</link>
		<comments>http://www.shuaizhu.com/wordpress/vim-%e6%8f%92%e4%bb%b6%e8%ae%b0%e5%bd%95/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 17:10:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.shuaizhu.com/wordpress/?p=2097</guid>
		<description><![CDATA[关于ctags http://hi.baidu.com/original/blog/item/2cf8d53f00b7fcc27d1e71f0.html 关于多个文件及切换 http://hi.baidu.com/southhill/blog/item/46852932bc362cf41b4cff01.html 关于一些设置 http://solomon.athost.net/?p=537 关于目录树 http://www.cnblogs.com/mo-beifeng/archive/2011/09/08/2171018.html php 函数列表 http://code.google.com/p/phpdoc-zh/downloads/detail?name=ide-funclist.txt ctrl+p 自动补全快捷键 一个比较全面的文章 http://doc.linuxpk.com/53985.html]]></description>
			<content:encoded><![CDATA[<p>关于ctags</p>
<p><a href="http://hi.baidu.com/original/blog/item/2cf8d53f00b7fcc27d1e71f0.html">http://hi.baidu.com/original/blog/item/2cf8d53f00b7fcc27d1e71f0.html</a></p>
<p>关于多个文件及切换</p>
<p><a href="http://hi.baidu.com/southhill/blog/item/46852932bc362cf41b4cff01.html">http://hi.baidu.com/southhill/blog/item/46852932bc362cf41b4cff01.html</a></p>
<p>关于一些设置</p>
<p><a href="http://solomon.athost.net/?p=537">http://solomon.athost.net/?p=537</a></p>
<p>关于目录树</p>
<p><a href="http://www.cnblogs.com/mo-beifeng/archive/2011/09/08/2171018.html">http://www.cnblogs.com/mo-beifeng/archive/2011/09/08/2171018.html</a></p>
<p>php 函数列表</p>
<p><a href="http://code.google.com/p/phpdoc-zh/downloads/detail?name=ide-funclist.txt">http://code.google.com/p/phpdoc-zh/downloads/detail?name=ide-funclist.txt</a></p>
<p>ctrl+p 自动补全快捷键</p>
<p>一个比较全面的文章</p>
<p><a href="http://doc.linuxpk.com/53985.html">http://doc.linuxpk.com/53985.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.shuaizhu.com/wordpress/vim-%e6%8f%92%e4%bb%b6%e8%ae%b0%e5%bd%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux批量下载文件</title>
		<link>http://www.shuaizhu.com/wordpress/linux%e6%89%b9%e9%87%8f%e4%b8%8b%e8%bd%bd%e6%96%87%e4%bb%b6/</link>
		<comments>http://www.shuaizhu.com/wordpress/linux%e6%89%b9%e9%87%8f%e4%b8%8b%e8%bd%bd%e6%96%87%e4%bb%b6/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 14:36:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.shuaizhu.com/wordpress/?p=2095</guid>
		<description><![CDATA[如a.txt里面有文件url http://**** http://**** http://**** 可以wget  -i a.txt 来下载 具体： Wget 的用法 -V 版本信息 -h 帮助信息 -b 后台执行Wget -o filename 把记录放在文件filename -a filename 把记录附加在文件filename -d 显示调试信息 -q 无输出下载方式 -v 详细的屏幕输出（默认） -nv 简单的屏幕输出 -i inputfiles 从文本文件内读取地址列表 -F forcehtml 从html文件内读取地址列表 -t number number次重试下载(0时为无限次) -O output document file 写文件到文件 -nc 不覆盖已有的文件 -c 断点下传 -N 时间时间戳。该参数指定wget只下载更新的文件，也就是说，与本地目录中的对应文件的长度和最后修改日期一样的文件将不被下载。 -S 显示服务器响应 -T timeout [...]]]></description>
			<content:encoded><![CDATA[<p>如a.txt里面有文件url</p>
<p>http://****</p>
<p>http://****</p>
<p>http://****</p>
<p>可以wget  -i a.txt 来下载</p>
<p>具体：</p>
<p>Wget 的用法</p>
<p>-V 版本信息</p>
<p>-h 帮助信息</p>
<p>-b 后台执行Wget</p>
<p>-o filename 把记录放在文件filename</p>
<p>-a filename 把记录附加在文件filename</p>
<p>-d 显示调试信息</p>
<p>-q 无输出下载方式</p>
<p>-v 详细的屏幕输出（默认）</p>
<p>-nv 简单的屏幕输出</p>
<p>-i inputfiles 从文本文件内读取地址列表</p>
<p>-F forcehtml 从html文件内读取地址列表</p>
<p>-t number number次重试下载(0时为无限次)</p>
<p>-O output document file 写文件到文件</p>
<p>-nc 不覆盖已有的文件</p>
<p>-c 断点下传</p>
<p>-N 时间时间戳。该参数指定wget只下载更新的文件，也就是说，与本地目录中的对应文件的长度和最后修改日期一样的文件将不被下载。</p>
<p>-S 显示服务器响应</p>
<p>-T timeout 超时时间设置(单位秒)</p>
<p>-w time 重试延时(单位秒)</p>
<p>-Y proxy=on/off 是否打开代理</p>
<p>-Q quota=number 重试次数</p>
<p>目录:</p>
<p>-nd &#8211;no-directories 不建立目录.</p>
<p>-x, &#8211;force-directories 强制进行目录建立的工作.</p>
<p>-nH, &#8211;no-host-directories 不建立主机的目录.</p>
<p>-P, &#8211;directory-prefix=PREFIX 把档案存到 PREFIX/&#8230;</p>
<p>&#8211;cut-dirs=NUMBER 忽略 NUMBER 个远端的目录元件.</p>
<p>HTTP 选项:</p>
<p>&#8211;http-user=USER 设 http 使用者为 USER.</p>
<p>&#8211;http0passwd=PASS 设 http 使用者的密码为 PASS.</p>
<p>-C, &#8211;cache=on/off 提供/关闭快取伺服器资料 (正常情况为提供).</p>
<p>&#8211;ignore-length 忽略 `Content-Length&#8217; 标头栏位.</p>
<p>&#8211;proxy-user=USER 设 USER 为 Proxy 使用者名称.</p>
<p>&#8211;proxy-passwd=PASS 设 PASS 为 Proxy 密码.</p>
<p>-s, &#8211;save-headers 储存 HTTP 标头成为档案.</p>
<p>-U, &#8211;user-agent=AGENT 使用 AGENT 取代 Wget/VERSION 作为识别代号.</p>
<p>FTP 选项:</p>
<p>&#8211;retr-symlinks 取回 FTP 的象徵连结.</p>
<p>-g, &#8211;glob=on/off turn file name globbing on ot off.</p>
<p>&#8211;passive-ftp 使用 &#8220;passive&#8221; 传输模式.</p>
<p>使用递回方式的取回:</p>
<p>-r, &#8211;recursive 像是吸入 web 的取回 &#8212; 请小心使用!.</p>
<p>-l, &#8211;level=NUMBER 递回层次的最大值 (0 不限制).</p>
<p>&#8211;delete-after 删除下载完毕的档案.</p>
<p>-k, &#8211;convert-links 改变没有关连的连结成为有关连.</p>
<p>-m, &#8211;mirror 开启适合用来映射的选项.</p>
<p>-nr, &#8211;dont-remove-listing 不要移除 `.listing&#8217; 档.</p>
<p>递回式作业的允许与拒绝选项:</p>
<p>-A, &#8211;accept=LIST 允许的扩充项目的列表</p>
<p>. -R, &#8211;reject=LIST 拒绝的扩充项目的列表.</p>
<p>-D, &#8211;domains=LIST 允许的网域列表.</p>
<p>&#8211;exclude-domains=LIST 拒绝的网域列表 (使用逗号来分隔).</p>
<p>-L, &#8211;relative 只跟随关联连结前进.</p>
<p>&#8211;follow-ftp 跟随 HTML 文件里面的 FTP 连结.</p>
<p>-H, &#8211;span-hosts 当开始递回时便到外面的主机.</p>
<p>-I, &#8211;include-directories=LIST 允许的目录列表.</p>
<p>-X, &#8211;exclude-directories=LIST 排除的目录列表.</p>
<p>-nh, &#8211;no-host-lookup 不透过 DNS 查寻主机.</p>
<p>-np, &#8211;no-parent 不追朔到起源目录.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shuaizhu.com/wordpress/linux%e6%89%b9%e9%87%8f%e4%b8%8b%e8%bd%bd%e6%96%87%e4%bb%b6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wget整站下载</title>
		<link>http://www.shuaizhu.com/wordpress/wget%e6%95%b4%e7%ab%99%e4%b8%8b%e8%bd%bd/</link>
		<comments>http://www.shuaizhu.com/wordpress/wget%e6%95%b4%e7%ab%99%e4%b8%8b%e8%bd%bd/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 06:15:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.shuaizhu.com/wordpress/?p=2090</guid>
		<description><![CDATA[运行 sudo wget -r -p -np -k http://www.test.com，会生成目录www.test.com，并把整站内容下载到这个目录下。 具体参数的含义请man wget.]]></description>
			<content:encoded><![CDATA[<p>运行 <strong>sudo wget -r -p -np -k http://www.test.com</strong>，会生成目录www.test.com，并把整站内容下载到这个目录下。 具体参数的含义请man wget.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shuaizhu.com/wordpress/wget%e6%95%b4%e7%ab%99%e4%b8%8b%e8%bd%bd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

