<?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>wd and cc &#187; vim</title>
	<atom:link href="http://wdicc.com/tag/vim/feed/" rel="self" type="application/rss+xml" />
	<link>http://wdicc.com</link>
	<description>Happy every day...</description>
	<lastBuildDate>Wed, 01 Feb 2012 03:27:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>我是怎么从 vim 转向 emacs 的</title>
		<link>http://wdicc.com/how-i-became-a-emacser/</link>
		<comments>http://wdicc.com/how-i-became-a-emacser/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 02:36:36 +0000</pubDate>
		<dc:creator>wd</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://wdicc.com/how-i-became-a-emacser/</guid>
		<description><![CDATA[从尝试用 emacs，到现在基本（有些地方还不是很适应）习惯用 emacs，算起来得有 n 年了，我都忘记最早接触 emacs 是什么时候了。在 2010-3-20 之前尝试过很多次，基本都是记几个快捷键，过几天就又忘记了。后来自己想了下为什么不能持续的原因，我觉得有两个。 1 没有在日常工作里面使用。 之前我的开发工作基本都是直接在某台服务器上面的，这样就开发调试会比较方便，而那些机器一般要不会装 emacs，这样不常用就会导致记住的快捷键过几天就忘记了。最近刚好需要在本机写点程序，也就刚好用上了。 2 不会 elisp。 emacs 的配置文件都是 elisp 写的，而不经过配置的 emacs 就编辑文件来看，我觉得还不如去用 vim，vim 好用多了。我想刚看到 elisp 的时候一般都会觉得这个语言太变态了，全是一堆的括号。。。而不会 elisp 就会导致你只能去机械的复制别人的配置，如果刚好是你想要的，那还好，而如果还想做点小的修改，那就会很郁闷，用起来郁闷，不用可能更郁闷。不爽多了，就干脆不用 emacs 了。 如果你能在日常工作中经常使用，并且会写程序（比如 php,perl 什么的，随便哪个都行），那么对于基本没怎么配置过 .vimrc 的用户来说，切换到 emacs 其实应该还算是一个比较简单的事情。 1 emacs 是无模式的。 这就是说你不用经常去按那个 Esc 来切换模式了。没有模式也就意味着你不能使用像 vim 那么简短的命令了，因为像 a,i,o,h,j,k 这些对 emacs 来说，这些都是正常的输入字符，所以我们不得不在这些字符前面加上 C(control), M(Meta 一般是 Alt), S(shift) 这些前缀。在 [...]]]></description>
			<content:encoded><![CDATA[<p>从尝试用 emacs，到现在基本（有些地方还不是很适应）习惯用 emacs，算起来得有 n 年了，我都忘记最早接触 emacs 是什么时候了。在 2010-3-20 之前尝试过很多次，基本都是记几个快捷键，过几天就又忘记了。后来自己想了下为什么不能持续的原因，我觉得有两个。</p>
<p>1 没有在日常工作里面使用。<br />
之前我的开发工作基本都是直接在某台服务器上面的，这样就开发调试会比较方便，而那些机器一般要不会装 emacs，这样不常用就会导致记住的快捷键过几天就忘记了。最近刚好需要在本机写点程序，也就刚好用上了。</p>
<p>2 不会 elisp。<br />
emacs 的配置文件都是 elisp 写的，而不经过配置的 emacs 就编辑文件来看，我觉得还不如去用 vim，vim 好用多了。我想刚看到 elisp 的时候一般都会觉得这个语言太变态了，全是一堆的括号。。。而不会 elisp 就会导致你只能去机械的复制别人的配置，如果刚好是你想要的，那还好，而如果还想做点小的修改，那就会很郁闷，用起来郁闷，不用可能更郁闷。不爽多了，就干脆不用 emacs 了。</p>
<p>如果你能在日常工作中经常使用，并且会写程序（比如 php,perl 什么的，随便哪个都行），那么对于基本没怎么配置过 .vimrc 的用户来说，切换到 emacs 其实应该还算是一个比较简单的事情。</p>
<p>1 emacs 是无模式的。<br />
这就是说你不用经常去按那个 Esc 来切换模式了。没有模式也就意味着你不能使用像 vim 那么简短的命令了，因为像 a,i,o,h,j,k 这些对 emacs 来说，这些都是正常的输入字符，所以我们不得不在这些字符前面加上 C(control), M(Meta 一般是 Alt), S(shift) 这些前缀。在 emacs 里面需要按的可能还远不止这些控制字符加一个普通字符，比如我定义的 C-c n E 来打开 erc。不要被这些吓着了，并不需要你记住所有的，你只要记住你常用的就好了。</p>
<p>2 emacs 里面的 buffer。<br />
打开一个文件，就会出现一个 buffer。调用帮助，也会打开 buffer。使用 emacs 绝对不要和一些自动出现的 buffer 过不去，使用 emacs 的理念就是一个编辑器 n 个 buffer，编辑文件的，看 mail、news 的，上 irc 的等等。你需要的是一个方便的 buffer 切换的工具，推荐的有 ido-mode 和 ibuffer。</p>
<p>3 emacs 里面有各种 mode。<br />
vim 里面是通过设置 filetype(ft) 来达到语法高亮等功能的。emacs 里面是通过各种 mode。emacs 里面有主模式(main mode)，和辅模式(minor mode)。上面说的 ido-mode 就是一个辅模式。打开一个文件后，一般有一个主模式（通过一些方法也可以有多个），多个辅模式。比如我打开一个 js 文件，会同时使用到 js2-mode 这个主模式，和 highlight-tail-mode, autocomplate-mode 这几个辅模式。</p>
<p>4 写点 elisp。<br />
elisp 基本就是一堆的括号，括号最左半边的是操作符或函数，后面的都是他的参数，比如 (- 10 3)，具体这个是什么意思，就要去看看 “-” 是干嘛的，他会对后面的参数做什么事。再比如(setq xwl-at-company? (xwl-at-company))。先去看看那个 setq 是干嘛的，查完好像是设置变量的，他会把第二个参数的值赋给第一个参数。那第二个变量是个表达式，那就等于会把这个表达式的值赋给他，对吧。这个括号表达式是干嘛的呢？xwl-at-company 这个是自己写的函数，不需要参数，他会根据一些信息返回是不是在使用公司的网络。是返回 t，不是返回 nil。ok，这不就明白了么？呵呵。还有一些像 (if, (when, (progn 等等，都是这么个理解方法。<br />
写程序就避免不了调试，最简单的调试方法应该就是直接打印了吧，呵呵。elisp 里面可以使用 print, message 来输出一些调试信息。比如 (print (format “value of t: %s” t))，具体啥意思可以参考前面说的方法去查查。这些信息可以在一个叫 *Messages* 的 buffer 里面看到。</p>
<p>5 emacs 里面的帮助。<br />
C-h 是调用帮助，可以在后面再输入 ？ 来看看有什么可用的帮助。我一般用的是 m（看当前 mode 的一些快捷键设置），k（查某个快捷键是干嘛的），v（查 emacs 变量的值）。</p>
]]></content:encoded>
			<wfw:commentRss>http://wdicc.com/how-i-became-a-emacser/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>VIM查找替换归纳总结zz</title>
		<link>http://wdicc.com/search-in-vim/</link>
		<comments>http://wdicc.com/search-in-vim/#comments</comments>
		<pubDate>Tue, 18 Apr 2006 11:07:42 +0000</pubDate>
		<dc:creator>wd</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://blog.wdicc.com/?p=147</guid>
		<description><![CDATA[http://spaces.msn.com/dingy/blog/cns!2F24B9E66A542581!327.entry VIM中常用的替换模式总结。 1，简单替换表达式 替换命令可以在全文中用一个单词替换另一个单词： :%s/four/4/g “%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作，那么只要去掉%即可 &#160; 如果你有一个象 “thirtyfour” 这样的单词，上面的命令会出错。这种情况下，这个单词会被替换成”thirty4&#8243;。要解决这个问题，用 “\&#60;” 来指定匹配单词开头： &#160; &#160; &#160;&#160; :%s/\&#60;four/4/g 显然，这样在处理 “fourty” 的时候还是会出错。用 “\&#62;” 来解决这个问题： &#160; &#160; &#160;&#160; :%s/\&#60;four\&#62;/4/g 如果你在编码，你可能只想替换注释中的 “four”，而保留代码中的。由于这很难指定，可以在替换命令中加一个 “c” 标记，这样，Vim 会在每次替换前提示你： &#160; &#160; &#160;&#160; :%s/\&#60;four\&#62;/4/gc 2，删除多余的空格 要删除这些每行后面多余的空格，可以执行如下命令： &#160; &#160; &#160;&#160; :%s/\s\+$// 命令前面指明范围是 “%”，所以这会作用于整个文件。”substitute” 命令的匹配模式是 “\s\+$”。这表示行末（$）前的一个或者多个（\+）空格（\s）。替换命令的 “to” 部分是空的：”//”。这样就会删除那些匹配的空白字符。 3，匹配重复性模式 星号项 “*” 规定在它前面的项可以重复任意次。因此: &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://spaces.msn.com/dingy/blog/cns!2F24B9E66A542581!327.entry">http://spaces.msn.com/dingy/blog/cns!2F24B9E66A542581!327.entry</a></p>
<p>VIM中常用的替换模式总结。</p>
<p>1，简单替换表达式</p>
<p>替换命令可以在全文中用一个单词替换另一个单词：</p>
<p>:%s/four/4/g</p>
<p><span id="more-147"></span>
<p>“%” 范围前缀表示在所有行中执行替换。最后的 “g” 标记表示替换行中的所有匹配点。如果仅仅对当前行进行操作，那么只要去掉%即可</p>
<p>&nbsp; 如果你有一个象 “thirtyfour” 这样的单词，上面的命令会出错。这种情况下，这个单词会被替换成”thirty4&#8243;。要解决这个问题，用 “\&lt;” 来指定匹配单词开头：</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; :%s/\&lt;four/4/g</p>
<p>显然，这样在处理 “fourty” 的时候还是会出错。用 “\&gt;” 来解决这个问题：</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; :%s/\&lt;four\&gt;/4/g</p>
<p>如果你在编码，你可能只想替换注释中的 “four”，而保留代码中的。由于这很难指定，可以在替换命令中加一个 “c” 标记，这样，Vim 会在每次替换前提示你：</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; :%s/\&lt;four\&gt;/4/gc</p>
<p>2，删除多余的空格</p>
<p>要删除这些每行后面多余的空格，可以执行如下命令：</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; :%s/\s\+$//</p>
<p>命令前面指明范围是 “%”，所以这会作用于整个文件。”substitute” 命令的匹配模式是</p>
<p>“\s\+$”。这表示行末（$）前的一个或者多个（\+）空格（\s）。替换命令的 “to” 部分是空的：”//”。这样就会删除那些匹配的空白字符。</p>
<p>3，匹配重复性模式</p>
<p>星号项 “*” 规定在它前面的项可以重复任意次。因此:</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; /a*</p>
<p>匹配 “a”，”aa”，”aaa”，等等。但也匹配 “” (空字串)，因为零次也包含在内。星号 “*” 仅仅应用于那个紧邻在它前面的项。因此 “ab*” 匹配 “a”，”ab”，”abb”,”abbb”，等等。如要多次重复整个字符串，那么该字符串必须被组成一个项。组成一项的方法就是在它前面加 “\(“，后面加 “\)”。因此这个命令:</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; /\(ab\)*</p>
<p>匹配: “ab”，”abab”，”ababab”，等等。而且也匹配 “”。</p>
<p>要避免匹配空字串，使用 “\+”。这表示前面一项可以被匹配一次或多次。</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; /ab\+</p>
<p>匹配 “ab”，”abb”，”abbb”，等等。它不匹配 后面没有跟随 “b” 的 “a”。</p>
<p>要匹配一个可选项，用 “\=”。 例如:</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; /folders\=</p>
<p>匹配 “folder” 和 “folders”。</p>
<p>4，指定重复次数</p>
<p>要匹配某一项的特定次数重复，使用 “\{n,m}” 这样的形式。其中 “n” 和 “m” 都是数字。在它前面的那个项将被重复 “n” 到 “m” 次 (|inclusive| 包含 “n” 和 “m”)。例如:</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; /ab\{3,5}</p>
<p>匹配 “abbb”，”abbbb” 以及 “abbbbb”。</p>
<p>&nbsp; 当 “n” 省略时，被默认为零。当 “m” 省略时，被默认为无限大。当 “,m” 省略时，就表示重复正好 “n” 次。例如:</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; 模式 &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; 匹配次数 </p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; \{,4} &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0，1，2，3 或 4</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; \{3,} &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3，4，5，等等</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; \{0,1} &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; 0 或 1，同 \=</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; \{0,} &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0 或 更多，同 *</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; \{1,} &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1 或 更多，同 \+</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; \{3} &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; 3</p>
<p>5，多选一匹配</p>
<p>在一个查找模式中，”或” 运算符是 “\|”。例如:</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; /foo\|bar</p>
<p>这个命令匹配了 “foo” 或 “bar”。更多的抉择可以连在后面:</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; /one\|two\|three</p>
<p>匹配 “one”，”two” 或 “three”。</p>
<p>&nbsp; 如要匹配其多次重复，那么整个抉择结构须置于 “\(” 和 “\)” 之间:</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; /\(foo\|bar\)\+</p>
<p>这个命令匹配 “foo”，”foobar”，”foofoo”，”barfoobar”，等等。</p>
<p>&nbsp; 再举个例子:</p>
<p>&nbsp; &nbsp; &nbsp;&nbsp; /end\(if\|while\|for\)</p>
<p>这个命令匹配 “endif”，”endwhile” 和 “endfor”。</p>
]]></content:encoded>
			<wfw:commentRss>http://wdicc.com/search-in-vim/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

