mirror of
https://github.com/tmux/tmux.git
synced 2025-01-15 05:09:04 +00:00
Add mode keys to move the cursor to the top, middle and bottom of the screen.
H/M/L in vi mode and M-R/M-r in emacs (bottom of screen not bound in emacs).
This commit is contained in:
parent
0907ca1931
commit
38df960e68
@ -77,6 +77,7 @@ struct mode_key_cmdstr mode_key_cmdstr_choice[] = {
|
|||||||
/* Copy keys command strings. */
|
/* Copy keys command strings. */
|
||||||
struct mode_key_cmdstr mode_key_cmdstr_copy[] = {
|
struct mode_key_cmdstr mode_key_cmdstr_copy[] = {
|
||||||
{ MODEKEYCOPY_BACKTOINDENTATION, "back-to-indentation" },
|
{ MODEKEYCOPY_BACKTOINDENTATION, "back-to-indentation" },
|
||||||
|
{ MODEKEYCOPY_BOTTOMLINE, "bottom-line" },
|
||||||
{ MODEKEYCOPY_CANCEL, "cancel" },
|
{ MODEKEYCOPY_CANCEL, "cancel" },
|
||||||
{ MODEKEYCOPY_CLEARSELECTION, "clear-selection" },
|
{ MODEKEYCOPY_CLEARSELECTION, "clear-selection" },
|
||||||
{ MODEKEYCOPY_COPYSELECTION, "copy-selection" },
|
{ MODEKEYCOPY_COPYSELECTION, "copy-selection" },
|
||||||
@ -84,6 +85,7 @@ struct mode_key_cmdstr mode_key_cmdstr_copy[] = {
|
|||||||
{ MODEKEYCOPY_ENDOFLINE, "end-of-line" },
|
{ MODEKEYCOPY_ENDOFLINE, "end-of-line" },
|
||||||
{ MODEKEYCOPY_GOTOLINE, "goto-line" },
|
{ MODEKEYCOPY_GOTOLINE, "goto-line" },
|
||||||
{ MODEKEYCOPY_LEFT, "cursor-left" },
|
{ MODEKEYCOPY_LEFT, "cursor-left" },
|
||||||
|
{ MODEKEYCOPY_MIDDLELINE, "middle-line" },
|
||||||
{ MODEKEYCOPY_NEXTPAGE, "page-down" },
|
{ MODEKEYCOPY_NEXTPAGE, "page-down" },
|
||||||
{ MODEKEYCOPY_NEXTWORD, "next-word" },
|
{ MODEKEYCOPY_NEXTWORD, "next-word" },
|
||||||
{ MODEKEYCOPY_PREVIOUSPAGE, "page-up" },
|
{ MODEKEYCOPY_PREVIOUSPAGE, "page-up" },
|
||||||
@ -96,6 +98,7 @@ struct mode_key_cmdstr mode_key_cmdstr_copy[] = {
|
|||||||
{ MODEKEYCOPY_SEARCHUP, "search-backward" },
|
{ MODEKEYCOPY_SEARCHUP, "search-backward" },
|
||||||
{ MODEKEYCOPY_STARTOFLINE, "start-of-line" },
|
{ MODEKEYCOPY_STARTOFLINE, "start-of-line" },
|
||||||
{ MODEKEYCOPY_STARTSELECTION, "begin-selection" },
|
{ MODEKEYCOPY_STARTSELECTION, "begin-selection" },
|
||||||
|
{ MODEKEYCOPY_TOPLINE, "top-line" },
|
||||||
{ MODEKEYCOPY_UP, "cursor-up" },
|
{ MODEKEYCOPY_UP, "cursor-up" },
|
||||||
|
|
||||||
{ 0, NULL }
|
{ 0, NULL }
|
||||||
@ -161,8 +164,11 @@ const struct mode_key_entry mode_key_vi_copy[] = {
|
|||||||
{ '0', 0, MODEKEYCOPY_STARTOFLINE },
|
{ '0', 0, MODEKEYCOPY_STARTOFLINE },
|
||||||
{ ':', 0, MODEKEYCOPY_GOTOLINE },
|
{ ':', 0, MODEKEYCOPY_GOTOLINE },
|
||||||
{ '?', 0, MODEKEYCOPY_SEARCHUP },
|
{ '?', 0, MODEKEYCOPY_SEARCHUP },
|
||||||
|
{ 'H', 0, MODEKEYCOPY_TOPLINE },
|
||||||
{ 'J', 0, MODEKEYCOPY_SCROLLDOWN },
|
{ 'J', 0, MODEKEYCOPY_SCROLLDOWN },
|
||||||
{ 'K', 0, MODEKEYCOPY_SCROLLUP },
|
{ 'K', 0, MODEKEYCOPY_SCROLLUP },
|
||||||
|
{ 'L', 0, MODEKEYCOPY_BOTTOMLINE },
|
||||||
|
{ 'M', 0, MODEKEYCOPY_MIDDLELINE },
|
||||||
{ '\002' /* C-b */, 0, MODEKEYCOPY_PREVIOUSPAGE },
|
{ '\002' /* C-b */, 0, MODEKEYCOPY_PREVIOUSPAGE },
|
||||||
{ '\003' /* C-c */, 0, MODEKEYCOPY_CANCEL },
|
{ '\003' /* C-c */, 0, MODEKEYCOPY_CANCEL },
|
||||||
{ '\004' /* C-d */, 0, MODEKEYCOPY_HALFPAGEDOWN },
|
{ '\004' /* C-d */, 0, MODEKEYCOPY_HALFPAGEDOWN },
|
||||||
@ -266,6 +272,8 @@ const struct mode_key_entry mode_key_emacs_copy[] = {
|
|||||||
{ 'm' | KEYC_ESCAPE, 0, MODEKEYCOPY_BACKTOINDENTATION },
|
{ 'm' | KEYC_ESCAPE, 0, MODEKEYCOPY_BACKTOINDENTATION },
|
||||||
{ 'n', 0, MODEKEYCOPY_SEARCHAGAIN },
|
{ 'n', 0, MODEKEYCOPY_SEARCHAGAIN },
|
||||||
{ 'q', 0, MODEKEYCOPY_CANCEL },
|
{ 'q', 0, MODEKEYCOPY_CANCEL },
|
||||||
|
{ 'r' | KEYC_ESCAPE, 0, MODEKEYCOPY_MIDDLELINE },
|
||||||
|
{ 'R' | KEYC_ESCAPE, 0, MODEKEYCOPY_TOPLINE },
|
||||||
{ 'v' | KEYC_ESCAPE, 0, MODEKEYCOPY_PREVIOUSPAGE },
|
{ 'v' | KEYC_ESCAPE, 0, MODEKEYCOPY_PREVIOUSPAGE },
|
||||||
{ 'w' | KEYC_ESCAPE, 0, MODEKEYCOPY_COPYSELECTION },
|
{ 'w' | KEYC_ESCAPE, 0, MODEKEYCOPY_COPYSELECTION },
|
||||||
{ KEYC_DOWN | KEYC_CTRL,0, MODEKEYCOPY_SCROLLDOWN },
|
{ KEYC_DOWN | KEYC_CTRL,0, MODEKEYCOPY_SCROLLDOWN },
|
||||||
|
3
tmux.1
3
tmux.1
@ -538,6 +538,9 @@ The following keys are supported as appropriate for the mode:
|
|||||||
.It Li "Start of line" Ta "0" Ta "C-a"
|
.It Li "Start of line" Ta "0" Ta "C-a"
|
||||||
.It Li "Start selection" Ta "Space" Ta "C-Space"
|
.It Li "Start selection" Ta "Space" Ta "C-Space"
|
||||||
.It Li "Transpose chars" Ta "" Ta "C-t"
|
.It Li "Transpose chars" Ta "" Ta "C-t"
|
||||||
|
.It Li "Cursor to top line" Ta "H" Ta "M-R"
|
||||||
|
.It Li "Cursor to middle line" Ta "M" Ta "M-r"
|
||||||
|
.It Li "Cursor to bottom line" Ta "L" Ta ""
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
These key bindings are defined in a set of named tables:
|
These key bindings are defined in a set of named tables:
|
||||||
|
3
tmux.h
3
tmux.h
@ -397,6 +397,7 @@ enum mode_key_cmd {
|
|||||||
|
|
||||||
/* Copy keys. */
|
/* Copy keys. */
|
||||||
MODEKEYCOPY_BACKTOINDENTATION,
|
MODEKEYCOPY_BACKTOINDENTATION,
|
||||||
|
MODEKEYCOPY_BOTTOMLINE,
|
||||||
MODEKEYCOPY_CANCEL,
|
MODEKEYCOPY_CANCEL,
|
||||||
MODEKEYCOPY_CLEARSELECTION,
|
MODEKEYCOPY_CLEARSELECTION,
|
||||||
MODEKEYCOPY_COPYSELECTION,
|
MODEKEYCOPY_COPYSELECTION,
|
||||||
@ -406,6 +407,7 @@ enum mode_key_cmd {
|
|||||||
MODEKEYCOPY_HALFPAGEDOWN,
|
MODEKEYCOPY_HALFPAGEDOWN,
|
||||||
MODEKEYCOPY_HALFPAGEUP,
|
MODEKEYCOPY_HALFPAGEUP,
|
||||||
MODEKEYCOPY_LEFT,
|
MODEKEYCOPY_LEFT,
|
||||||
|
MODEKEYCOPY_MIDDLELINE,
|
||||||
MODEKEYCOPY_NEXTPAGE,
|
MODEKEYCOPY_NEXTPAGE,
|
||||||
MODEKEYCOPY_NEXTWORD,
|
MODEKEYCOPY_NEXTWORD,
|
||||||
MODEKEYCOPY_PREVIOUSPAGE,
|
MODEKEYCOPY_PREVIOUSPAGE,
|
||||||
@ -418,6 +420,7 @@ enum mode_key_cmd {
|
|||||||
MODEKEYCOPY_SEARCHUP,
|
MODEKEYCOPY_SEARCHUP,
|
||||||
MODEKEYCOPY_STARTOFLINE,
|
MODEKEYCOPY_STARTOFLINE,
|
||||||
MODEKEYCOPY_STARTSELECTION,
|
MODEKEYCOPY_STARTSELECTION,
|
||||||
|
MODEKEYCOPY_TOPLINE,
|
||||||
MODEKEYCOPY_UP,
|
MODEKEYCOPY_UP,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -278,6 +278,24 @@ window_copy_key(struct window_pane *wp, struct client *c, int key)
|
|||||||
window_copy_update_selection(wp);
|
window_copy_update_selection(wp);
|
||||||
window_copy_redraw_screen(wp);
|
window_copy_redraw_screen(wp);
|
||||||
break;
|
break;
|
||||||
|
case MODEKEYCOPY_TOPLINE:
|
||||||
|
data->cx = 0;
|
||||||
|
data->cy = 0;
|
||||||
|
window_copy_update_selection(wp);
|
||||||
|
window_copy_redraw_screen(wp);
|
||||||
|
break;
|
||||||
|
case MODEKEYCOPY_MIDDLELINE:
|
||||||
|
data->cx = 0;
|
||||||
|
data->cy = (screen_size_y(s) - 1) / 2;
|
||||||
|
window_copy_update_selection(wp);
|
||||||
|
window_copy_redraw_screen(wp);
|
||||||
|
break;
|
||||||
|
case MODEKEYCOPY_BOTTOMLINE:
|
||||||
|
data->cx = 0;
|
||||||
|
data->cy = screen_size_y(s) - 1;
|
||||||
|
window_copy_update_selection(wp);
|
||||||
|
window_copy_redraw_screen(wp);
|
||||||
|
break;
|
||||||
case MODEKEYCOPY_STARTSELECTION:
|
case MODEKEYCOPY_STARTSELECTION:
|
||||||
window_copy_start_selection(wp);
|
window_copy_start_selection(wp);
|
||||||
window_copy_redraw_screen(wp);
|
window_copy_redraw_screen(wp);
|
||||||
|
Loading…
Reference in New Issue
Block a user