Support vim movements: H M L
Vim movements H, M and L implemented and documented.
This commit is contained in:
parent
3c2753bab2
commit
8dad4e51e4
|
@ -118,6 +118,12 @@ SELECTION MODE
|
|||
+-----------------------------------+-----------------------------------------------------------+
|
||||
| ``B`` or ``ctrl-left`` | backward WORD (non-whitespace) |
|
||||
+-----------------------------------+-----------------------------------------------------------+
|
||||
| ``H`` | jump to the top of the screen |
|
||||
+-----------------------------------+-----------------------------------------------------------+
|
||||
| ``M`` | jump to the middle of the screen |
|
||||
+-----------------------------------+-----------------------------------------------------------+
|
||||
| ``L`` | jump to the bottom of the screen |
|
||||
+-----------------------------------+-----------------------------------------------------------+
|
||||
| ``0`` or ``home`` | move cursor to the first column in the row |
|
||||
+-----------------------------------+-----------------------------------------------------------+
|
||||
| ``^`` | beginning-of-line (first non-blank character) |
|
||||
|
|
|
@ -109,6 +109,12 @@ forward \fIWORD\fP (non-whitespace)
|
|||
forward to end of \fIWORD\fP (non-whitespace)
|
||||
.IP "\fBB\fP or \fBctrl-left\fP"
|
||||
backward \fIWORD\fP (non-whitespace)
|
||||
.IP "\fBH\fP"
|
||||
move cursor to the top of the screen
|
||||
.IP "\fBM\fP"
|
||||
move cursor to the middle of the screen
|
||||
.IP "\fBL\fP"
|
||||
move cursor to the bottom of the screen
|
||||
.IP "\fB0\fP or \fBhome\fP"
|
||||
move cursor to the first column in the row\fP"
|
||||
.IP "\fB^\fP"
|
||||
|
|
26
termite.cc
26
termite.cc
|
@ -507,6 +507,23 @@ static long last_row(VteTerminal *vte) {
|
|||
return (long)gtk_adjustment_get_upper(adjust) - 1;
|
||||
}
|
||||
|
||||
static long top_row(VteTerminal *vte) {
|
||||
GtkAdjustment *adjust = gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(vte));
|
||||
return (long)gtk_adjustment_get_value(adjust);
|
||||
}
|
||||
|
||||
static long middle_row(VteTerminal *vte) {
|
||||
GtkAdjustment *adjust = gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(vte));
|
||||
return (long)gtk_adjustment_get_value(adjust) +
|
||||
(long)vte_terminal_get_row_count(vte) / 2;
|
||||
}
|
||||
|
||||
static long bottom_row(VteTerminal *vte) {
|
||||
GtkAdjustment *adjust = gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(vte));
|
||||
return (long)gtk_adjustment_get_value(adjust) +
|
||||
(long)vte_terminal_get_row_count(vte) - 1;
|
||||
}
|
||||
|
||||
static void update_scroll(VteTerminal *vte) {
|
||||
GtkAdjustment *adjust = gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(vte));
|
||||
const double scroll_row = gtk_adjustment_get_value(adjust);
|
||||
|
@ -894,6 +911,15 @@ gboolean key_press_cb(VteTerminal *vte, GdkEventKey *event, keybind_info *info)
|
|||
case GDK_KEY_G:
|
||||
move_to_row_start(vte, &info->select, last_row(vte));
|
||||
break;
|
||||
case GDK_KEY_H:
|
||||
move_to_row_start(vte, &info->select, top_row(vte));
|
||||
break;
|
||||
case GDK_KEY_M:
|
||||
move_to_row_start(vte, &info->select, middle_row(vte));
|
||||
break;
|
||||
case GDK_KEY_L:
|
||||
move_to_row_start(vte, &info->select, bottom_row(vte));
|
||||
break;
|
||||
case GDK_KEY_v:
|
||||
toggle_visual(vte, &info->select, vi_mode::visual);
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue