This patch introduces new commands to jump to the top and bottom of the
history, in copy mode. In both vi mode and emacs mode, they are bound to
Ctrl-Home and Ctrl-End. In vi mode, the alternate keys g and G are also
bound, and in emacs mode, < and >.
g, G, < and > are all used by "less" for this same functionality, and
approximate similar keys used by vi and Emacs.
In vi, you would actually use "1G" to get to the top line, and "G" to
reach the bottom. Vim also provides "gg" to reach the top line.
In emacs, you would use "M-<" and "M->". I suppose we could bind those,
too, if people want 'em.
--
Micah J. Cowan
http://micah.cowan.name/
Index: mode-key.c
===================================================================
--- mode-key.c.orig
+++ mode-key.c
@@ -85,7 +85,9 @@
{ MODEKEYCOPY_ENDOFLINE, "end-of-line" },
{ MODEKEYCOPY_ENDOFNONSPACEWORD, "end-of-nonspace-word" },
{ MODEKEYCOPY_ENDOFWORD, "end-of-word" },
+ { MODEKEYCOPY_GOTOFIRSTLINE, "goto-first-line" },
{ MODEKEYCOPY_GOTOLINE, "goto-line" },
+ { MODEKEYCOPY_GOTOLASTLINE, "goto-last-line" },
{ MODEKEYCOPY_LEFT, "cursor-left" },
{ MODEKEYCOPY_MIDDLELINE, "middle-line" },
{ MODEKEYCOPY_NEXTPAGE, "page-down" },
@@ -170,6 +172,7 @@
{ '?', 0, MODEKEYCOPY_SEARCHUP },
{ 'B', 0, MODEKEYCOPY_PREVIOUSNONSPACEWORD },
{ 'E', 0, MODEKEYCOPY_ENDOFNONSPACEWORD },
+ { 'G', 0, MODEKEYCOPY_GOTOLASTLINE },
{ 'H', 0, MODEKEYCOPY_TOPLINE },
{ 'J', 0, MODEKEYCOPY_SCROLLDOWN },
{ 'K', 0, MODEKEYCOPY_SCROLLUP },
@@ -189,6 +192,7 @@
{ '^', 0, MODEKEYCOPY_BACKTOINDENTATION },
{ 'b', 0, MODEKEYCOPY_PREVIOUSWORD },
{ 'e', 0, MODEKEYCOPY_ENDOFWORD },
+ { 'g', 0, MODEKEYCOPY_GOTOFIRSTLINE },
{ 'h', 0, MODEKEYCOPY_LEFT },
{ 'j', 0, MODEKEYCOPY_DOWN },
{ 'k', 0, MODEKEYCOPY_UP },
@@ -199,6 +203,8 @@
{ KEYC_BSPACE, 0, MODEKEYCOPY_LEFT },
{ KEYC_DOWN | KEYC_CTRL,0, MODEKEYCOPY_SCROLLDOWN },
{ KEYC_DOWN, 0, MODEKEYCOPY_DOWN },
+ { KEYC_END | KEYC_CTRL, 0, MODEKEYCOPY_GOTOLASTLINE },
+ { KEYC_HOME | KEYC_CTRL,0, MODEKEYCOPY_GOTOFIRSTLINE },
{ KEYC_LEFT, 0, MODEKEYCOPY_LEFT },
{ KEYC_NPAGE, 0, MODEKEYCOPY_NEXTPAGE },
{ KEYC_PPAGE, 0, MODEKEYCOPY_PREVIOUSPAGE },
@@ -262,6 +268,8 @@
/* emacs copy mode keys. */
const struct mode_key_entry mode_key_emacs_copy[] = {
{ ' ', 0, MODEKEYCOPY_NEXTPAGE },
+ { '<', 0, MODEKEYCOPY_GOTOFIRSTLINE },
+ { '>', 0, MODEKEYCOPY_GOTOLASTLINE },
{ '\000' /* C-Space */, 0, MODEKEYCOPY_STARTSELECTION },
{ '\001' /* C-a */, 0, MODEKEYCOPY_STARTOFLINE },
{ '\002' /* C-b */, 0, MODEKEYCOPY_LEFT },
@@ -289,6 +297,8 @@
{ KEYC_DOWN | KEYC_CTRL,0, MODEKEYCOPY_SCROLLDOWN },
{ KEYC_DOWN | KEYC_ESCAPE, 0, MODEKEYCOPY_HALFPAGEDOWN },
{ KEYC_DOWN, 0, MODEKEYCOPY_DOWN },
+ { KEYC_END | KEYC_CTRL, 0, MODEKEYCOPY_GOTOLASTLINE },
+ { KEYC_HOME | KEYC_CTRL,0, MODEKEYCOPY_GOTOFIRSTLINE },
{ KEYC_LEFT, 0, MODEKEYCOPY_LEFT },
{ KEYC_NPAGE, 0, MODEKEYCOPY_NEXTPAGE },
{ KEYC_PPAGE, 0, MODEKEYCOPY_PREVIOUSPAGE },
Index: tmux.h
===================================================================
--- tmux.h.orig
+++ tmux.h
@@ -453,6 +453,8 @@
MODEKEYCOPY_ENDOFLINE,
MODEKEYCOPY_ENDOFNONSPACEWORD,
MODEKEYCOPY_ENDOFWORD,
+ MODEKEYCOPY_GOTOFIRSTLINE,
+ MODEKEYCOPY_GOTOLASTLINE,
MODEKEYCOPY_GOTOLINE,
MODEKEYCOPY_HALFPAGEDOWN,
MODEKEYCOPY_HALFPAGEUP,
Index: window-copy.c
===================================================================
--- window-copy.c.orig
+++ window-copy.c
@@ -334,6 +334,20 @@
window_copy_cursor_next_word(
wp, window_copy_word_delims, WORD_SEARCH_END_OF_WORD);
break;
+ case MODEKEYCOPY_GOTOFIRSTLINE:
+ data->cx = 0;
+ data->cy = 0;
+ data->oy = screen_hsize(&wp->base);
+ window_copy_update_selection(wp);
+ window_copy_redraw_screen(wp);
+ break;
+ case MODEKEYCOPY_GOTOLASTLINE:
+ data->cx = 0;
+ data->cy = screen_size_y(s) - 1;
+ data->oy = 0;
+ window_copy_update_selection(wp);
+ window_copy_redraw_screen(wp);
+ break;
case MODEKEYCOPY_NEXTNONSPACEWORD:
window_copy_cursor_next_word(
wp, " ", WORD_SEARCH_START_OF_WORD);
Index: tmux.1
===================================================================
--- tmux.1.orig
+++ tmux.1
@@ -552,7 +552,9 @@
.It Li "End of line" Ta "$" Ta "C-e"
.It Li "End of non-space word" Ta "E" Ta ""
.It Li "End of word" Ta "e" Ta "M-f"
-.It Li "Goto line" Ta ":" Ta "g"
+.It Li "Go to top of history" Ta "g or Ctrl-Home" Ta "< or Ctrl-Home"
+.It Li "Go to line" Ta ":" Ta "g"
+.It Li "Go to bottom of history" Ta "G or Ctrl-End" Ta "> or Ctrl-End"
.It Li "Half page down" Ta "C-d" Ta "M-Down"
.It Li "Half page up" Ta "C-u" Ta "M-Up"
.It Li "Next page" Ta "C-f" Ta "Page down"
------------------------------------------------------------------------------
Throughout its 18-year history, RSA Conference consistently attracts the
world's best and brightest in the field, creating opportunities for Conference
attendees to learn about information security's most important issues through
interactions with peers, luminaries and emerging and established companies.
http://p.sf.net/sfu/rsaconf-dev2dev
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users