欢迎来到天天文库
浏览记录
ID:14423749
大小:48.00 KB
页数:14页
时间:2018-07-28
《zhl的emacs笔记:shell与dired》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ZHL的emacs笔记:shell与dired本文档是"ZHL的emacs笔记"的一部分。本文档的格式是为了快速检索与浏览而专门调整的,最好用emacs来查看,将tab缩进显式设为3个字符,设置不自动换行,并使用outline模式,以提高学习和工作效率。具体配置可参考文档"ZHL的emacs笔记:配置小技巧"。本文档描述了emacs中的shell和dired这两个常用模式,包括功能描述、配置方法以及命令索引,当然,主要是本人在使用过程中所关注的细节以及积累的经验。希望本文档能给emacs同好一些帮助,任何问题或建议
2、可以发信到seaxii@126.com来讨论。文档正文----------------------------------------------------------------**Emacs工作环境:**执行shell命令:说明:1、默认的,emacs使用当前用户默认的shell来执行各种命令。变量"shell-file-name"指定了使用哪个shell,其值必须是shell命令的完整路径,其值被环境变量SHELL初始化,而环境变量SHELL的默认值为C:/ProgramFiles/emacs-23.3/b
3、in/cmdproxy.exe,是对DOS的一个封装。2、注意,执行shell命令所用何种shell与进入Shell模式打开何种shell是可以用不同的变量分别设置的,二者有一定关联性(默认值都从环境变量SHELL继承),但很可能不相同。3、为了能正确使用cygwin提供的各种工具,应将执行shell命令的shell指定为cygwin提供的bash,即将变量shell-file-name的值指定为C:/cygwin/bin/bash.exe,这样,再执行diff-backup等命令就不会报路径错误了。4、如果执行s
4、hell命令后的输出结果显示为乱码,则说明对输出结果采用的解码方式不对,调整为合适的解码方式后应该就显示正确了。针对shell命令的编解码方式亦是由当前shell环境I/O的编解码配置决定的,具体参见"中文支持"中对变量process-coding-system-alist的描述。M-!shell-command:执行一个shell命令,命令输出显示在一个名为*ShellCommandOutput*的缓冲区中。命令执行是阻塞的。加前导参数C-u则命令输出将插入到当前缓冲区的光标处。M-
5、shell-command-
6、on-region:以当前选定文本块作为输入来执行一个shell命令。比如执行sort命令。命令执行是阻塞的。M-&async-shell-command:与shell-command类似,但命令是在后台执行的(通过为命令加&达成),而输出则显示在一个名为*AsyncShellCommand*的缓冲区中。shell:打开一个窗口进入Shell模式,其缓冲区名字默认为*shell*,为了打开多个shell缓冲区必须用rename-buffer或rename-uniquely命令重命名shell缓冲区名字。命令执行是非
7、阻塞的。说明:1、默认的,输入口令(密码)时会明文显示,在~/.emacs中加入如下一行即可改为暗文:(add-hook'comint-output-filter-functions'comint-watch-for-password-prompt)。2、shell模式打开何种shell是按以下顺序决定的:首先查看变量explicit-shell-file-name的值,接着查看环境变量ESHELL的值,最后查看环境变量SHELL的值。3、shell模式打开shell(一个交互式shell)时会在shell正常的启
8、动文件之后再额外运行一个初始化文件,即~/.emacs_SHELLNAME,如CShell为~/.emacs_csh,bash为~/.emacs_bash。并且在shell模式中emacs还会把环境变量EMACS设置为t,把环境变量TERM(终端类型)设置为emacs。4、shell模式打开shell时的命令行参数由变量explicit-csh-args(CShell)或explicit-bash-args(bash)指定。5、进入shell模式时emacs会自动进入当前默认目录,并且在shell模式中执行的cd、
9、popd、pushd等命令会被emacs识别并根据这些命令自动改变当前默认目录,这样,如果不出错的话,查找文件的默认目录应当和shell模式中的当前目录保持一致。但,这个功能存在以下两个问题可能会导致出错:a、emacs只有在把cd、popd、pushd等命令输入到命令行的最开始时才能检测到它们,比如若一行中包含两个cd命令则等二个可能不会导致改变默认目录;
此文档下载收益归作者所有