Windows下Emacs使用SBCL

今天配置Emacs时,发现Emacs无法使用SBCL,其默认为lisp。
会报下面的错误:

Searching for program: no such file or directory, lisp 

这个问题可以用一个变通的方法解决,在Emacs路径下建立下面的文件:
lisp.bat

@rem start sbcl
D:\CommonLisp\sbcl-1.1.17\sbcl.exe --core "D:\CommonLisp\sbcl-1.1.17\sbcl.core"

然后就可以使用啦。

还是linux下面简单一些,符号链接直接搞定:

ln -s /usr/bin/clisp /usr/bin/lisp

Evernote本地用户失效

今天打开Evernote后更新失败,并提示:
Synchronization failed. Invalid username or password.

除了升级了一下,还真没做什么,准备退出再登陆,又怕本地修改丢失,查了下,最后发现:
关闭Evernote后,运行命令行

Evernote.exe /NoLastLogin

重新登录就好啦:)

JS编辑器研究

最近项目需要用到JS编辑器,找了一些开源项目看了下(由于客户浏览器版本不高,HTML5版本几乎无法使用),
就找到了下面三个比较靠谱一点的编辑器:

nicEdit 无jQuery 小巧,易于集成,功能有限
elrte 有jQuery 功能强大,易于集成,但很久没更新了
ckeditor 有jQuery 功能强大,更新给力,易集成性貌似差一些

回头找找看,还有没有其他靠谱的工具。

Linux常用命令10Vim常用操作

0.基本操作
0.1多行复制
0.1.1、复制方法一
A、将光标移动到要复制的起始行
B、如果复制1行,则按下yy,如果是复制n行,则按下nyy
C、光标移动到粘贴地点,按下p

0.1.2、复制方法二
A、ESC,:进入命名模式
B、start_line_no,end_lin_no co target_line_no

0.1.3、复制方法三(方法二+标签)
A、将光标移动到要复制的起始行,输入ma
B、将光标移动到要复制的结束行,输入mb
C、将光标移动到要复制的目标行,输入mc
D、ESC,:进入命名模式
E、’a,’b co ‘c

0.1.4、剪切方法一
A、将光标移动到要剪切的起始行
B、如果剪切1行,则按下dd,如果是剪切n行,则按下ndd
C、光标移动到粘贴地点,按下p

0.1.5、剪切方法二
A、ESC,:进入命名模式
B、start_line_no,end_lin_no m target_line_no

0.1.6、剪切方法三(方法二+标签)
A、将光标移动到要剪切的起始行,输入ma
B、将光标移动到要剪切的结束行,输入mb
C、将光标移动到要剪切的目标行,输入mc
D、ESC,:进入命名模式
E、’a,’b m ‘c

1.正则表达式
1.1.行首、行尾及空格
1.1.1 符号具体含义

^表示行首
$表示行尾
\s表示空格

1.1.2 应用举例

在全局范围内删除开始空格
:%s/^\s\+/

删除末尾空格
:%s/\s\+$/

删除空行
:g/^$/d

删除空白行
:g/^\s\+$/d

删除-开始的行
:g/^-/d

2.Table与空格互转
2.1、空格转TAB

:set ts=8
:set expandtab
:%retab!

2.2、TAB转空格

:set ts=8
:set noexpandtab
:%retab!

3.删除重复行
3.1、方法一

先排序
:sort
然后删除的重复项的后面一项
:g/\%(^\1$\n\)\@<=\(.*\)$/d

3.2、方法二

先排序
:sort
然后删除重复项的前面一项
:g/^\(.*\)$\n\1$/d

3.3、方法三

先排序
:sort
然后将所有重复记录替换为第一条
:%s/^\(.*\)\(\n\1\)\+$/\1/

4.奇偶行
4.1、删除奇数行

%s/\(^.*$\)\n\(^.*$\)/\1

4.2、删除偶数行

%s/\(^.*$\)\n\(^.*$\)/\2

4.3、奇偶行合并,以tab分隔

%s/\(^.*$\)\n\(^.*$\)/\1\t\2

%s/\n\(.*\n\)/\t\1

5.生成行号
5.1、方法1

