diff --git a/src/nnn.c b/src/nnn.c index acc65128..e6305c13 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -531,7 +531,7 @@ static const char * const messages[] = { "\nPress Enter to continue", "open failed", "dir inaccessible", - "empty: use open with", + "empty: edit or open with", "unsupported file", "not set", "entry exists", @@ -3976,11 +3976,12 @@ static void show_help(const char *path) "9o ^O Open with...%-12cn Create new/link\n" "9f ^F File details%-12cd Detail view toggle\n" "b^R Rename/dup%-14cr Batch rename\n" - "cz Archive%-17c* Toggle exe\n" + "cz Archive%-17ce Edit in EDITOR\n" "5Space ^J (Un)select%-11cm ^K Mark range/clear\n" "9p ^P Copy sel here%-11ca Select all\n" "9v ^V Move sel here%-8cw ^W Copy/move sel as\n" - "9x ^X Delete%-18ce Edit sel\n" + "9x ^X Delete%-18cE Edit sel\n" + "c* Toggle exe%-0c\n" "1MISC\n" "9; ^S Select plugin%-11c= Launch app\n" "9! ^] Shell%-19c] Cmd prompt\n" @@ -5461,6 +5462,7 @@ nochange: case SEL_REDRAW: // fallthrough case SEL_RENAMEMUL: // fallthrough case SEL_HELP: // fallthrough + case SEL_EDIT: // fallthrough case SEL_LOCK: { bool refresh = FALSE; @@ -5486,6 +5488,9 @@ nochange: if (cfg.filtermode) presel = FILTER; continue; + case SEL_EDIT: + spawn(editor, dents[cur].name, NULL, path, F_CLI); + continue; default: /* SEL_LOCK */ lock_terminal(); break; diff --git a/src/nnn.h b/src/nnn.h index efa6ae68..168b43ba 100644 --- a/src/nnn.h +++ b/src/nnn.h @@ -84,6 +84,7 @@ enum action { SEL_REMOTE, SEL_UMOUNT, SEL_HELP, + SEL_EDIT, SEL_PLUGIN, SEL_SHELL, SEL_LAUNCH, @@ -190,7 +191,7 @@ static struct key bindings[] = { /* Select all files in current dir */ { 'a', SEL_SELALL }, /* List, edit selection */ - { 'e', SEL_SELEDIT }, + { 'E', SEL_SELEDIT }, /* Copy from selection buffer */ { 'p', SEL_CP }, { CONTROL('P'), SEL_CP }, @@ -218,6 +219,8 @@ static struct key bindings[] = { { 'u', SEL_UMOUNT }, /* Show help */ { '?', SEL_HELP }, + /* Edit in EDITOR */ + { 'e', SEL_EDIT }, /* Run a plugin */ { ';', SEL_PLUGIN }, { CONTROL('S'), SEL_PLUGIN },