awk 需要我们使用命令行编辑,而命令行编辑默认是Emacs 格式的,所以要熟悉Emacs 的编辑方式:
emacs 有不同的主模式, 实现不同的功能, 当然都在统一的emacs 风格之下。
shell mode, 是命令行编辑完全进入全屏的编辑模式。
calendar 显示了emacs 控制光标的移动
dired 显示了一种全屏的可视化文件管理模式,想删就删,想看就看,只需要敲敲快捷键,不需要再输入命令了。
曾经觉得norton commander 是一种很好的文件管理工具, 而文件浏览器的操作功能,靠右键菜单的几个选择项太弱了,
而emacs dired 操作的命令可以说多如泥沙, 先用用最常用的删除,重命名和拷贝命令吧, 操作的时刻离不了选择文件。 ctrl-h m 显示了他的帮助文档
文件的删除,重命名拷贝等操作与文本编辑合二为一,显示了一种和谐。
emacs 尽量用一些快捷键来完成特定的操作,当然了,你可以用M-x来完成所有命令.
下面是常用的快捷命令键。常用命令不是记在脑中,而是记在手上。
1. 光标移动
------------------------------------------------------------
M-x: calendar 调出日历,这里正是熟悉Emacs 光标移动的场景:
------------------------------------------------------------
1. C-p C-n
2. C-a C-e M-a M-e
3. C-f C-b M-f M-b
4. M-{ M-}
5. C-x [ C-x ]
等同于字符编辑界面的。
字符前进,后退 C-f C-b
单词前进,后退 M-f M-b
行前进,后退 C-p C-n
到行首,到行尾 C-a C-e
句子前进,后退 M-a M-e
段落前进,后退 M-{ M-}
页前进,后退 C-x [ C-x ]
C-l 清屏幕,置光标到顶
C-v 向前滚屏
M-v 向后滚屏
2. 编辑命令
a. 删除: ctrl-d, M-d, Ctrl-k
b. yank: ctrl-y, M-y
c. undo, redo: ctrl-/
d. C-t M-t C-x t
e. M-z 删除到指定字符
3. 查找命令
C-s C-r
M-s M-r
C-M-s C-M-r
M-%
----------------------------------------
Emacs 查找,替换
更细致的查找,替换
----------------------------------------
查找分4种: 增量查找,简单查找,词组查找,正则查找
a. 增量查找: C-s C-r
默认大小写自动匹配, 可用M-c切换大小写敏感性(仅此次有效)
C-w 能将光标处单词复制到查找区,C-y 能复制到尾.
b. 简单查找: C-s RET string RET
C-r 同
c. 词组查找: M-s w
也可以使用非增量
d. 正则查找
C-M-s C-M-r
替换:简单替换,正则替换,查询替换
M-x replace-string RET oldstring RET newstring RET
M-x replace-regexp RET oldstring RET newstring RET
M-% (query-replace)
M-x query-replace-regexp 等多种
----------------------------------------
重复刚才的操作命令:
----------------------------------------
Emacs, 重复查找命令? C-x z, z
Emacs 重复执行查找,替换等复杂命令:C-x Esc Esc
“M-x list-faces-display” 查看当前主题的详细设置
(load-theme 'misterioso t)
1. 显示模式及设置模式
c-h m -> describe mode
M-x mode-name 用以切换模式
2. 显示变量及设置变量
c-h v -> describe variable
M-x set-variable
注释:
M-x comment-region
M-x kill-comment
c/c++ 语言的缩进格式设置调整 vim 默认就是 k&r 格式
M-x c-set-style k&r
永久修改:
(add-hook 'c++-mode-hook
'(lambda() (c-set-style "k&r")))
1. lambda 同defun 一样,也可以定义函数,格式
(lambda (args) code)
可见,lamda 定义的函数没有名字,叫匿名函数.
把函数付给一个变量,不是函数求值,必须要用引用。
例如:
(setq mode-name-hook '(lamda(args) code))
(add-hook 'mode-name-hook '(lamda(args) code))
两者区别在于, setq 重新给mode-name-hook 赋值,覆盖了原有的hook
后者只是添加了一个
很多主模式都有挂钩,专门让别人把代码挂进去的钩子,方面你定制这个主模式。
这个函数的名字叫xxxx-hook, c++ 的hook 名字叫c++-mode-hook
------------------------------------------------
Emacs 修改文件名,象编辑文本一样得以实现
体现了emacs的一贯风格,可视的编辑模式来搞定一切.
------------------------------------------------
1. 进入dired 模式, C-x d 等方式
2. 进入可编辑dired 模式:C-x C-q (或 M-x wdired-change-to-wdired-mode )
a.直接编辑文件名来更改。
b.查找,替换文件名(M-x query-replace 或 M-% )
c.C-x C-s 保存修改
修改文件名象编辑文本一样得以实现
修改名称与Emacs 的编辑功能得到了统一
emacs dired 中查找文件:
M-x后运行find-name-dired
找到的文件全删除:选定所有文件%m .* D
------------------------------------------------------------
dired 文件过滤显示:
------------------------------------------------------------
dired 比 ls 好用, 显示的时候相当于ls -l
可以移动光标,对文件名称进行编辑,删除,拷贝文件等。
ls 可以过滤文件, 例如过滤cpp 文件 ls *.cpp
dired 应该如何过滤,操作稍微有点繁琐,叫技巧也行,如下:
1. 标记要显示的文件,例如所有的cpp 文件
%m .*\.cpp
2. 反选所有标记
t
3. 过滤出带有标记的文件
k
k命令并不是删除文件,只是把带标记文件隐藏起来, g 命令还可以把隐藏的文件恢复出来.
还有一些快捷的标记命令:
~ 标记备份文件
# 标记自动保存文件
** 标记可执行文件
*/ 标记目录文件
M-{} 可以在标记的文件间跳转
用鼠标点击可以在另一个窗口直接打开文件。 与v像似,但v在本窗口.
C-h m 有完整帮助. 可以看到有大量的命令,常习之可以提高工作效率.
------------------------------------------------------------
emacs shell 优点:
------------------------------------------------------------
Alt-x: shell 可以进入
1. 全屏幕编辑
2. C-r 反向查找命令
3. C-c C-o 清理命令输出 (保留干净的命令历史)
4. 使用缩略语, (比alias 更实用)
M-x: abbrev-mode
添加:
C-u <num> C-x a g (定义全局缩写词)
C-u <num> C-x a i (定义该模式下缩写词)
数字参数表示光标前的单词个数, 传参数0,表示以选定区域来扩展
删除:
传递一个负参数可以删除
直接编辑保存的缩写词文件来删除
使用:
缩写词空格完成扩展
缩写词C-q空格将不扩展
保存:
M-x write-abbrev-file
读取:
M-x read-abbrev-file
list-abbrev
kill-all-abbrev
----------------------------------------
emacs 帮助系统。
----------------------------------------
查找最基本,最常见的快捷键和函数.
C-h c
C-h k
查找函数绑定了哪个按键
C-h w
模糊查找某个编辑命令和文档
C-h a
模糊查找函数,文档,变量,符号等
M-x apropos RETURN regexp RETURN
这个可能会搜索出太多的结果,中断执行C-g
更进一步,就是查看源代码了
另外:
C-h v 查看变量
C-h f 查看函数说明