Стать лучше в Vim [закрыто]


116

Я использую Vim довольно долгое время, но я нахожусь на уровне, когда большую часть времени использую режим вставки, и я все еще использую клавиши со стрелками для перемещения (!).

Мне кажется, что я не получаю наилучшего от моего прекрасного редактора, особенно в отношении навигации (особенно кода), копирования и вставки и других манипуляций с существующим кодом. (хотя меня вполне устраивают сложные шаблоны поиска / замены).

  • Как мне узнать больше?
  • Какие ресурсы порекомендовали бы люди?

8
Что плохого в использовании клавиш со стрелками для перемещения? Вот что они за !
Vilx,

39
@Vilx, вы не двигаетесь с помощью клавиш со стрелками даже в компьютерных играх ! Не говоря уже о текстовых редакторах ...
П Швед

6
@Vilx: клавиши со стрелками на клавиатуре находятся в ужасно неудобном месте для любой навигации. Вот почему канон в ViM - использовать HJKL, как если бы вы использовали WASD в игре от первого лица.
Will Vousden,

4
WASD существует потому, что его легче использовать левой рукой, поскольку правая управляет мышью. Левши используют стрелки. А HJKL настолько противоречит интуиции. Кто куда движется?
Vilx

8
Думаю, дело не в «стрелках против hjkl», а в «перемещении курсора против текстовых объектов».
Маттео Рива,

Ответы:


78

«Почему, о, ПОЧЕМУ, эти #? @! Болваны используют vi?» - хорошее введение в «путь Vim», особенно в отношении текстовых объектов, которые являются одной из наиболее определяющих функций Vim.


3
В качестве бонуса есть красивая графическая шпаргалка (ссылка в конце статьи).
Csaba_H,

Кажется, я не могу получить доступ к этой ссылке. Даже с завитком. Кто-нибудь может подтвердить?
H.Rabiee

66

Вот несколько потрясающих скринкастов, которые должны дать вам представление о том, чему учиться дальше. Есть также видео на промежуточные и продвинутые темы, но на самом деле самые важные из них.

Кроме того, когда я почувствовал, что застаиваюсь и на самом деле не изучаю «путь Vim», я решил отключить клавиши со стрелками как в обычном режиме, так и в режиме вставки. Это заставляет вас использовать ESC, чтобы куда-то добраться, и заставляет думать больше, чем Vim. В конце концов, я снова включил клавиши со стрелками в режиме вставки, но я почти никогда их не использую. Чаще всего есть более эффективные способы передвижения.

map <up> <nop>
map <down> <nop>
map <left> <nop>
map <right> <nop>

И особенно

imap <up> <nop>
imap <down> <nop>
imap <left> <nop>
imap <right> <nop>

5
Мне нравится идея отключения клавиш со стрелками, это хороший способ заставить себя перестать ими пользоваться.
Idan K

1
Для меня это сработало очень хорошо, но первые несколько дней были очень разочаровывающими. Как только вы к этому привыкнете и откажетесь от привычки слишком много перемещаться в режиме вставки, я рекомендую снова включить imap.
Сара

Эти скринкасты были потрясающими. Спасибо, что указали.
Мерт Нухоглу

2
Отключение клавиш со стрелками - УДИВИТЕЛЬНАЯ идея, я делаю это прямо сейчас.
gorsky

Отключение клавиш со стрелками основано на предположении, что клавиши со стрелками больше не мешают, чем hjkl. Лучше купить клавиатуру получше. Я использую Kinesis Advantage. Даже если бы я использовал стандартную клавиатуру, hjkl все равно не имеет смысла, так как я использую dvorak. Я хочу сказать: суть не в том, чтобы «не использовать клавиши со стрелками», а в том, чтобы «использовать наиболее эффективные средства и не уклоняться от повышения эффективности из-за кривой обучения».
Limited Atonement

23
  1. введите vimtutorв командной строке
  2. войдите в vim, введите: help или <F1>
  3. подписаться на список рассылки
  4. официальные документы vim

1
Единственное, о чем я не подумал, так это о присоединении к списку рассылки: готово :)
Джеймс,

1
Это хорошее место, чтобы получить помощь и попрактиковать свои навыки vim, решая проблемы других людей.
ghostdog74

1
+1 для vimtutor - отличный способ усилить мышечную память.
Хэмиш Даунер

16