:r !seq 1 100

5.2、方法2

:let n=0 | g/^/s//\=n/|let n+=1 

6、每行首字母大写

%s/^\([a-z]\)/\U\1/

语法插件

WP-SYNTAX插件很不错,但经常找语言代码就不好了,
下面是它的语言表,希望对大家有用:)

$lookup = array(
    '6502acme' => array( 'a', 's', 'asm', 'inc' ),
    '6502tasm' => array( 'a', 's', 'asm', 'inc' ),
    '6502kickass' => array( 'a', 's', 'asm', 'inc' ),
    '68000devpac' => array( 'a', 's', 'asm', 'inc' ),
    'abap' => array('abap'),
    'actionscript' => array('as'),
    'ada' => array('a', 'ada', 'adb', 'ads'),
    'apache' => array('conf'),
    'asm' => array('ash', 'asm', 'inc'),
    'asp' => array('asp'),
    'bash' => array('sh'),
    'bf' => array('bf'),
    'c' => array('c', 'h'),
    'c_mac' => array('c', 'h'),
    'caddcl' => array(),
    'cadlisp' => array(),
    'cdfg' => array('cdfg'),
    'cobol' => array('cbl'),
    'cpp' => array('cpp', 'hpp', 'C', 'H', 'CPP', 'HPP'),
    'csharp' => array('cs'),
    'css' => array('css'),
    'd' => array('d'),
    'delphi' => array('dpk', 'dpr', 'pp', 'pas'),
    'diff' => array('diff', 'patch'),
    'dos' => array('bat', 'cmd'),
    'gdb' => array('kcrash', 'crash', 'bt'),
    'gettext' => array('po', 'pot'),
    'gml' => array('gml'),
    'gnuplot' => array('plt'),
    'groovy' => array('groovy'),
    'haskell' => array('hs'),
    'html4strict' => array('html', 'htm'),
    'ini' => array('ini', 'desktop'),
    'java' => array('java'),
    'javascript' => array('js'),
    'klonec' => array('kl1'),
    'klonecpp' => array('klx'),
    'latex' => array('tex'),
    'lisp' => array('lisp'),
    'lua' => array('lua'),
    'matlab' => array('m'),
    'mpasm' => array(),
    'mysql' => array('sql'),
    'nsis' => array(),
    'objc' => array(),
    'oobas' => array(),
    'oracle8' => array(),
    'oracle10' => array(),
    'pascal' => array('pas'),
    'perl' => array('pl', 'pm'),
    'php' => array('php', 'php5', 'phtml', 'phps'),
    'povray' => array('pov'),
    'providex' => array('pvc', 'pvx'),
    'prolog' => array('pl'),
    'python' => array('py'),
    'qbasic' => array('bi'),
    'reg' => array('reg'),
    'ruby' => array('rb'),
    'sas' => array('sas'),
    'scala' => array('scala'),
    'scheme' => array('scm'),
    'scilab' => array('sci'),
    'smalltalk' => array('st'),
    'smarty' => array(),
    'tcl' => array('tcl'),
    'vb' => array('bas'),
    'vbnet' => array(),
    'visualfoxpro' => array(),
    'whitespace' => array('ws'),
    'xml' => array('xml', 'svg', 'xrc'),
    'z80' => array('z80', 'asm', 'inc')
);

c语言测试

//lang="c"
int main(int argc,char** argv)
{
    printf("Hello World\n");
    return 0;
}

c++语言测试

//lang="cpp"
using namespace std;
int main(int argc,char** argv)
{
    cout<<"Hello World"<<endl;
    return 0;
}
&#91;/code&#93;

Objective-C语言测试
&#91;code lang="objc"&#93;
#import <Foundation/Foundation.h>

int main(int argc, char**argv)
{
	NSString *hello = @"Hello World\n";
	NSLog(hello);
	[hello release];
	return 0;
}

java语言测试

//lang="java"
public static void main(String[] args)
{
    System.out.println("Hello World!");
}

bash脚本测试

#!/bin/bash
#lang="bash"
HI="Hello World!"
echo $HI

bat脚本测试

REM lang="bash"
echo "Hello World!"