[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Question: Is there any way to use the bash completion feature from E
From: |
Bob Proulx |
Subject: |
Re: Question: Is there any way to use the bash completion feature from Emacs shell mode. |
Date: |
Mon, 10 Oct 2016 18:59:05 -0600 |
User-agent: |
NeoMutt/20160916 (1.7.0) |
Dan Hitt wrote:
> Tab completion certainly works, but it's the emacs completion, not the
> bash completion.
Right. There are really (at least) three types of completion.
1) bash completion using bash only
http://tiswww.case.edu/php/chet/bash/bashtop.html
2) bash-completion using the bash-completion 3rd party addon to bash
http://bash-completion.alioth.debian.org/
3) emacs shell-mode completion
https://www.gnu.org/software/emacs/manual/html_node/emacs/Shell.html
All three of those do completion. The second extends onto the first.
They all have slightly different behavior with pluses and minues to
each of them. Personally I only use 1 and 3 and don't miss not having
2 but I can understand people wanting it inside emacs.
> Unfortunately, i don't have a good example of the difference right
> now, but i'll bet Chiaki does.
bash (1) does this:
complete (TAB)
Attempt to perform completion on the text before point. Bash
attempts completion treating the text as a variable (if the text
begins with $), username (if the text begins with ~), hostname
(if the text begins with @), or command (including aliases and
functions) in turn. If none of these produces a match, filename
completion is attempted.
touch foo bar
ls f<TAB> will complete foo
bash-completion (2) has many additional completions including
completing options for commands that support --help.
ls --so<TAB> will complete to --sort
> I never used term mode since trying it out a few decades ago, because
> i would get stuck in a buffer and not be able to get out --- unless it
> was a graphical emacs and i could use the mouse to choose another
> buffer --- but that would defeat the whole power of parking the mouse
> and controlling everything by the keyboard.
That was specifically why I mentioned that C-x is mapped to C-c! :-)
Because if that isn't known then you are trapped. But knowing that
allows you to switch buffers away or other commands.
> However, Bob said that you substitute Control X with Control C, and
> man that works.
>
> So you can switch buffers using, e.g., Control-C o.
Or kill the buffer with C-c k RET which I usually do when done in
order to clean up and free up memory.
Also as Oleksandr Gavenko wrote the following keys are very useful:
C-c C-j switch to term-line-mode (effectively similar to shell mode)
C-c C-k switch to term-char-mode
When in term mode I switch back and forth between those modes *a lot*
as needed to deal with the immediate task. Some things are easier one
way. Some the other way. Relevant to this discussion with C-c C-k
you get bash completion. With C-c C-j you get emacs completion.
Bob
Re: Question: Is there any way to use the bash completion feature from Emacs shell mode., Bob Proulx, 2016/10/09
Re: Question: Is there any way to use the bash completion feature from Emacs shell mode., Oleksandr Gavenko, 2016/10/10