Еще два совета:

  • Используйте Vim для редактирования всего (электронная почта, веб-формы, код, ...). Когда что-то кажется медленным, вероятно, есть более быстрый способ сделать это. :helpgrepтвой друг.

  • Перейдите на http://vimgolf.com/ и соревнуйтесь. Так я узнал много советов и уловок. [ Заявление об ограничении ответственности : компания не несет ответственности за длительные периоды времени, которые могут « пропадать » во время соревнований на VimGolf ].


2
Отлично, про вимгольф я не знала!
Джеймс

1
@Autopulated: добавлен отказ от ответственности.
Johnsyweb 05

2
@Johnsyweb: Я действительно хочу иметь возможность использовать vim для всего, но как? Получение правильного клона vim внутри каждой веб-формы было бы идеальным - потому что все надстройки браузера, которые я нашел, обычно реализуют только небольшое случайное подмножество функций vim и переназначают привязки клавиш, чтобы учесть тот факт, что браузеру все еще требуется доступ к определенным раскладкам клавиш.
Conrad.Dean 05


10

Вот как я изучил Vim (и множество других вещей). Это довольно просто.

Просмотрите справочные документы и найдите команду для того, чем вы занимаетесь постоянно. Например, удалить целое слово. Постарайтесь запомнить это.

Теперь, в следующий раз, когда вы обнаружите, что нажимаете «xxxxx», чтобы удалить слово, остановитесь, верните его и используйте новую команду. Если нужно, посмотрите это. Поэтому вместо того, чтобы нажимать «xxxxxx», вы возвращаетесь и нажимаете «dw».

Делайте это снова и снова, сначала это будет медленным, но в конечном итоге останется.

Как только у вас будет эта команда, начните сверху. Найдите другую команду для действия, которое вы делаете все время ...

Вы будете удивлены, насколько быстро таким образом вы освоите новые команды и техники.


7

Переназначение / отключение клавиш со стрелками, как было предложено, - отличный способ заставить себя не использовать их.

Еще одна вещь, которую следует учитывать: если нажатие Esc на клавиатуре вообще неудобно, вы можете переназначить Caps Lock на Esc в своей ОС. Для меня это был чрезвычайно полезный шаг, так как Esc неудобно дотягивать до моей базы знаний, и это было еще одним препятствием, которое удерживало меня в режиме вставки (так как из него было трудно выйти). Наличие Esc на Caps Lock делает его крошечным, а переход в режим вставки и выход из него происходит очень быстро.

Для изучения продвинутых вещей в Vim лучшим ресурсом является: help, но для получения основ вам просто нужно это сделать; это прежде всего мышечная память. Вы говорите, что знаете поиск. Сознательно используйте его как инструмент навигации. Поиск [/,?] И поиск на основе строковых символов [f, F, t, T] являются одними из ключевых инструментов Vim nav. Просто используйте их; в сочетании с отключенными клавишами управления курсором вы сможете перемещаться по мышечной памяти в кратчайшие сроки.

Текстовые объекты. Легко одна из лучших функций редактора. Это еще одна вещь, которую нужно немедленно практиковать сознательно. Такие слова, как «yiw», «dit» и т. Д., Такие мощные и быстрые; изучая и используя только их, вы почувствуете себя пользователем Vim.

После того, как у вас есть текстовые объекты и базовая навигация, пора переходить к чтению и обучению на: help регулярно и поиску в Интернете отличных плагинов. Серьезно, вы можете использовать Vim годами и получить "ага!" момент случайно наткнулся на какой-то непонятный лакомый кусочек в: help, о котором вы никогда не знали.


Вместо переназначения на Caps Lock я бы предложил Ctrl-C. Его легко набрать, и он хорошо знаком пользователям Linux.
BandGap

6

Смотрите эту ветку: Какое сочетание клавиш в Vim является наиболее продуктивным?

Особенно первый ответ.


3
Как автор «первого» ответа, я должен сказать, честно говоря, что это не обязательно лучшее руководство для общего улучшения вашего мастерства в редакторе. Он охватывает множество вопросов о том, что можно сделать с vi, если вы думаете о нем как о языке для выражения способов, которыми вы хотите управлять текстом, вашим экраном / терминалом и средой самого редактора. Тем не менее, многие вещи там довольно продвинуты.
Джим Деннис,

1
Я не так много узнал из этого ответа, что не думаю, что когда-либо узнал бы, читая документацию!
Джеймс


3

Как мне узнать больше?

Полностью прочтите руководство по vim (введите :h; вы можете просматривать оттуда). Так вы узнаете все движения и команды. Это очень полезно, если вы уже знаете основы и хотите совершенствоваться.

