переместить текст после курсора на новую строку - PullRequest
11 голосов
/ 01 апреля 2012

Я новичок в Vim и использую MacVim для OSX Snow Leopard.Одно из наиболее распространенных действий, которые я должен предпринять, - переместить курсор на новую строку, а также переместить текст после курсора на новую строку.Я знаю, что нажатие «o» в обычном или визуальном режиме перемещает курсор на новую строку и переключает режим для вставки.

Что я хотел бы сделать, это переместить курсор на новую строку и переместить текст после курсора также на эту новую строку, предпочтительно оставаясь в обычном режиме?Это возможно?Как я могу выполнить эту задачу?

Ответы [ 6 ]

19 голосов
/ 01 апреля 2012

Если курсор находится на <space> как в ([] отмечает курсор):

lorem ipsum[ ]dolor sit amet

самое простое - это сделать r<CR>, то есть "заменить текущий символ переводом строки".

В противном случае используйте решение @ knittl.

11 голосов
/ 01 апреля 2012

То есть вы хотите переместить все в текущей строке, которая идет после курсора на следующую строку? Читать: вставить разрыв строки ??

(move cursor)
i (or a)
<return>
<esc> (or ^C)

Чтобы отобразить эту последовательность нажатий клавиш на одну клавишу, следуйте совету @ thb и используйте команду :map:

:map <F2> i<CR><ESC>
7 голосов
/ 02 апреля 2012
:map <F2> i<CR>

Это сохраняет vi в режиме вставки.

2 голосов
/ 10 апреля 2014

Как я отвечал в этом посте, Как вставить разрыв строки, когда курсор не входит в режим вставки в Vim? .

Пожалуйста, попробуйте Control + j.

2 голосов
/ 01 апреля 2012

В зависимости от того, какой именно эффект вы хотите, либо введите команду

:map <F2> o<Esc>

или команду

:map <F2> O<Esc>j

После этого нажатие <F2> выполнит работу одним нажатием клавиши..

Но, конечно, @Alex тоже прав.Просто нажмите o, а затем Esc, когда вам это нужно. Это не плохо.

0 голосов
/ 11 ноября 2014

Приведенный ниже код выполняет то же поведение, что и «обычные» редакторы (из-за отсутствия лучших терминов на моем уме), за исключением того, что вам придется нажимать «ввод» дважды вместо одного.

Я также хотел избавиться от пробела, если он находится прямо перед моим текущим персонажем.

Возможно, есть более простой способ, и я полностью приветствую правки: -)

" 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...