Подтвердить что ты не робот

Как я могу интуитивно перемещать курсор в vim? (не по строке)

если некоторые строки слишком длинны, он будет принудительно изменен.

например, обычно длинная строка будет выглядеть как

1 first line
2 this is the long second line of the file
3 third line.

но если окно vim слишком узкое, это будет выглядеть как

1 first line
2 this is the long
  second line of the file
3 third line

проблема возникает из-за этого.

предположим, что курсор vim расположен до 't' в 'третьей строке'. если я набираю 'k', курсор переместится до 's' во вторую строку файла '. после этого, если я снова наберу "k", курсор переместится в "f" в "первой строке"!, а не "t" в "это длинный". я хочу, чтобы курсор переместился в "t" в "это длинный", это более интуитивный процесс для меня. как можно настроить мой vim на работу так?

4b9b3361

Ответ 1

В Vim команды gj и gk перемещаются по строке на экране, а не по строке в файле. Похоже, это похоже на ваше описание.

Вы можете изменить свои ключи следующим образом:

:map j gj
:map k gk

Ответ 2

Нет, если некоторые строки слишком длинны, и вы установите обертку, они будут отображаться на "двух строках", так сказать, но между ними не будет символа новой строки. Если вы отключите обертку с помощью set nowrap, вы увидите эффект.

Обычно k и j перемещают вас вверх и вниз. Если вы хотите перемещаться по обернутым линиям, используйте gk или gj, или, как некоторые из них, сопоставьте его, например, с клавишами курсора.

nmap <up> gk
nmap <down> gj

Ответ 3

Возможно перемещение в vim естественным образом.

Что я сделал, и предлагаю вам изменить (или создать) ваш "~/.vimrc" и добавить эти две строки:

map <C-Up> g<Up>
map <C-Down> g<Down>

Это позволит вам контролировать и управлять командами перемещений (это согласовано с правом управления и слева направо для перемещения по длинным строкам)

Если вы добавите эти две другие строки, вы можете использовать ту же команду для перемещения в insertmode:

imap <C-Up> <C-[> g<Up> i
imap <C-Down> <C-[> g<Down> i

(VIM отлично!)

Грег Руо

Ответ 4

Этот ответ получен из @mario-rossi answer (Kudo к нему) с небольшим знаменем.

Я использую обычные клавиши со стрелкой ВВЕРХ и ВНИЗ, а не CTRL + вверх и CTRL + вниз. И почему-то мне нужно удалить одно избыточное пространство в режиме отображения INSERT, чтобы избежать пошагового поведения.

Вставьте ~/.vimrc в ~/.vimrc следующее:

" When a long line is wrapped, the "gk" and "gj" allow you to move up and down
" a visual line, while normal "k" and "j" move a physical line.
" The following settings map "gk" and "gj" to cursor <up> and <down>.
map <up> gk
map <down> gj
" And the following lines enables same <up> and <down> behavior in INSERT mode
imap <up> <C-[> <up>i
imap <down> <C-[> <down>i