Какие ресурсы порекомендовали бы люди?

vim.org, просмотрите самые популярные скрипты vim . Проверьте их источники, если вы найдете что-то интересное. Или просто установите их и наслаждайтесь. Этот сайт содержит множество ссылок на скрипты, которые помогают просматривать исходный код на разных языках; и найти их там относительно легко.

StackOverflow.com также может помочь .


3

Я сделал эту игру, чтобы помочь своему племяннику учиться, но она работает только в Firefox и Chrome>. < http://kikuchiyo.org

На данный момент он просто занимается перемещением и входом в режим вставки. Бета-версия позволяет атаковать врагов световым мечом, «i» слева и «a» справа: P

Продолжайте изучать Vim, это того стоит!

:)


Теперь , что это действительно хорошая идея!
Джеймс

Обновление: сайт сейчас находится по адресу kikuchiyos-vim-game.herokuapp.com .
kikuchiyo 05


2

Я до сих пор использую клавиши со стрелками для перемещения (!).

Я не вижу в этом проблемы.

Честно говоря, какова вероятность того, что вам придется использовать vim и клавиатуру без клавиш со стрелками?

Вы знаете, большинство людей используют vim, потому что он выполняет свою работу (да ладно, потому что они освоили его до уровня, когда он выполняет свою работу за них), а не для того, чтобы быть элитарными (например, не использовать клавиши со стрелками).

Несколько советов по улучшению ваших знаний о vim:

  • периодически открывайте справку vim в случайном месте и читайте о какой-то особенной функции. Это займет у вас пару минут. Возможно, вы не будете использовать эту функцию в течение следующих X лет. Но если вам повезет, вы попадете в ситуацию, когда увидите, что можете применить свои знания об этой функции для достижения определенной задачи. Вы снова откроете справку, чтобы освежить свою память. После использования этой функции на практике несколько раз она закрепится. На этом этапе ваши знания vim будут улучшены.
  • используйте: helpgrep, чтобы копаться в случайных местах документации. Если вам нужно что-то сделать и вы найдете место, где это объясняется в документации, не останавливайтесь на достигнутом. Прочтите фрагмент документа еще раз. Найдите ключевые слова. Для каждого ключевого слова используйте ключевое слово: helpgrep, чтобы обнаружить логические связи с другими частями документации vim.

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

1
Использование клавиш курсора для перемещения курсора на короткие расстояния может быть столь же эффективным, как использование клавиш [h], [j], [k], [l] ... если ваши пальцы случайно оказались рядом с ними по какой-то другой причине. Использование любых линейных движений курсора ужасно для более чем нескольких столбцов или строк движения. Обычно лучше подумать о том, что вы ищете, и выразить это непосредственно в vi, используя / или? команды и регулярные выражения. Последний кусок текста рядом с foo? G? Foo [Enter] (шесть нажатий клавиш). Первая строка с «bar ... что-то ... bang in it? 1G / bar. * Bang [Enter] (около дюжины нажатий клавиш) ... и так далее.
Джим Деннис,

Хотя клавиши со стрелками, вероятно, более эффективны, чем нажатие на мышь, если вы печатаете с помощью клавиш домашней строки для перегруппировки рук после набора последовательности символов, то для ввода одной из основных клавиш перемещения не требуется движения. из «j», «k», «l» и легкое «подергивание» влево, чтобы получить клавишу «h». Если вы делаете что-то в стиле Vim, ваши руки всегда должны быть ближе к клавишам домашней строки, чем к клавишам со стрелками. Продолжайте практиковаться, и вы получите это. :)
kikuchiyo


2

способ, которым я перестал использовать клавиши со стрелками, не отключал их (я все еще использую их в режиме вставки), но если вы думаете об этом, если вы хотите пойти вправо, используйте свой мизинец, который является lключом, идите влево Указательным пальцем на hклавишу, & безымянным пальцем вверх («прозвонить») kключ и «снять» jключ.

Итак, первая из четырех цифр на вашей руке (забудьте о большом пальце), указательная - крайняя левая, а мизинец - крайняя правая. Используйте выражение «звоните вверх», как в телефонном звонке, для безымянного пальца вверх, а среднему пальцу некуда идти, кроме как вниз.

Я также обнаружил, что очень помогает забыть о названиях клавиш (h, j, k, l). Не существует хорошей мнемоники для их запоминания, которую я нашел, и не так уж много сопоставлений с использованием этих ключей.





Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.