Предпочтительный способ перемещения в vim (нормальный режим) - PullRequest
9 голосов
/ 06 октября 2011

Я не видел этого вопроса в stackoverflow, и это моя самая большая проблема в vim:

Как вы все перемещаетесь в файле?Я обнаружил, что использую hjkl слишком много или слишком много раз, и я хочу стать лучше в этом.Это расстраивает, когда вы находитесь на большом мониторе.

Я установил EasyMotion - и до сих пор это было хорошо для меня - я просто хочу знать, есть ли что-то лучше ...

Спасибо!

Ответы [ 8 ]

20 голосов
/ 06 октября 2011

Мне нравится шпаргалка Теда Нейлида .Это как сетка, поэтому вы можете легко найти горизонтальные и вертикальные движения.Положите его на стену рядом с монитором, и вы скоро на ходу подберете новые движения.

Мне недавно понравились следующие движения:

  • () и {}, которыеПозволяет ли вам мудрый функционал в исходном коде
  • / и?+ n / N просто поиск, вы обычно знаете, куда хотите пойти
  • fx и tx - чтобы перейти к следующему символу x или перед ним, конечно, вы можете сделать 2fx, чтобы перейти ко второму появлению x,как вы можете делать со всеми движениями
  • % для перемещения между начальной и конечной скобками
9 голосов
/ 06 октября 2011

Я использую b и w для перемещения влево и вправо соответственно на одну строку. Для увеличения и уменьшения я использую Ctrl+u и Ctrl+d соответственно. IMO Ctrl+u и Ctrl+d лучше, чем Ctrl+b и Ctrl+f, потому что они прокручивают половину окна за раз, чтобы вы не теряли контекст.

До сих пор я не использовал плагин для перемещения по vim.

Забыл упомянуть два других важных нажатия клавиш, $ и ^, чтобы перейти к концу строки и началу строки соответственно.

7 голосов
/ 06 октября 2011

Несколько команд перемещения:

b B e E f F ge gE gj gk go G h H j k l L M n N t T w W { } / ? ^ $ # * ` ' | % 

Изучите их, а также все команды, начинающиеся с [, например [{, что очень полезно при редактировании кода в стиле C ...

См. :help index.txt для справки.

3 голосов
/ 06 октября 2011

В основном я использую следующее (в порядке частоты):

  • ' R перейти в отмеченное положение ( ` слишком далеко от базовой клавиатуры, чтобы его можно было много использовать)
  • / поиск | ? поиск вперед | обратный поиск
  • n | N следующий | предыдущий в поиске
  • H | L | M верх | низ | середина дисплея
  • G перейти в конец файла
  • 1G перейти к строке 1
  • { вернуться назад к «абзацу» (часто блоку кода)
  • } перейти на один «абзац»

Большинство из них могут быть дополнены счетчиком перед командой.

3 голосов
/ 06 октября 2011

Это зависит от того, как вы хотите перемещаться, но обычно

  • A переводит вас в режим вставки в конце строки
  • I наначало
  • o вставляет строку ниже
  • O выше

и более эффективно, поиск с помощью /<thing you want to jump to> очень удобен.В файле AC, в котором отформатированы функции

int
funcname()

/^funcname, вы перейдете к началу функции.Есть еще куча, но это будет хорошим началом для новичка в vim.

2 голосов
/ 06 октября 2011

Простая документация:
http://vim.wikia.com/wiki/Moving_around

Регулярное движение:
hjkl / клавиши со стрелками / страница вверх / страница вниз
% будет переключаться между открытыми / конечными скобками
GG / G двигаться вверх / вниз

Складной:
Для свертывания больших блоков кода вы можете использовать свертывание.
http://vimdoc.sourceforge.net/htmldoc/fold.html

Поиск:
Чтобы перейти к чему-то конкретному, наберите /searchstring (используйте с set inc для перехода к совпадениям при наборе)
* для поиска вперед по тому же слову, на котором стоит курсор
# то же самое, но поиск назад

Вы также можете использовать метки.
http://vim.wikia.com/wiki/Using_marks

Я также использую ctags и jump, чтобы находить вещи в нескольких файлах.
http://vimdoc.sourceforge.net/htmldoc/tagsrch.html

Мне больше ничего не нужно.

1 голос
/ 06 октября 2011

Я не вижу особого смысла в плане общего просветления, но я использую (ранжированный по тому, как часто я их использую):

w and b

для перемещения на одно слово вправо и влево.

/ and ?

для поиска слова или шаблона внизу или вверху.

G and gg

для перехода к нижней и верхней части буфера.

<C-f> and <C-b>

для перехода к следующему и предыдущему экрану.

* and #

для перехода к следующему и предыдущему вхождению слова под курсором.

f and F

для перехода перед символом вправо или влево.

t and T

для перехода по символу вправо или влево.

Ho! и

$ and ^

тоже много, чтобы перейти к концу и началу строки.

0 голосов
/ 07 октября 2011

Прочитайте http://www.viemu.com/a-why-vi-vim.html и запустите vimtutor, а также: help motion.txt будет полезным. Я также рекомендую постоянно оставаться в обычном режиме - как описано в статье выше. Вообще, учиться в vim - это учиться играть на фортепиано - надо много практиковаться.

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