diff options
Diffstat (limited to 'vim-keybindings.patch')
-rw-r--r-- | vim-keybindings.patch | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/vim-keybindings.patch b/vim-keybindings.patch new file mode 100644 index 000000000000..e8d6bfa5b4ff --- /dev/null +++ b/vim-keybindings.patch @@ -0,0 +1,203 @@ +diff --git a/Action.c b/Action.c +index a6394ac..089ee27 100644 +--- a/Action.c ++++ b/Action.c +@@ -382,7 +382,7 @@ static Htop_Reaction actionRedraw() { + } + + static const struct { const char* key; const char* info; } helpLeft[] = { +- { .key = " Arrows: ", .info = "scroll process list" }, ++ { .key = " hjkl: ", .info = "scroll process list" }, + { .key = " Digits: ", .info = "incremental PID search" }, + { .key = " F3 /: ", .info = "incremental name search" }, + { .key = " F4 \\: ",.info = "incremental name filtering" }, +@@ -403,7 +403,7 @@ static const struct { const char* key; const char* info; } helpRight[] = { + { .key = " Space: ", .info = "tag process" }, + { .key = " c: ", .info = "tag process and its children" }, + { .key = " U: ", .info = "untag all processes" }, +- { .key = " F9 k: ", .info = "kill process/tagged processes" }, ++ { .key = " F9 x: ", .info = "kill process/tagged processes" }, + { .key = " F7 ]: ", .info = "higher priority (root only)" }, + { .key = " F8 [: ", .info = "lower priority (+ nice)" }, + #if (HAVE_LIBHWLOC || HAVE_LINUX_AFFINITY) +@@ -411,7 +411,7 @@ static const struct { const char* key; const char* info; } helpRight[] = { + #endif + { .key = " e: ", .info = "show process environment" }, + { .key = " i: ", .info = "set IO priority" }, +- { .key = " l: ", .info = "list open files with lsof" }, ++ { .key = " L: ", .info = "list open files with lsof" }, + { .key = " s: ", .info = "trace syscalls with strace" }, + { .key = " ", .info = "" }, + { .key = " F2 C S: ", .info = "setup" }, +@@ -543,6 +543,7 @@ void Action_setBindings(Htop_Action* keys) { + keys['I'] = actionInvertSortOrder; + keys[KEY_F(6)] = actionExpandCollapseOrSortColumn; + keys[KEY_F(18)] = actionExpandCollapseOrSortColumn; ++ keys['o'] = actionExpandCollapseOrSortColumn; + keys['<'] = actionSetSortColumn; + keys[','] = actionSetSortColumn; + keys['>'] = actionSetSortColumn; +@@ -551,7 +552,7 @@ void Action_setBindings(Htop_Action* keys) { + keys['q'] = actionQuit; + keys['a'] = actionSetAffinity; + keys[KEY_F(9)] = actionKill; +- keys['k'] = actionKill; ++ keys['x'] = actionKill; + keys[KEY_RECLICK] = actionExpandOrCollapse; + keys['+'] = actionExpandOrCollapse; + keys['='] = actionExpandOrCollapse; +@@ -561,12 +562,11 @@ void Action_setBindings(Htop_Action* keys) { + keys['S'] = actionSetup; + keys['C'] = actionSetup; + keys[KEY_F(2)] = actionSetup; +- keys['l'] = actionLsof; ++ keys['L'] = actionLsof; + keys['s'] = actionStrace; + keys[' '] = actionTag; + keys['\014'] = actionRedraw; // Ctrl+L + keys[KEY_F(1)] = actionHelp; +- keys['h'] = actionHelp; + keys['?'] = actionHelp; + keys['U'] = actionUntagAll; + keys['c'] = actionTagAllChildren; +diff --git a/Panel.c b/Panel.c +index 1e53b4a..7f6580b 100644 +--- a/Panel.c ++++ b/Panel.c +@@ -372,14 +372,16 @@ void Panel_draw(Panel* this, bool focus) { + + bool Panel_onKey(Panel* this, int key) { + assert (this != NULL); +- ++ + int size = Vector_size(this->items); + switch (key) { + case KEY_DOWN: ++ case 'j': + case KEY_CTRL('N'): + this->selected++; + break; + case KEY_UP: ++ case 'k': + case KEY_CTRL('P'): + this->selected--; + break; +@@ -394,23 +396,33 @@ bool Panel_onKey(Panel* this, int key) { + break; + #endif + case KEY_LEFT: +- case KEY_CTRL('B'): ++ case 'h': + if (this->scrollH > 0) { + this->scrollH -= MAX(CRT_scrollHAmount, 0); + this->needsRedraw = true; + } + break; + case KEY_RIGHT: +- case KEY_CTRL('F'): ++ case 'l': + this->scrollH += CRT_scrollHAmount; + this->needsRedraw = true; + break; ++ case KEY_CTRL('U'): ++ this->selected -= (this->h - 1) / 2; ++ this->needsRedraw = true; ++ break; ++ case KEY_CTRL('D'): ++ this->selected += (this->h - 1) / 2; ++ this->needsRedraw = true; ++ break; + case KEY_PPAGE: ++ case KEY_CTRL('B'): + this->selected -= (this->h - 1); + this->scrollV = MAX(0, this->scrollV - this->h + 1); + this->needsRedraw = true; + break; + case KEY_NPAGE: ++ case KEY_CTRL('F'): + this->selected += (this->h - 1); + this->scrollV = MAX(0, MIN(Vector_size(this->items) - this->h, + this->scrollV + this->h - 1)); +@@ -432,9 +444,11 @@ bool Panel_onKey(Panel* this, int key) { + break; + } + case KEY_HOME: ++ case 'g': + this->selected = 0; + break; + case KEY_END: ++ case 'G': + this->selected = size - 1; + break; + case KEY_CTRL('A'): +diff --git a/README b/README +index 33a8739..d0b00ae 100644 +--- a/README ++++ b/README +@@ -17,6 +17,44 @@ but we also have code for running under FreeBSD and Mac OS X + This software has evolved considerably over the years, + and is reasonably complete, but there is always room for improvement. + ++Vim keybindings ++---------------- ++ ++These are the keybindings added in this fork of htop: ++ ++``` ++ g to the top (gg in vim) ++ ++ <C-b> up 1 page ++ ++ <C-u> up 1/2 page ++ ++ k ++ ++h l one character ++ ++ j ++ ++ <C-d> down 1/2 page ++ ++ <C-f> down 1 page ++ ++ G to the end ++ ++-------------------------------------------------- ++ ++ o Expand/collapse (like in NERDTree) ++``` ++ ++In order to accomodate these keybindings, the following changes ++were made to the original keybindings: ++ ++* Ctrl+F and Ctrt+B can no longer be used to navigate horizontally ++* 'h' can no longer be used to access the help, leaving Ctrl+F1 & '?' ++* 'k' can no longer be used to kill processes, being replaced with 'x' ++* 'l' can no longer be used to list open files, being replaced with 'L' ++ ++ + Comparison between `htop` and classic `top` + ------------------------------------------- + +diff --git a/ScreenManager.c b/ScreenManager.c +index 05e1c02..df2ac4a 100644 +--- a/ScreenManager.c ++++ b/ScreenManager.c +@@ -279,7 +279,7 @@ void ScreenManager_run(ScreenManager* this, Panel** lastFocus, int* lastKey) { + continue; + } + case KEY_LEFT: +- case KEY_CTRL('B'): ++ case 'h': + if (this->panelCount < 2) { + goto defaultHandler; + } +@@ -293,7 +293,7 @@ void ScreenManager_run(ScreenManager* this, Panel** lastFocus, int* lastKey) { + goto tryLeft; + break; + case KEY_RIGHT: +- case KEY_CTRL('F'): ++ case 'l': + case 9: + if (this->panelCount < 2) { + goto defaultHandler; |