25

Когда я хочу добраться до определенной части слова в Vim (по горизонтали), я просто нажимаю w, b, f или t (что-то). Есть ли хороший способ сделать это по вертикали? Например, я хочу получить определенное слово или букву строки, которая находится ниже или выше той строки, в которой я сейчас нахожусь.

PS: без использования:(номер строки)

10 ответов10

26

H , M и L переместят курсор в верхнюю, среднюю и нижнюю части экрана соответственно. Впоследствии вы можете нажать zz чтобы центрировать экран в строке, на которой находится курсор.

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

Есть множество других способов, vim очень гибок в этом отношении. Я бы порекомендовал сначала получить чит-лист vim для основных команд, а затем, когда у вас есть время, просмотреть документацию vim по этому вопросу.

Ссылка на один шпаргалку: шпаргалка

Также:

  • / + string + (Enter) ищет следующее вхождение строки от курсора вперед до конца документа
  • ? - делает то же самое, но от курсора назад к началу документа
8
  • { } приведет вас к началу / концу следующего абзаца
  • ( ) то же самое для предложений
  • ^ $ первый, последний символ строки

Краткий справочник / шпаргалка здесь

6

Я прыгаю в поисках уникальных струн, куда я хочу пойти. В Vim вы можете сделать это с:

/ Поиск строка

Обычно я прокручиваю вперёд и назад, используя n и N, как только я ввёл поиск.

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

"script.pl" строка 219 из 328 --66% - столбец 19-23

3

Вы также можете выполнить переход к определенной строке в документе, введя Ngg, где N - номер строки, которую вы хотите перейти.

3

попробуй: он motion.txt и: он вверх-вниз-движения

У этого есть весь список возможных движений вверх

2

как уже упоминалось выше H, M, L(как в верхнем, среднем, нижнем) нижнем регистре hjkl - это типичные команды консоли игры для левого, нижнего, верхнего, правого и работают одинаково в vi (j, k работают в gmail, если вы включите ключевые команды)

2

Вы должны попробовать подключаемый модуль easymotion от Lokaltog :http://www.vim.org/scripts/script.php?script_id=3526

Плагин Easymotion на работе

1

<Ctrl>+D - вниз

<Ctrl>+U - вверх

1

В дополнение к обычным вертикальным движениям я использую модифицированную версию https://stackoverflow.com/questions/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).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .