emacs-bash-completion

授权协议 GPL-2.0 License
开发语言 SHELL
所属分类 应用工具、 终端/远程登录
软件类型 开源软件
地区 不详
投 递 者 罗翔
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

bash-completion for Emacs test melpa melpa-stable

bash-completion.el defines dynamic completion hooks for shell-modeand shell-command prompts that is based on bash completion.

Bash completion for Emacs:

  • is aware of bash builtins, aliases and functions
  • does file expansion inside of colon-separated variablesand after redirections (> or <)
  • escapes special characters when expanding file names
  • is configurable through programmable bash completion
  • works on remote shells, through TRAMP.

A simpler and more complete alternative to bash-completion.el is torun a bash shell in a buffer in term mode (M-x ansi-term).Unfortunately, many Emacs editing features are not available whenrunning in term mode. Also, term mode is not available inshell-command prompts.

INSTALLATION

Copy bash-completion.el into a directory that's on Emacs load-path.You can do that manually, or by installing it fromMELPA.

Shell completion

To enable bash completion in shell buffers as well as in commandprompts, such as the prompt started by compile, add the hookbash-completion-dynamic-complete toshell-dynamic-complete-functions.

For example:

(autoload 'bash-completion-dynamic-complete
          "bash-completion"
          "BASH completion hook")
        (add-hook 'shell-dynamic-complete-functions
          'bash-completion-dynamic-complete)

or simpler, but forces you to load bash-completion at startup:

(require 'bash-completion)
        (bash-completion-setup)

After that reload your .emacs (M-x eval-buffer) or restart.

When called from a bash shell buffer,bash-completion-dynamic-complete communicates with the current shellto reproduce, as closely as possible the normal bash auto-completion,available on full terminals.

When called from non-shell buffers, such as the prompt of M-x compile,bash-completion-dynamic-complete creates a separate bash processjust for doing completion. Such processes have the environmentvariable EMACS_BASH_COMPLETE set to t, to help distinguish themfrom normal shell processes.

Completion at point

Additionally, you can enable bash completion in any buffer that contains bashcommands. To do that, call

(bash-completion-dynamic-complete-nocomint COMP-START COMP-POS DYNAMIC-TABLE)

from a function added to completion-at-point-functions.

The trickiest part is setting COMP-START to where the bash command starts;It depends on the mode of the calling buffer and might, in some cases, spanmultiple lines.

COMP-POS is usually the current position of the cursor.

When calling from completion-at-point, make sure to pass a non-nil valueto the DYNAMIC-TABLE argument so it returns a function instead of a listof strings. This isn't just an optimization: returning a function insteadof a list tells Emacs it should avoids post-filtering the results andpossibly discarding useful completion from bash.

For example, here's a function to to do bash completion from aneshell buffer. To try it out, add the function below to your init fileand bind bash-completion-from-eshell to a custom shortcut.

(defun bash-completion-from-eshell ()
  (interactive)
  (let ((completion-at-point-functions
         '(bash-completion-eshell-capf)))
    (completion-at-point)))

(defun bash-completion-eshell-capf ()
  (bash-completion-dynamic-complete-nocomint
   (save-excursion (eshell-bol) (point))
   (point) t))

TROUBLESHOOTING

If completion in a bash shell doesn't behave as you think it should, checkthe following:

  • Does bash behave differently when run outside of Emacs? If not, checkyour shell configuration.
  • Did you start a new bash process, with exec bash or sudo ? If yes,call bash-completion-refresh to configure the new bash process.
  • Call M-x bash-completion-debug and look at the completion tableat the bottom. Does it match your expectation? If not, callM-x bash-completion-refresh to refresh the copy of the completiontable kept by Emacs, or if you're in a M-x execute or M-x compileprompt, call M-x bash-completion-reset-all, then try again.
  • Still on M-x bash-completion-debug, does the output-buffer sectionmatch the expected set of completion? If yes, it might be a displayproblem. Are you using a completion engine other than the default,such as ivy or helm? Try turning it off to confirm, then filea bug
  • If all else fails, file a bug. Please include the outputof M-x bash-completion-debug, the command you're trying to useand the function or package providing completion for that command andwhere to download it.

CONTRIBUTING

To report bugs, features or even to ask questions, please open an issue. To contribute code or documentation, please open a pull request.

See CONTRIBUTING.md for more details.

COMPATIBILITY

bash-completion.el is known to work with Bash 3, 4 and 5, on Emacs,starting with version 24.3, under Linux and OSX. It does not work onXEmacs.

  • M-! cmd RET:打开一个名为“*Shell Command Output*“的窗口,并把该命令的执行结果显示在其中。按下”C-x 1“组合键可以关闭这个窗口。由于Shell命令的输出是在一个编辑缓冲区里,因此我们可以对它进行编辑、保存等操作。 M-| cmd RET:运行Shell命令,并使用编辑窗口中选定的区域作为该Shell命令的输入,然后可以选择是否用该Shell命令的输出来替换编辑

  • ;;-*- mode: lisp; coding: utf-8 -*- ;; Tested Emacs version: 23.1.1, 23.2, 24.3 ;;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;; Convention ;;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  • emacs的常用命令 原文链接: http://ted.is-programmer.com/posts/5431.html Ted posted @ 2008年9月16日 22:35 in  emacs with tags  emacs , 1791 阅读 一、emacs编辑器简介      emacs编辑器是由C语言和LISP语言编写的。LISP(链表处理语言)是由约翰·麦卡锡在1960年左右创

  •       2016/11/15   Emacs编辑器  1.功能    利用Telnet登录远程机;    收发电子邮件;    编写和调试多种编程语言;    写日记;    作为计算机器;    浏览网站;    玩游戏;    煮咖啡。  2.启动Emacs编辑器    1)强制打开Emacs的文本模式,并放弃加载初始化文       $emacs -nw -q      打开一个文件:

  • 简介 什么是补全, 什么是补全规则; 补全规则怎么选; 补全规则怎么生成候选项; compgen, complete, compopt指令; 案例 项目路径 https://github.com/scop/bash-completion/ 本文描述的内容可能因为bash版本差异, 执行会有细微差异; 什么是补全 shell交互式命令行<tab>键就会触发补全; 补全一般是补全参数; 当然也有补全指

  • Emacsrun a shell interactively with input and output to an Emacs buffernamed '*shell*' or run a shell inside a terminal emulator windows. M-!cmd RET         Run the shell command line cmd and display

  • (setq transient-mark-mode t) (set-w32-system-coding-system 'chinese-iso-8bit) (custom-set-variables   ;; custom-set-variables was added by Custom.   ;; If you edit it by hand, you could mess it up, so

  • 今天早上花了半个小时学了一下Emacs,瞬间我就想抛弃vim了 Emacs命令参考 C-v 查看下一屏文字 M-v 查看上一屏文字 C-l 重绘屏幕,并将光标所在行置于屏幕的中央   光标定位命令 C-p 上一行 C-n 下一行 C-f 下一个字符 C-b 上一个字符 M-f 下一个单词 M-b 上一个单词 C-a 定位到行首 C-e 定位到行尾 M-a 定位到句首 M-e 定位到句尾 M-< 移

  • 作者: 陈斌(redguardtoo) 版本号: 20120821 原创时间: 2012-08-21 二 所谓"自动完成",就是emacs智能猜测用户想输入的是什么词,帮助用户自动输入,如果emacs找到多个可选项,也可能弹出下拉菜单让用户来选择. 通常我们所说的IDE中的Intellisense,也可以认为是某种"自动完成". Emacs的自动完成远比篇普通IDE的Intellisense强大得

  • 原文地址:http://blog.csdn.net/ruglcc/article/details/7821728 M-! cmd RET:打开一个名为“*Shell Command Output*“的窗口,并把该命令的执行结果显示在其中。按下”C-x 1“组合键可以关闭这个窗口。由于Shell命令的输出是在一个编辑缓冲区里,因此我们可以对它进行编辑、保存等操作。 M-| cmd RET:运行She

  • I. shell mode常用快捷键 M-x shell:运行一个子Shell,该子Shell对应于emacs中的一个名为*Shell*的缓冲区,此后我们就可以交互式的运行Shell命令了。 C-c C-c 相当于Bash下的C-c C-c C-z 相当于Bash下的C-z C-c C-d 相当于Bash下的C-d M-p 执行前一条命令 C-n 执行下一条命令 C-c C-o 删除最后一条命令产

  • 1)与文件操作有关的命令   C-x C-f    查找文件并且在新缓冲区中打开   C-x C-v    读入另一个文件替换掉用C-x C-f打开的文件   C-x i    把文件插入到光标的当前位置   C-x C-s    保存文件   C-x C-w    把缓冲区内容写入一个文件   C-x C-c    退出Emacs   2)与光标移动操作有关的命令   C-f     光标前移一

  • 一.启动与退出: 开启.#emacs 退出: C-x C-c: 退出emacs 二. 光标的移动: M-a: 光标移动到当前句子的句首。 M-e: 光标移动到当前句子的句尾。 C-v: 光标移动到下一屏。 M-v:光标移动到上一屏。 三.删除与拷贝: C-k : 删至行尾 (kill)  M-k : 删到一句子结尾(删到句点) (kill)  C-x u: Undo C-y : 将粘贴板中的内容拷

  • 第一步: 下载git-completion.bash https://github.com/git/git/blob/master/contrib/completion/git-completion.bash 第二步: 将git-completion.bash放到某个目录下如:~/.git-completion.bash 第三步: 修改.bashrc 在最后添加一句: source "/Users

  • 如前文所述,http://blog.csdn.net/csfreebird/article/details/9665991 Emacs 24有了自己的package system。 在~/.emacs.d/init.el中添加如下: (require 'package) ;; Add the original Emacs Lisp Package Archive (add-to-list 'pac

  • Emacs 启动: 直接打emacs, 如果有X-windows就会开视窗. 如果不想用X 的版本, 就用 emacs -nw      (No windows)起动. 符号说明 C-X 表示按住CTRL键, 然後按X, 再把CTRL, X一起放开. M-X         META                 META 在没有META键的电脑上, M-X 等於先按 ESC键, 接著按 X键.

  • C-x C-c    退出Emacs C-/    撤销上一个命令 C-_    撤销上一个命令 C-x u    撤销上一个命令 C-g    退出正在运行的命令 C-v    向后翻页 M-v    向前翻页 C-l    光标所在行定位到屏幕中央 C-l C-l    光标所在行定位到屏幕顶端 C-n    光标下移 C-p    光标上移 C-f    光标右移 C-b    光标左移 M

  • 加载执行 load-file filename 加载时候会自动执行 缓冲执行 eval-buffer 自动执行当前buffer 单行执行 eval-last-sexp C-x C-e,执行当前行。 输入执行 eval-expression M-:,手动输入命令进行执行,查看变量时候特别好用。

 相关资料
  • 本文向大家介绍emacs 退出Emacs,包括了emacs 退出Emacs的使用技巧和注意事项,需要的朋友参考一下 示例 您可以使用以下快捷键退出Emacs: C-x C-c 哪里C是control关键。 挂起Emacs 您可以使用以下按键绑定来挂起Emacs: C-z 它使您回到外壳。如果要恢复emacs会话,请fg在终端中输入。

  • Emacs是一种强大的文本编辑器,在程序员和其他以技术工作为主的计算机用户中广受欢迎。EMACS,即Editor MACroS(宏编辑器)的缩写,最初由Richard Stallman于1975年在MIT协同Guy Steele共同完成。这一创意的灵感来源于TECMAC和TMACS,它们是由Guy Steele、Dave Moon、Richard Greenblatt、Charles Franks

  • 本文向大家介绍emacs Prelude,包括了emacs Prelude的使用技巧和注意事项,需要的朋友参考一下 示例 Prelude是另一种流行的入门工具包。它具有对各种开箱即用的编程语言的良好支持,尤其是clojure。在* nix系统上,可以使用以下命令进行安装:            

  • 本文向大家介绍emacs-live,包括了emacs-live的使用技巧和注意事项,需要的朋友参考一下 示例 emacs-live是另一种流行的emacs入门套件,另外还重点关注使用泛音进行的现场音乐编码。 您可以通过两种方式安装它: 在* nix(例如Linux,OSX等)系统上,在命令行上运行以下命令: bash <(curl -fksSL https://raw.github.com/ove

  • Introduction Emacs-libvterm (vterm) is fully-fledged terminal emulator inside GNU Emacsbased on libvterm, a C library. As aresult of using compiled code (instead of elisp), emacs-libvterm is fullycapa

  • emacs-cgi 是一个简单的 Emacs CGI 库,允许使用 Elisp 开发动态页面。 目前支持的特性有: Script-let:使用 <% %> 嵌入 elisp 语句,将标准输出的内容输出到页面; <%= %> 嵌入 elisp 表达式,就函数返回值输出到页面。 将原生的 s-expression 生成 html:比如 (html (head (title "Hello emacs-c