Midnight Commander: Difference between revisions

From miki
Jump to navigation Jump to search
 
(19 intermediate revisions by the same user not shown)
Line 5: Line 5:
* [http://www.nongnu.org/gcmd/ The GNOME Commander], a X alternative of <tt>mc</tt> under Gnome
* [http://www.nongnu.org/gcmd/ The GNOME Commander], a X alternative of <tt>mc</tt> under Gnome
* [http://www.krusader.org/index.php Krusader], a X alternative of <tt>mc</tt> under KDE
* [http://www.krusader.org/index.php Krusader], a X alternative of <tt>mc</tt> under KDE

;Color schemes
* [https://github.com/peel/mc Midnight Commander Solarized]


== VirtualFS ==
== VirtualFS ==
* Shell filesystem: {{blue|<tt>/#sh:[user@]machine[:options]/[remote_dir]</tt>}}
* Shell filesystem: {{blue|<tt>/#sh:[user@]machine[:options]/[remote_dir]</tt>}}


== ini file ==
== Configuration ==
* '''mc''' will only save the option ini file if there is a directory <tt>~/.mc</tt> in home directory:
{{pl2|<source lang="bash" enclose="prevalid">
mkdir ~/.mc
</source>}}
* To use '''vi''' as standard editor/viewer
* To use '''vi''' as standard editor/viewer
: First menu '''Options''' &rarr; '''Configuration...''' &rarr; '''uncheck''' ''use internal edIt'' and ''Use internal view''.
: First menu '''Options''' &rarr; '''Configuration...''' &rarr; '''uncheck''' ''use internal edIt'' and ''Use internal view''.
: Next, at the end of file <tt>.mc/bindings</tt>:
: Next, at the end of file <tt>.mc/bindings</tt>:
{{pl2|<source lang="text">
<source lang="text">
default/*
default/*
Open=
Open=
View=view %f
View=view %f
Edit=%var{EDITOR:vi} %f
Edit=%var{EDITOR:vi} %f
</source>}}
</source>
* Edit <tt>/etc/mc/mc.keymap*</tt> to use {{kb|C-n}} for '''Auto-Complete''' (instead of {{kb|Alt-Tab}} that does not work in graphical environment) (see [[#Keyboard shortcuts|below]])
* Check '''complete: show all''' (so that selection box is shown on first ambiguity)
* To have common history between ''mc'' sub-shell and parent shell: [http://superuser.com/questions/845667/midnight-commander-subshell-sharing-a-history-file-with-the-shell-mc-was-start]:
<source lang=bash>
alias mc='PROMPT_COMMAND="history -a; history -r" mc; history -r'
</source>
* Add the following to {{file|~/.bash_profile}} and {{file|~/.profile}} to Meta-key ({{kb|Alt}}) not working and ''Midnight Commander'' displays <code>Press any key...</code> after each command when in ''tmux'' session [https://www.midnight-commander.org/ticket/2479]:
<source lang=bash>
# This fix meta-key support and stop mc displaying "Press any key..." in tmux session
if [ $TERM = "screen" ]; then
export TERM=xterm
fi
if [ -n "$TMUX" ]; then
export COLORTERM=rxvt
fi
</source>
:'''Note''': A better fix might be to do <code>mc -x</code> instead to force xterm mode. See [https://www.midnight-commander.org/ticket/2479 ticket 2479] and [https://www.midnight-commander.org/ticket/2978 ticket 2978] for more information.


== Keyboard shorcuts ==
* '''Gnome-Terminal''' &mdash; To solve the conflicts with '''Gnome Terminal''', disable the ''Terminal menu shortcut key'' (to enable <tt>F10</tt>) and ''Menu Access Keys'' (to enable <tt>A-h</tt>...) in ''Gnome-Terminal''.
* '''Auto-Complete''' &mdash; The usual shortcut for auto-complete {{kb|M-Tab}} (i.e. {{kb|Alt-Tab}}) doesn't work in graphical environment because it is used for switching between windows. As a replacement, one can use {{kb|Esc-Tab}}, or can define a new shortcut like {{kb|C-n}} (as in ''Vim'').<br/>Old version &mdash; This can be done with <tt>Options... &rarr; Learn Keys...</tt><br/>Newer version &mdash; The learn keys trick does not seem to work anymore. Remove the learn key line from <tt>~/.mc/ini</tt> and instead edit all files <tt>/etc/mc/mc.keymap*</tt> as follows:
{{pl2|<pre>PanelMoveDown = down
...
InputComplete = alt-tab; ctrl-n
...
TreeMoveDown = down
</pre>}}
* '''Lynx motion''' &mdash; This is a nice option to enable in the configuration menu. When enabled, enter a directory with {{kb|right}} and exit a directory with {{kb|left}}.



* Frequently used keyboard shortcuts (custom shortcuts defined with ''Learn Keys...'' are <u>underlined</u>)
Obsolete configuration (for old version):
* '''mc''' will only save the option ini file if there is a directory <tt>~/.mc</tt> in home directory:
<source lang="bash" enclose="prevalid">
mkdir ~/.mc
</source>

== Keyboard shortcuts ==
Frequently used keyboard shortcuts (custom shortcuts defined with ''Learn Keys...'' are <u>underlined</u>):
<table>
<table>
<tr valign="top">
<tr valign="top">
Line 42: Line 56:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
|-
|-
|width="130px"|
|width="150px"|
<u>{{kb|C-k}}</u><br/>
<u>{{kb|C-k}}</u><br/>
<u>{{kb|C-l}}</u><br/>
<u>{{kb|C-l}}</u><br/>
Line 66: Line 80:
Reverse selection<br/>
Reverse selection<br/>
Find file<br/>
Find file<br/>
Quick view<br/>
'''Quick view / Quit quick view'''<br/>
Change file and directory rights - chmod<br/>
Change file and directory rights - chmod<br/>
Change file and directory owner - chown<br/>
Change file and directory owner - chown<br/>
Line 75: Line 89:
{| class="wikitable" width="100%"
{| class="wikitable" width="100%"
|-
|-
|width="130px"|
|width="150px"|
{{kb|A-Enter}}<br/>
{{kb|A-Enter}}<br/>
{{kb|C-S-Enter}}<br/>
{{kb|C-S-Enter}}<br/>
Line 88: Line 102:
|
|
Paste current selection<br/>
Paste current selection<br/>
Paste fullpath current selection<br/>
'''Paste fullpath current selection'''<br/>
Auto-complete<br/>
'''Auto-complete'''<br/>
Paste tagged files<br/>
'''Paste tagged files'''<br/>
Paste tagged files (other panel)<br/>
'''Paste tagged files (other panel)'''<br/>
Paste current path<br/>
'''Paste current path'''<br/>
Paste current path (other panel)<br/>
'''Paste current path (other panel)'''<br/>
Previous command in history<br/>
Previous command in history<br/>
Next command in history<br/>
Next command in history<br/>
Line 104: Line 118:
{| class="wikitable"
{| class="wikitable"
|-
|-
|width="130px"|
|width="150px"|
{{kb|Tab}}<br/>
{{kb|Tab}}<br/>
{{kb|Ins}} ''or'' {{kb|C-t}}<br/>
{{kb|Ins}} ''or'' {{kb|C-t}}<br/>
Line 154: Line 168:
</tr>
</tr>
</table>
</table>

Some work-arounds / advices:
* '''Gnome-Terminal conflict''' &mdash; ''Gnome Terminal'' shortcuts conflict with ''MC''. Disable them in ''Keyboard shortcuts'' menu (''Terminal menu shortcut key'' (<tt>F10</tt>) and ''Menu Access Keys'' (<tt>A-h</tt>).
* '''Auto-Complete does not work''' &mdash; The auto-complete shortcut {{kb|M-Tab}} (i.e. {{kb|Alt-Tab}}) doesn't work in graphical environment because it is used for switching between windows. As a replacement, one can use {{kb|Esc-Tab}}, or can define a new shortcut like {{kb|C-n}} (as in ''Vim'').<br/>Old version &mdash; This can be done with <tt>Options... &rarr; Learn Keys...</tt><br/>Newer version &mdash; The learn keys trick does not work anymore. Remove the learn key line from <tt>~/.mc/ini</tt> and instead edit all files <tt>/etc/mc/mc.keymap*</tt> as follows:
:For ''mc version 4.7'':
<pre>PanelMoveDown = down
...
InputComplete = alt-tab; ctrl-n
...
TreeMoveDown = down
</pre>
:For ''mc version 4.8'' and above:
<pre>[panel]
...
MoveDown = down
...
[input]
...
Complete = alt-tab; ctrl-n
...
</pre>
or via command-line:
<source lang=bash>
sudo sed -ri 's/; ctrl-n//' /etc/mc/mc*.keymap
sudo sed -ri 's/Complete.*/Complete = alt-tab; ctrl-n' /etc/mc/mc*.keymap
</source>
* '''Lynx motion''' &mdash; This is a nice option to enable in the configuration menu. When enabled, enter a directory with {{kb|right}} and exit a directory with {{kb|left}}.


== Official repository ==
== Official repository ==
Line 168: Line 209:
sudo apt-get upgrade
sudo apt-get upgrade
</source>
</source>


== Troubleshoot ==

=== MC shows "press any key to continue..." when TERM=gnome-256color ===
Setting TERM is necessary to fix issues in Neovim.

* Workaround: start mc with <code>mc -x</code> to force xterm mode:
<source lang="bash">
# MC - Force xterm mode if TERM=gnome-256color
[ "$TERM" = "gnome-256color" ] && alias mc='mc -x'
</source>
* '''Update''': we don't change TERM anymore, so this fix is no longer necessary.

=== Ctrl-Shift-Enter not working in Wayland ===
This happens in latest Debian (Buster), and is due to Wayland security model [https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=899376].

As a fix, we can use {{kb|Alt-M}} instead [https://unix.stackexchange.com/questions/414413/ctrl-enter-for-midnight-commander-not-working-in-x-terminals-in-fedora-working/505969#505969]:

<source lang="bash">
sudo sed -ri '/PutCurrentFullSelected/s/=( alt-m;)?/= alt-m;/' /etc/mc/mc.default.keymap
sudo sed -ri '/Mail = alt-m/s/= alt-m/=/;' /etc/mc/mc.default.keymap
</source>

=== Ctrl-Shift-E not working ===
In recent Gnome, {{kb|Ctrl-Shift-E}} is now assigned to emoji input.

To remove [https://bugs.launchpad.net/ubuntu/+source/terminator/+bug/1738500]:
* Start <code>ibus-setup</code>
* Go to Emoji, click ... for emoji, then delete.

Latest revision as of 16:45, 10 October 2020

mc or Midnight Commander is a powerful file manager working in a shell terminal.

Links

Color schemes

VirtualFS

  • Shell filesystem: /#sh:[user@]machine[:options]/[remote_dir]

Configuration

  • To use vi as standard editor/viewer
First menu OptionsConfiguration...uncheck use internal edIt and Use internal view.
Next, at the end of file .mc/bindings:
default/*
    Open=
    View=view %f
    Edit=%var{EDITOR:vi} %f
  • Edit /etc/mc/mc.keymap* to use C-n for Auto-Complete (instead of Alt-Tab that does not work in graphical environment) (see below)
  • Check complete: show all (so that selection box is shown on first ambiguity)
  • To have common history between mc sub-shell and parent shell: [1]:
alias mc='PROMPT_COMMAND="history -a; history -r" mc; history -r'
  • Add the following to ~/.bash_profile and ~/.profile to Meta-key (Alt) not working and Midnight Commander displays Press any key... after each command when in tmux session [2]:
# This fix meta-key support and stop mc displaying "Press any key..." in tmux session
if [ $TERM = "screen" ]; then
    export TERM=xterm
fi
if [ -n "$TMUX" ]; then
    export COLORTERM=rxvt
fi
Note: A better fix might be to do mc -x instead to force xterm mode. See ticket 2479 and ticket 2978 for more information.


Obsolete configuration (for old version):

  • mc will only save the option ini file if there is a directory ~/.mc in home directory:
mkdir ~/.mc

Keyboard shortcuts

Frequently used keyboard shortcuts (custom shortcuts defined with Learn Keys... are underlined):

General:

C-k
C-l
F10
C-o
C-xd
C-r
C-o
M-*
A-?
C-xq
C-xc
C-xo
C-xs

Down
Up
Exit Midnight Commander
open sub-shell (at current directory)
Compare directories
Rescan (refresh panel contents)
Hide panels
Reverse selection
Find file
Quick view / Quit quick view
Change file and directory rights - chmod
Change file and directory owner - chown
Make symlink

Shell Command Line

A-Enter
C-S-Enter
M-Tab or C-n
C-x t
C-x C-t
C-x p
C-x C-p
A-p
A-n
A-h

Paste current selection
Paste fullpath current selection
Auto-complete
Paste tagged files
Paste tagged files (other panel)
Paste current path
Paste current path (other panel)
Previous command in history
Next command in history
Command history

Directory panels

Tab
Ins or C-t
A-g
A-r
A-j
C-s A-s
A-t
C-\
C-x h
+
\
A-o
A-i
A-y
A-u
A-S-h
PgDn or C-v
PgUp or A-v
Home or A-<
End or A->
C-PgUp
C-PgDn

Panel switch
Tag/untag
Select top file
Select middle file
Select bottom file
Filename search
Toggle current display listing
Show directory hotlist
Quick add to directory hostlist
Group select
Group unselect
Load directory/parent directory in other panel
Duplicate current panel
Previous directory in history
Next directory in history
View history
PgDn
PgUp
Home
End
Cd ..
Cd current selection

Some work-arounds / advices:

  • Gnome-Terminal conflictGnome Terminal shortcuts conflict with MC. Disable them in Keyboard shortcuts menu (Terminal menu shortcut key (F10) and Menu Access Keys (A-h).
  • Auto-Complete does not work — The auto-complete shortcut M-Tab (i.e. Alt-Tab) doesn't work in graphical environment because it is used for switching between windows. As a replacement, one can use Esc-Tab, or can define a new shortcut like C-n (as in Vim).
    Old version — This can be done with Options... → Learn Keys...
    Newer version — The learn keys trick does not work anymore. Remove the learn key line from ~/.mc/ini and instead edit all files /etc/mc/mc.keymap* as follows:
For mc version 4.7:
PanelMoveDown = down
...
InputComplete = alt-tab; ctrl-n
...
TreeMoveDown = down
For mc version 4.8 and above:
[panel]
...
MoveDown = down
...
[input]
...
Complete = alt-tab; ctrl-n
...

or via command-line:

sudo sed -ri 's/; ctrl-n//' /etc/mc/mc*.keymap
sudo sed -ri 's/Complete.*/Complete = alt-tab; ctrl-n' /etc/mc/mc*.keymap
  • Lynx motion — This is a nice option to enable in the configuration menu. When enabled, enter a directory with right and exit a directory with left.

Official repository

Besides Ubuntu repository, the official one is here. To add it:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F82FBD49

Add file /etc/apt/sources.list.d:

deb http://ppa.launchpad.net/zyv/ppa/ubuntu lucid main
deb-src http://ppa.launchpad.net/zyv/ppa/ubuntu lucid main

Then upgrade if needed:

sudo apt-get update
sudo apt-get upgrade


Troubleshoot

MC shows "press any key to continue..." when TERM=gnome-256color

Setting TERM is necessary to fix issues in Neovim.

  • Workaround: start mc with mc -x to force xterm mode:
# MC - Force xterm mode if TERM=gnome-256color
[ "$TERM" = "gnome-256color" ] && alias mc='mc -x'
  • Update: we don't change TERM anymore, so this fix is no longer necessary.

Ctrl-Shift-Enter not working in Wayland

This happens in latest Debian (Buster), and is due to Wayland security model [3].

As a fix, we can use Alt-M instead [4]:

sudo sed -ri '/PutCurrentFullSelected/s/=( alt-m;)?/= alt-m;/' /etc/mc/mc.default.keymap
sudo sed -ri '/Mail = alt-m/s/= alt-m/=/;' /etc/mc/mc.default.keymap

Ctrl-Shift-E not working

In recent Gnome, Ctrl-Shift-E is now assigned to emoji input.

To remove [5]:

  • Start ibus-setup
  • Go to Emoji, click ... for emoji, then delete.