用镜头记录,用心灵体验 | 订阅本站 | 所有笔记 | 亲和力设计 | 流量

DB2 学习笔记

博客话题:DB2,Linux,Web,业余无线电,户外,摄影,截拳道,Thankpad,其他

软件开发

emacs 学习笔记

目录

  1. 如何阅读 
  2. 常用命令
  3. DB2 相关命令
  4. emacs环境配置
  5. 延展阅读

如何阅读 

以下emacs 命令中

  1. C 代表Contral 键,M 代表Alt 键,ret 是回车。C-x 的含义是按住Contral 再按x
  • 空格用于分隔控制字符和命令,其它字符是emacs 命令,按顺序输入。
  • 尖括号<> 当中的内容不是emacs 命令,按语义输入。
  • 斜杠/用于隔开多个类似的命令和描述。

常用命令

打开文件
C-x f <FilePath> ret
多窗口间切换(窗口1... 窗口N)
C-x 1...<N>
多窗口间切换(上一个/下一个)
C-x 左/右箭头键
关闭当前Buffer 
C-x k ret
保存
C-x C-s
退出
C-x C-c
光标上、下、左、右移动
C-p/C-n/C-b/C-f
光标移动到行首、行尾 
C-a/C-e 
光标前/后移动一个单词
 M-f/M-b
光标前/后移动一个句子
 M-a/M-e
光标前/后移动一个段落
 M-{/M-}
光标到buffer 首/尾
 M-</M->
光标到第N行
 M-g-g N ret
删除后一个字符
 Del/C-d
删除前一个单词
 M-Del/M-Backspace
删除后一个单词
 M-d
删除到句首/尾
 M-k/C-x Backspace/Del
删除到行尾
 
C-k
将当前行与上一行进行合并,空格分隔
M-^ 

类似于vi 的Shift+j ,不过合并的方向相反。

向前/后搜索
C-r/C-s 
向上/下翻页
M-v/C-v 
光标行居中
C-l
选择一个范围 
C-空格

或者

C-2个空格 

上面的命令将当前光标所在位置设为选择起始点,然后移动光标,移动到那就选择到那,直接执行命令即可。后面的用法,会高亮选中的区域,更利于识别。

也可以用鼠标滑亮所选区域。

注:如果输入法占用了"C-空格"的快捷键,最好改成其它。

复制所选文本
 M-w
剪切所选文本
C-w
插入^G或其它控制字符
C-q C-G
dos2unix
C-x ret f unix ret
刷新一个文件内容的tricky 方法(reload)
C-x C-v ret
字符替换
M-x replace-string ret <OldStr> ret <NewStr> ret
替换行尾为换行(正则表达式)
M-x replace-regexp ret $ ret C-q C-J ret

以上2个命令作用范围是当前光标至buffer 末尾。

范围替换
 高亮选中范围 M-x replace-string ret <OldStr> ret <NewStr> ret
列替换
选中范围 C-x r t <NewStr> ret
列删除
选中范围 C-x r d
列剪切 
选中范围 C-x r k
列粘贴
C-x r y
替换Tab为空格
选中范围 M-x untabify ret
删除文件所有行尾空格 
M-x delete-trailing-whitespace ret
批量大小写转换 
选中范围 C-x C-u/C-l
光标后一个单词大小写转换
M-u/M-l
光标所在单词首字母变为大写
M-c
版本比较 diff
C-x v =
版本提交 commit
C-x v v <"message here"> C-c C-c
如果有个emace命令记不起来,可以根据几个字母或者单词搜索,也可用来发现新的命令
C-h a <CmdStr>
更改文件的编码方式

从当前编码变更UTF-8:

C-x ret f utf-8 ret

从当前编码变更到GB2312:

C-x ret f gb2312 ret

这与前面的dos2unix的原理是一样的,在f命令之后可以用TAB键查看编码名称的列表。

需要注意的是,在某些情况下,emacs在保存文件之前会对字符集做些判断,并自动的修改他们,这可能会导致上面的命令事实上的失效。比如,对于一个HTML文档,若在META标签中指定了UTF-8字符集,那么即使你使用上面命令将文件编码修改成任何其它,在emacs执行保存之后,它会自动回到UTF-8编码方式,即使你使用 将META 标签注释也是如此。

查看光标所在那个字符的编码方式
M-x describe-char ret

结果中file code: 后面的内容指出了这个字符在文件中的内码以及编码方式,这里显示的编码方式与emace内部处理文件所采用的编码无关,是文件中真实的、二进制code所用的编码方式。而charset: 后面显示的字符集并不总是与file code一致,似乎这里仅仅表明了与这个字符最亲近的一种字符集。

DB2 相关命令

建立一个db2 进程,并将当前emacs 实例中的buffers 与其关联
M-x sql-db2 ret 
将当前buffer 与emacs实例中已经存在的db2 进程进行关联
M-x sql-set-sqli-buffer ret

在db2 进程已经建立并且关联之后,可以使用以下命令执行db2 CLP命令或SQL语句。

执行整个buffer的语句
M-x sql-send-buffer 
执行选中的语句
选中范围 M-x sql-send-region
执行光标所在段落的语句
M-x sql-send-paragraph

