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

Vim, движущийся с hjkl в длинных линиях (линии экрана)

enter image description here

Выделенный текст - это массив, в который я хочу переместить. Я должен нажать g перед нажатием j, чтобы переместить линию вниз. Есть ли какое-то отображение для моего .vimrc, что я могу просто использовать hjkl для перемещения по экранам без нажатия g каждый раз.

Спасибо за вашу помощь Matthias

4b9b3361

Ответ 1

Я использую следующий фрагмент, который помогает со всеми формами навигации, включая такие вещи, как $до конца строки и т.д.

" mapping to make movements operate on 1 screen line in wrap mode
function! ScreenMovement(movement)
   if &wrap
      return "g" . a:movement
   else
      return a:movement
   endif
endfunction
onoremap <silent> <expr> j ScreenMovement("j")
onoremap <silent> <expr> k ScreenMovement("k")
onoremap <silent> <expr> 0 ScreenMovement("0")
onoremap <silent> <expr> ^ ScreenMovement("^")
onoremap <silent> <expr> $ ScreenMovement("$")
nnoremap <silent> <expr> j ScreenMovement("j")
nnoremap <silent> <expr> k ScreenMovement("k")
nnoremap <silent> <expr> 0 ScreenMovement("0")
nnoremap <silent> <expr> ^ ScreenMovement("^")
nnoremap <silent> <expr> $ ScreenMovement("$")

Ответ 2

Вы можете переназначить клавиши j и k (не уверены, действительно ли вам нужны h и l..)

:map j gj
:map k gk

После того, как вы попробовали и понравились, добавьте их в .vimrc без ведущего :

Ответ 3

Вы можете просто переделать j и k (например) в gj и gk:

" map j to gj and k to gk, so line navigation ignores line wrap
nmap j gj
nmap k gk

Ответ 4

Это отличная идея для редактирования длинных текстовых файлов, таких как латексные документы. Но это не такая хорошая идея при редактировании кода, поскольку он может испортить некоторые макросы (как отмечает Джелера на Неде). Мой компромисс заключается в том, чтобы включить его только в режимах вставки (и замены), а не для чего-либо еще (я не знаю никаких макросов, которые я использую в режиме вставки, которые используют клавиши навигации):

" move on soft lines in insert mode
inoremap <Down> <C-o>g<Down>
inoremap <Up> <C-o>g<Up>

(адаптирован из этого ответа)