1

Есть ли способ оставить курсор на новой строке в Vim, подобно поведению Emacs по умолчанию?

Когда вы удаляете символ в середине строки, он удаляется, и курсор теперь располагается на символе, который был справа от него. Однако, если вы удаляете символ в конце строки, он удаляется, и курсор теперь располагается на символе, который был слева от него. Я хотел бы, чтобы он мог сидеть на новой строке, то есть символ (или символы в зависимости от системы), который был справа от удаленного символа. Я также хотел бы иметь возможность поместить курсор на новую строку в целом.

1 ответ1

2

Это возможно с настройкой virtualedit . Попробуйте, например :set virtualedit=onemore и узнать больше об этом по адресу :h 'virtualedit' Обратите внимание, что это может сломать плагины или другие, немного менее проверенные углы в Vim.

Если вы также хотите, чтобы x удалил последнюю строку в этом режиме, вы можете отобразить x чтобы сделать что-то более умное, например,

:nnoremap <expr> x col('$')==col('.')?'gJ':'x'

Это в основном отображает x в выражение, которое проверяет, находится ли курсор на последнем символе (новой строке) строки, и если это так, он будет сопоставлен с командой gJ противном случае будет выполнен нормальный x .

(Примечание: не очень тщательно проверено, могут быть некоторые крайние случаи)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .