Приведенный ниже код выполняет то же поведение, что и «обычные» редакторы (из-за отсутствия лучших терминов на моем уме), за исключением того, что вам придется нажимать «ввод» дважды вместо одного.
Я также хотел избавиться от пробела, если он находится прямо перед моим текущим персонажем.
Возможно, есть более простой способ, и я полностью приветствую правки: -)
" in ~/.vimrc or ~/.vimrc.after if you're using janus
nnoremap <cr><cr> :call ReturnToNewLine()<cr>
function ReturnToNewLine()
let previous_char = getline(".")[col(".")-2]
" if there's a space before our current position, get rid of it first
if previous_char == ' '
execute "normal! \<bs>\<esc>"
endif
execute "normal! i\<cr>\<esc>"
endfunction
Это переназначает нажатиевведите дважды, чтобы перейти в режим вставки, поместив возврат каретки и выйдя.Причина, по которой я использую это отображение (введите дважды), заключается в том, что я привык к этой функции с другими текстовыми редакторами, нажав клавишу ввода;Кроме того, быстрый ввод с клавиатуры дважды.
Еще одна вещь, которая мне показалась полезной в этом контексте, позволяла vim перемещаться сразу после последнего символа (в случае, если я хотел переместить последний символ на новую строку).Таким образом, у меня есть следующее в моем ~/.vimrc
.
set virtualedit=onemore
Обратите внимание, что я использую nnoremap
( n обычный режим нет n- re cursive) вместо map
(что ОЧЕНЬ опасно) (проверьте это для получения дополнительной информации о различиях http://learnvimscriptthehardway.stevelosh.com/chapters/05.html)