Package Details: htop-vim-git 1:3.3.0.20.g32cb3027-1

Git Clone URL: https://aur.archlinux.org/htop-vim-git.git (read-only, click to copy)
Package Base: htop-vim-git
Description: Interactive text-mode process viewer. Patched for vim keybindings
Upstream URL: https://github.com/htop-dev/htop
Licenses: GPL
Conflicts: htop, htop-git
Provides: htop
Submitter: KoffeinFlummi
Maintainer: KoffeinFlummi
Last Packager: KoffeinFlummi
Votes: 24
Popularity: 0.003427
First Submitted: 2015-08-06 05:38 (UTC)
Last Updated: 2024-01-29 09:26 (UTC)

Dependencies (6)

Required by (4)

Sources (2)

Latest Comments

« First ‹ Previous 1 2 3 4 5 6 Next › Last »

zanculmarktum commented on 2016-11-14 01:54 (UTC) (edited on 2016-11-14 01:55 (UTC) by zanculmarktum)

@eyolf: here's the fix. Replace the contents of vim-keybindings.patch file with these: === BEGIN === diff --git a/Action.c b/Action.c index ee34a4b..b0c8013 100644 --- a/Action.c +++ b/Action.c @@ -382,7 +382,7 @@ static Htop_Reaction actionRedraw() { } static 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 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,11 +411,11 @@ static 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 S: ", .info = "setup" }, - { .key = " F1 h: ", .info = "show this help screen" }, + { .key = " F1 ?: ", .info = "show this help screen" }, { .key = " F10 q: ", .info = "quit" }, { .key = NULL, .info = NULL } }; @@ -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 8c4d44f..ea59346 100644 --- a/Panel.c +++ b/Panel.c @@ -376,10 +376,12 @@ bool Panel_onKey(Panel* this, int key) { 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..e07bd58 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 now 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; === END === and replace PKGBUILD with these: from: sha256sums=('SKIP' '76073636b87f43cece2072a7c9944768535c147f1b36843345ebba91073adfec') to: sha256sums=('SKIP' 'SKIP')

eyolf commented on 2016-11-03 18:05 (UTC)

Bump: ==> Starting prepare()... -> Applying /home/eyolf/.cache/pacaur/htop-vim-git/src/vim-keybindings.patch patching file Action.c patching file Panel.c Hunk #2 FAILED at 396. Hunk #3 succeeded at 434 (offset 1 line). 1 out of 3 hunks FAILED -- saving rejects to file Panel.c.rej patching file README patching file ScreenManager.c ==> ERROR: A failure occurred in prepare(). Aborting...

mkoskar commented on 2016-09-15 20:07 (UTC)

Patch doesn't apply: Hunk #2 FAILED at 396. 1 out of 3 hunks FAILED -- saving rejects to file Panel.c.rej

KoffeinFlummi commented on 2016-06-23 23:24 (UTC)

Fixed.

<deleted-account> commented on 2016-06-23 15:47 (UTC)

Building fails: ==> Starting prepare()... -> Applying /home/autrimpo/.cache/pacaur/htop-vim-git/src/vim-keybindings.patch patching file Action.c patching file MainPanel.c Hunk #1 FAILED at 104. 1 out of 1 hunk FAILED -- saving rejects to file MainPanel.c.rej patching file Panel.c Hunk #1 FAILED at 86. Hunk #2 FAILED at 372. Hunk #3 FAILED at 394. Hunk #4 succeeded at 431 with fuzz 1. 3 out of 4 hunks FAILED -- saving rejects to file Panel.c.rej patching file Panel.h Hunk #1 FAILED at 74. 1 out of 1 hunk FAILED -- saving rejects to file Panel.h.rej patching file README patching file ScreenManager.c Hunk #1 FAILED at 279. Hunk #2 FAILED at 290. 2 out of 2 hunks FAILED -- saving rejects to file ScreenManager.c.rej ==> ERROR: A failure occurred in prepare(). Aborting... :: failed to build htop-vim-git package(s)

KoffeinFlummi commented on 2016-03-11 19:11 (UTC)

Fixed, thanks.

tmplt commented on 2016-03-11 15:16 (UTC)

Broken again: ==> Starting prepare()... -> Applying /tmp/makepkg/htop-vim-git/src/vim-keybindings.patch patching file Action.c Hunk #2 succeeded at 403 with fuzz 1 (offset 1 line). Hunk #3 FAILED at 410. Hunk #4 succeeded at 543 (offset 1 line). Hunk #5 succeeded at 552 (offset 1 line). Hunk #6 succeeded at 562 (offset 1 line). 1 out of 6 hunks FAILED -- saving rejects to file Action.c.rej patching file MainPanel.c patching file Panel.c patching file Panel.h patching file README patching file ScreenManager.c Hunk #1 succeeded at 279 (offset -16 lines). Hunk #2 succeeded at 290 (offset -16 lines). ==> ERROR: A failure occurred in prepare(). Aborting... :: failed to build htop-vim-git package(s)

KoffeinFlummi commented on 2016-02-13 16:12 (UTC)

Fixed.

mkoskar commented on 2016-02-13 08:27 (UTC)

Hunk #1 FAILED at 16. 1 out of 1 hunk FAILED -- saving rejects to file README.rej

KoffeinFlummi commented on 2016-02-11 08:43 (UTC)

Thanks; Should be fixed.