段落的默认分隔符是空行(或者仅含有空格和TAB)。

在命令编辑区编辑新语句并执行
M-x sql-send-string

以上执行语句的部分命令有快捷键可调用,也可以使用global-set-key 命令将其更改为自己习惯的按键。

emacs环境配置

将emacs加入Windows 右键菜单

为了能使用鼠标右键菜单,快捷的将任何文件以emacs方式打开,可以通过以下两种方式实现:

  • 使用"发送到(Send to)

为runemacs.exe 创建一个快捷方式,并放至"发送到(Send to)"文件夹,一般位于:"C:\Documents and Settings\***\SendTo"。

  • 右键菜单直接打开

这种方式需要修改注册表,参照以下注册表内容,可以修改路径后导入,也可以独立创建注册表项目

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\Open with emacs]

[HKEY_CLASSES_ROOT\*\shell\Open with emacs\command]
@="C:\\emacs-23.1\\bin\\runemacs.exe\" \"%1\""

这种方式会为每个文件创建一个单独的编辑窗口(多个emacs实例),若希望共享一个emacs编辑窗口(共享emacs实例),请参照下面一个小节。

更友好的右键菜单

为了实现多次打开的文件共享同一个emacs编辑窗口,需要以下步骤:

  1. 将以下命令加入.emacs文件(一般位于: "C:\Documents and Settings\***\Application Data\.emacs")
    (server-start)
  2. 新建以下Windows 环境变量:
    EMACS_SERVER_FILE=C:\Documents and Settings\***\Application Data\.emacs.d\server\server
    在完成第一步以后,启动emacs,查看以上环境变量路径中的文件是否创建成功,若没有找到此文件,请核对你的emacs版本修改为正确的路径。以上文件在emacs关闭后自动删除。
    环境变量设置完毕需要重新启动Windows才能生效。
  3. 修改注册表,添加右键菜单项。若前面已经创建此注册表项目,对照这里修改即可。
    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\*\shell\Open with emacs]
    
    [HKEY_CLASSES_ROOT\*\shell\Open with emacs\command]
    @="C:\\emacs-23.1\\bin\\emacsclientw.exe -a \"C:\\emacs-23.1\\bin\\runemacs.exe\" \"%1\""
    emacsclientw.exe 将不启动新的实例,而是在当前实例中打开新的文件,而"-a"参数通知emacs若没有实例在运行,则启动新的实例runemacs.exe。
    这个方式简单有效,可以满足大部分需求,但有一个缺陷,即在没有任何emacs实例运行的情况下,一次选中多个文件打开时,会打开等同于文件数目的emacs窗口,即第一次无效。原因是打开文件的请求是同时处理的,第一个emacs实例创建的服务(前述的server文件)还来不及被检测到。
    解决这个问题要稍微复杂点,请参考接下来的小节。

完美的右键菜单
若希望在任何时候发送到emacs的多个文件都只会打开一个实例,所需的工作会有点难看,不过是有效的,会用到DOS batch文件和vbs文件,DOS batch文件用来检测已运行的emacs实例,并等待服务文件创建完毕再继续文件打开操作。而vbs文件用来调用DOS batch文件以隐藏DOS窗口。
  1. 按照上一小节的步骤1与步骤2,配置好.emacs文件与环境变量EMACS_SERVER_FILE
  2. 下面是两个文件(emacs.bat 与emacs.vbs)的代码,保存到emacs的bin目录。
  3. emacs.bat

    tasklist /FI "IMAGENAME eq emacs.exe" /NH | find "emacs.exe" && goto check || goto new
    :new
    C:\emacs-23.1\bin\runemacs.exe
    :check
    if not exist "%EMACS_SERVER_FILE%" goto check
    :existing
    C:\emacs-23.1\bin\emacsclientw.exe -n %1
    emacs.vbs

    DIM objShell
    set objShell=wscript.createObject("wscript.shell")
    iReturn=objShell.Run("cmd.exe /C C:\emacs-23.1\bin\emacs.bat " & """" & WScript.Arguments(0) & """", 0, TRUE)
  4. 修改注册表,添加右键菜单项。若前面已经创建此注册表项目,对照这里修改即可。
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\Open with emacs]
[HKEY_CLASSES_ROOT\*\shell\Open with emacs\command]
@="Wscript.exe \"C:\\emacs-23.1\\bin\\emacs.vbs\" \"%1\""
经过以上修改,emacs右键菜单在第一次启动emacs时,也可以将多个文件共享在一个实例中打开了。

延展阅读

Alex's picture

my email address in picture

搜索|Search

评论|Recent Comments

按月归档|By Month

2009
07
2008
11
10
07
05
04
03
02
01
2007
12
10
07
06
05
04
03
02
01
2006
12
11
10
09
08
07
06
05
04
03
02
01
2005
11
10
09
08
07
04
03
2004
12
11
10
09
08
07
06
05
04
03
02
01
2003
12
10
09
08
06
2002
09
08
04
03
02
2001
12
09
07
06
05

我读|My Books

db2

我的链接|My Links

我的朋友|My Friends

Creative Commons License
This blog is licensed under a Creative Commons License.
Movable Type 4 Logo