Implement o and O bindings for vi mode

Credit to @joallard for the patch. Fixes #7442
This commit is contained in:
ridiculousfish
2020-12-19 14:26:13 -08:00
parent 7e7355bde1
commit 2d2efc8b2e
4 changed files with 26 additions and 0 deletions

View File

@@ -3590,6 +3590,26 @@ void reader_data_t::handle_readline_command(readline_cmd_t c, readline_loop_stat
}
break;
}
case rl::insert_line_above: {
editable_line_t *el = active_edit_line();
while (el->position() > 0 && el->text().at(el->position() - 1) != L'\n') {
update_buff_pos(el, el->position() - 1);
}
insert_char(el, L'\n');
update_buff_pos(el, el->position() - 1);
break;
}
case rl::insert_line_under: {
editable_line_t *el = active_edit_line();
if (el->position() < el->size()) {
const wchar_t *buff = el->text().c_str();
while (buff[el->position()] && buff[el->position()] != L'\n') {
update_buff_pos(el, el->position() + 1);
}
}
insert_char(el, L'\n');
break;
}
case rl::forward_jump:
case rl::backward_jump:
case rl::forward_jump_till: