vim: Add shift-y (#3117)

Release Notes:

- vim: Add `Y` to copy line-wise (this copies vim's behaviour, which
differs from nvim's)
This commit is contained in:
Conrad Irwin 2023-10-10 19:25:32 -06:00 committed by GitHub
commit 9004254fbf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 0 deletions

View File

@ -408,6 +408,7 @@
"vim::PushOperator", "vim::PushOperator",
"Yank" "Yank"
], ],
"shift-y": "vim::YankLine",
"i": "vim::InsertBefore", "i": "vim::InsertBefore",
"shift-i": "vim::InsertFirstNonWhitespace", "shift-i": "vim::InsertFirstNonWhitespace",
"a": "vim::InsertAfter", "a": "vim::InsertAfter",

View File

@ -46,6 +46,7 @@ actions!(
ChangeToEndOfLine, ChangeToEndOfLine,
DeleteToEndOfLine, DeleteToEndOfLine,
Yank, Yank,
YankLine,
ChangeCase, ChangeCase,
JoinLines, JoinLines,
] ]
@ -66,6 +67,7 @@ pub fn init(cx: &mut AppContext) {
cx.add_action(insert_line_above); cx.add_action(insert_line_above);
cx.add_action(insert_line_below); cx.add_action(insert_line_below);
cx.add_action(change_case); cx.add_action(change_case);
cx.add_action(yank_line);
cx.add_action(|_: &mut Workspace, _: &DeleteLeft, cx| { cx.add_action(|_: &mut Workspace, _: &DeleteLeft, cx| {
Vim::update(cx, |vim, cx| { Vim::update(cx, |vim, cx| {
@ -308,6 +310,13 @@ fn insert_line_below(_: &mut Workspace, _: &InsertLineBelow, cx: &mut ViewContex
}); });
} }
fn yank_line(_: &mut Workspace, _: &YankLine, cx: &mut ViewContext<Workspace>) {
Vim::update(cx, |vim, cx| {
let count = vim.take_count(cx);
yank_motion(vim, motion::Motion::CurrentLine, count, cx)
})
}
pub(crate) fn normal_replace(text: Arc<str>, cx: &mut WindowContext) { pub(crate) fn normal_replace(text: Arc<str>, cx: &mut WindowContext) {
Vim::update(cx, |vim, cx| { Vim::update(cx, |vim, cx| {
vim.stop_recording(); vim.stop_recording();