Переміщення (ефективно) вертикально по Vim


27

Коли я хочу досягти певної частини слова у Vim (по горизонталі), я просто натискаю w, b, f або t (щось). Чи є хороший спосіб зробити це вертикально? Наприклад, я хочу перейти до певного слова або літери рядка, що знаходиться нижче або над рядком, в якому я зараз перебуваю.

PS: Без використання: (номер рядка)

Відповіді:


29

H, Mі Lперемістить курсор відповідно до верхньої, середньої та нижньої частини екрана. Згодом ви можете натиснути zzна центр екрана на лінії, на якій знаходиться ваш курсор.


5
І zb та zt переміщують екран відповідно на нижній та верхній частині
Jani Hartikainen,

11
  • ви можете використовувати стрілку вгору / вниз для переміщення по одному рядку
  • ви можете ввести число, а потім скористатися стрілкою вгору / вниз для переміщення вгору / вниз по стільки рядків
  • невеликими gстрибками до першого рядка документа
  • капітал Gпереходить до останнього рядка документа
  • тощо.

Є багато мільйонів інших способів, vim в цьому відношенні дуже гнучкий. Я б рекомендував отримати спочатку чіт-лист Vim для основних команд, а потім, як у вас є час, пройти документацію vim з цього приводу.

Посилання на один шпаргалку: шпаргалка

Також:

  • /+ рядок + (Enter)шукає наступне виникнення рядка від курсору вперед до кінця документа
  • ? - робить те ж саме, але від курсору назад до початку документа


6

Я стрибаю навколо, шукаючи унікальні струни, куди хочу піти. У Vim це можна зробити за допомогою:

/ search-string

Зазвичай я прокручую вперед і назад, використовуючи n і N, як тільки я вступив у пошук.

Я також прокручую, використовуючи Ctrl-F і Ctrl-B, щоб швидко перегортати код. Але найчастіше я використовую пошуковий трюк. Іноді ви можете загубитися, переглядаючи результати пошуку за допомогою n та N. Хорошою командою для орієнтації на себе є Ctrl-G, яка виводить щось подібне внизу екрана Vim:

"script.pl" рядок 219 з 328 - 66% - коло 19-23


+1 для <CTRL> -F і <CTRL> -B, хоча я, як правило, "обманюю" і використовую <PgUp> і <PgDown> майже так само часто!
техномалогічний

4

спробуйте:: he motion.txt і: він рухає вниз-вниз

У ньому є весь список можливих рухів вгору вниз


3

Ви також можете робити стрибки на певний рядок у документі, видавши Ngg, де Nномер рядка, який ви хочете перейти.


1
ви маєте на увазі NG...
Пітер

1
Я Nggтеж використовую (обидва варіанти працюють)
соумергер

1
А також:N
viraptor

3

Спробуйте скористатися плагіном easymotion Lokaltog : http://www.vim.org/scripts/script.php?script_id=3526

Плагін Easymotion на роботі


easymotion справді хороший, але я не знаю, навіщо змусити його працювати над частиною над курсором. Він підкреслює лише той, що знаходиться під курсором.
nXqd

2

як уже згадувалося H, M, L (як у високому, середньому, нижньому) малі регістри hjkl - це типові команди консольної гри для ліворуч, вниз, вгору, праворуч та працюють однаково у vi (j, k, робота у gmail, якщо увімкнено ключові команди)


1

<Ctrl>+D - вниз

<Ctrl>+U - вгору


Це прокрутка на півсторінки. Для повного прокручування сторінки використовуйте <c-f>та<c-b>
Al.G.

1

Крім регулярних вертикальних рухів, я використовую модифіковану версію /programming/4946421/vim-moving-with-hjkl-in-long-lines-screen-lines . Зазвичай я рухаюсь клавішами зі стрілками, а не hjkl (користувач часу редагування інших редакторів, перш ніж я знайшов Vim, занадто звик, щоб стрілки / Home / end / PgUp / PgDn перемикатися, навіть після 5+ років ексклюзивного використання Vim).

function! ScreenMovement(movement)
   if &wrap
      return "g" . a:movement
   else
      return a:movement
   endif
endfunction
map <expr> <C-Down> ScreenMovement("j")
map <expr> <C-Up> ScreenMovement("k")
map <expr> <C-Home> ScreenMovement("0")
map <expr> <C-End> ScreenMovement("$")

Утримуючи Ctrl, я можу візуально перейти до початку / кінця або вгору / вниз рядків відображення. Принаймні, для мене це ефективніше, ніж альтернативи.

Майже забув: мені потрібно було змінити .Xdefaults, щоб він працював спеціально у urxvt, але це, мабуть, поза темою (з відповідями в Google).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.