Які найчастіше використовуються команди / клавіші vim?


112

Я програмування Ruby, що намагається перейти з Textmate на MacVim, і у мене виникають проблеми з переходом через перелік списків речей, які ви можете зробити в VIM, і всіх клавіш для них. Я втомився чути "Ви можете використовувати" Я "для вставки тексту, або" А "для додавання тексту після символу, або" А "для додавання тексту в кінці рядка, або ..." Я не можу уявити кожен використовує всі 20 різних натискань клавіш для навігації по тексту, 10 клавіш, щоб почати додавати текст, і 18 способів візуального вибору внутрішнього блоку. Або ти !?

Моїм ідеальним шахрайським аркушем буде 30-40 найпоширеніших натискань клавіш або команд, які кожен використовує для написання коду щодня, разом із абсолютними необхідними плагінами, якими рубіністи користуються щодня та 10 найбільш використовуваних команд для них. Теоретично, як тільки я маю це і починаю настільки ж добре володіти VIM, як і я в Textmate, тоді я можу почати вивчати тисячі інших команд VIM, які зроблять мене більш ефективним.

Або я взагалі навчаюся VIM неправильно?


9
Обов’язкове посилання на cafepress.com/geekcheat.11507711 .
geekosaur

1
Позначається для видалення "ruby" та додавання "клавіш-комбінацій". Здається більш доречним.

"Чи я взагалі навчусь Віму неправильно?" - Ну, вам просто потрібно почати з якихось основ, і пам’ятайте, що ви все ще будете вивчати більше команд на рік відтепер. Можливо, колись ти справді використаєш усі команди! Але ніхто їх не використовує з першого дня.
Каскабель

Відповіді:


306

Ось підказковий лист, який я написав один раз, з командами, які я фактично регулярно використовую:

Список літератури

Загальні

  • Майже всім командам може передувати число для повторного підрахунку. напр. 5dd видалити 5 рядків
  • <Esc> виводить вас з будь-якого режиму і повертається до командного режиму
  • Команди, які передують : виконуються в командному рядку внизу екрана
  • : допомогти допомогти з будь-якою командою

Навігація

  • Рух курсору: ← hjk l →
  • По словах:
    • w наступне слово (за допомогою пунктуації); W наступне слово (пробілами)
    • б зворотне слово (за допомогою пунктуації); B зворотнє слово (пробілами)
    • e кінцеве слово (за допомогою пунктуації); Кінцеве слово (пробілами)
  • По рядку:
    • 0 початок рядка; ^ перший непробільний простір
    • $ кінець рядка
  • За абзацом:
    • { попередній порожній рядок; } наступний порожній рядок
  • За файлом:
    • gg початок файлу; G кінець файлу
    • 123G перейти до конкретного номера рядка
  • За маркером:
    • mx встановити позначку x ; 'x переходимо до позначки x
    • '. перейти до позиції останнього редагування
    • '' повернутися до останньої точки перед стрибком
  • Прокрутка:
    • ^ F повний екран вперед; ^ B повний екран назад
    • ^ D половина екрана вниз; ^ U до половини екрана
    • ^ E прокрутіть один рядок вгору; ^ Y прокрутіть один рядок вниз
    • zz середня лінія курсору

Редагування

  • U скасувати; ^ R повторити
  • . повторити останню команду редагування

Вставлення

Усі команди вставки завершуються, <Esc>щоб повернутися в режим команд.

  • я вставляю текст за курсором; Я вставляю текст на початку рядка
  • додати текст після курсору; Текст Append після кінця рядка
  • o відкрити новий рядок внизу; O відкрийте новий рядок вище

Зміна

  • r замінити один символ; R замініть кілька символів
  • s змінити один символ
  • cw змінити слово; З зміною до кінця рядка; cc змінити всю лінію
  • c<motion> змінює текст у напрямку руху
  • ci ( зміни в дужках (див. вибір текстових об'єктів для отримання додаткових прикладів)

Видалення

  • x видалити діаграму
  • dw видалити слово; D видалити до кінця рядка; дд видалити весь рядок
  • d<motion> видаляє в напрямку руху

Вирізати і вставити

  • yy рядок копіювання в буфер; dd вирізати лінію в буфер для пасти
  • p вставте буфер під лінією курсору; P Вставте буфер над лінією курсору
  • xp поміняйте місцями два символи ( x для видалення одного символу, потім p, щоб повернути його після позиції курсору)

Блоки

  • v візуальний блок потоку; V лінія візуального блоку; ^ V візуальний блок стовпця
    • більшість команд руху поширюють блок на нове положення курсору
    • o переміщує курсор на інший кінець блоку
  • d або x вирізати блок в буфер вставки
  • y блоку копіювання в буфер вставки
  • > відступ блоку; < невідповідний блок
  • gv повторний вибір останнього візуального блоку

Глобальний

  • :% s / foo / bar / g підміняють усі випадки "foo" на "bar"
    • % - діапазон, який вказує кожен рядок у файлі
    • / g - прапор, який змінює всі події в рядку, а не лише перший

Пошук

  • / шукати вперед; ? пошук назад
  • * пошук вперед для слова під курсором; # пошук назад за словом під курсором
  • n наступний матч у тому ж напрямку; N наступний матч у зворотному напрямку
  • fx вперед до наступного символу x ; Fx назад до попереднього символу x
  • ; знову рухатися до того ж персонажа в тому ж напрямку; , перейдіть знову до того ж символу у зворотному напрямку

Файли

  • : w записати файл на диск
  • : wname записати файл на диск якname
  • ZZ записує файл на диск і закриває
  • : n редагувати новий файл; : n! редагуйте новий файл без збереження поточних змін
  • : q кинь редагувати файл; : q! киньте редагування без збереження змін
  • : e знову відредагувати той самий файл (якщо його змінити поза vim)
  • : е. провідник каталогів

Windows

  • ^ Wn нове вікно
  • ^ Wj до наступного вікна; ^ До попереднього вікна
  • ^ W_ максимізувати поточне вікно; ^ W = зробіть всі вікна рівними за розміром
  • ^ W + збільшення розміру вікна; ^ W - зменшення розміру вікна

Навігація по джерелам

  • % перейти до відповідних дужок / дужок / дужок або мовного блоку, якщо мовний модуль завантажений
  • gd перейти до визначення локального символу під курсором; ^ O повернення до попереднього положення
  • ^] перейти до визначення глобального символу (потрібен tagsфайл); ^ T повернення до попередньої позиції (довільний стек позицій підтримується)
  • ^ N (у режимі вставки) автоматичне завершення слова

Показати локальні зміни

Vim має деякі функції, які дозволяють легко виділити лінії, змінені з базової версії в керуванні джерелами. Я створив невеликий скрипт vim, який полегшує це: http://github.com/ghewgill/vim-scmdiff


1
+1 Відносно мінімально, хоча, маю визнати, я не знаходжу себе за допомогою будь-яких команд вікна або навігації нічим іншим, крім клавіш зі стрілками / pageup / pagedown / home / end та gg / G. О, і для навігації по номеру рядків ви також можете використовувати: 123 (командний режим).

2
Приємний чіт-лист. Я б додав ^ w ^ w, щоб перейти через вікна ,: x замість ZZ для послідовності, tx вперед перед символом і Tx назад.
romainl

Слід зазначити, що це лише основи того, що я використовую. Я створив цей список як інструмент для навчання vim іншим людям. Я використовую безліч інших команд рідше, а також створюю різні псевдоніми та макроси, які допомагають мені ефективніше використовувати vim.
Грег Хьюгілл

2
Якщо ви хочете уникнути Escключа (і RSI?), Можете скористатися ^[. ^cпрацює також (але не розширює абревіатури). Джерело: vim.wikia.com/wiki/Avoid_the_escape_key
Ліан

22

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

Це найбільша річ у навчанні VIM.


Я ніколи цього не бачив, дуже класна довідка після того, як ви знаєте, що виконують команди.
amccormack

3
"Графічна" частина є марною, якщо у вас немає клавіатури qwerty.
romainl

5
Мене дивує те, що розміщення посилання (яке вже було розміщено на смерть до цього року) привертає таку велику увагу під час проходження додаткової милі, яку інші плакати не ставлять…
Lieven Keersmaekers

Очевидний переможець у публікаціях vim: stackoverflow.com/questions/1218390/…
Джастін Томас


4

Ви пробіглися через вбудований підручник Vim? Якщо ні, перейдіть до командного рядка та введіть vimtutor. Це прекрасний спосіб вивчити початкові команди.

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

В Інтернеті є кілька хороших поширених запитань та чітких таблиць для vim. Я рекомендую шукати vim + faqта vim + cheatsheet. Cheat-Sheets.org # vim є хорошим джерелом, як і вікі Vim Tips .


Я щойно дізнався про це, і на щастя, він встановлюється на Mac. Спробуйте зараз (о 1 ранку…)
Клінтон

Я давно використовую vim, і це одна з перших речей, які я встановлюю на машину. MacVim , на Mac OS дуже приємно. Я схильний компілювати vim з джерела на більшості ящиків Linux, якими я користуюся, просто тому, що більшість дистрибутивів не є поточними або не мають правильної мовної підтримки. Я тримаю поточну версію мого ~/.vimrc, ~/.gvimrcі ~/.vimкаталог в тар-куля для того, коли я повинен створити що - то. Копіювання цього файлу та вилучення файлів дає мені змогу виконувати vim з усіма моїми звичайними командами та кольоровими схемами за лічені хвилини в Windows, Macs та Linux.
Бляшаний чоловік

3

Те , що більшість людей зробити , це почати з голою основою, як , може бути i, yw, yyта p. Ви можете продовжувати використовувати клавіші зі стрілками для переміщення, вибору тексту за допомогою миші, використання меню тощо. Потім, коли щось уповільнює вас, ви шукаєте швидший спосіб зробити це, і поступово додаєте все нові і нові команди. Ви можете навчитись одній новій команді на день деякий час, тоді вона буде тривати до однієї на тиждень. Ви відчуєте себе досить продуктивно через місяць. Через рік у вас з'явиться досить солідний репертуар, а через 2-3 роки ви навіть не будете свідомо думати, що пальці набирають, і це буде дивно, якщо вам доведеться прописати це комусь. Я дізнався vi в 1993 році і досі підбираю 2 або 3 нові команди на рік.


3

@Greg Hewgill's cheatsheet дуже хороший. Я почав свій перехід від TextMate кілька місяців тому. Зараз я настільки ж продуктивний, як і з ТМ, і постійно дивуюсь силі Віма.

Ось як я перейшов . Можливо, це може вам стати в нагоді.

Grosso modo, я не думаю, що це гарна ідея зробити радикальний перехід. Vim дуже різний, і найкраще йти поступово.

І щоб відповісти на ваше запитання, так, я використовую все iaIAoOщоденне для входу в режим вставки. Спочатку це, звичайно, здається дивним, але ви про це не думаєте через деякий час.

Деякі команди неймовірно корисні для будь-яких завдань, пов'язаних з програмуванням:

  • rі Rзамінити символи
  • <C-a>і <C-x>збільшувати та зменшувати кількість
  • citщоб змінити вміст HTML - тега і його варіанти ( cat, dit, dat, ci(і т.д.)
  • <C-x><C-o>(відображено на карті ,,) для окомплектування
  • вибір візуального блоку з <C-v>
  • і так далі…

Коли ви звикли до способу Vim, вам стає важко не потрапляти oабо xвесь час під час редагування тексту в якомусь іншому редакторі чи текстовому полі.


2

Я не можу собі уявити, щоб кожен користувався всіма 20 різними натисканнями клавіш для навігації по тексту, 10 клавіш для того, щоб почати додавати текст, і 18 способів візуального вибору внутрішнього блоку. Або ти !?

Я згоден.

Теоретично, як тільки я маю це і починаю настільки ж добре володіти VIM, як і я в Textmate, тоді я можу почати вивчати тисячі інших команд VIM, які зроблять мене більш ефективним.

Це правильний спосіб зробити це. Почніть з основних команд, а потім підберіть ті, які підвищують вашу продуктивність. Мені подобається слідкувати за цим блогом, щоб отримати поради щодо покращення своєї продуктивності за допомогою vim.


2

tuxfiles.org містить досить хороший шпаргалку. Я думаю, що для вивчення команд є кілька моментів:

  • Читайте шпаргалку регулярно. Не турбуйтеся про те, щоб користуватися ними, або запам’ятовуючи всі ключі, просто знайте, що команда існує. Знайдіть команду та використовуйте її, коли виявите, що робите щось повторюване.
  • Якщо ви виявляєте, що регулярно щось робите (наприклад, видалення цілого рядка після певного символу d$), перейдіть до швидкого пошуку в Google, щоб побачити, чи зможете ви знайти команду для цього.
  • Запишіть команди, які, на вашу думку, виявляться корисними, і зберігайте цей список там, де ви зможете побачити його під час написання коду. Я б заперечував над тим, щоб щось надрукувати, і замість цього я б закликав вас використовувати повідомлення про це лише кілька команд одночасно.
  • Якщо можливо, дивіться, як інші програмісти використовують vim, і запитайте їх, які команди вони використовують, коли ви бачите, як вони роблять щось цікаве.

Крім цих порад, є кілька основних понять, які ви повинні зрозуміти.

  • vim використовуватиме той самий символ, щоб представити ту саму функцію. Наприклад, для видалення рядка після використання символів d$. Виділити лінію після використання певного символу v$. Тож зауважте, що $вказуєте, що ви будете робити щось до кінця рядка, звідки зараз знаходиться ваш курсор.
  • uвідміняється та ctrl+rповторюється.
  • ставлячи число перед командою, воно буде виконуватися повторно. 3ddвидалить рядок, на якому знаходиться ваш курсор, і два наступні рядки, аналогічно 3yyскопіюйте рядок, на якому знаходиться ваш курсор, і два наступні рядки.
  • зрозуміти, як орієнтуватися по буферах, :lsщоб перелічити буфери, і :bn, :bpщоб переходити по них.
  • прочитайте підручник, знайдений у:help цьому. Це, мабуть, найкращий спосіб «вивчити мотузки», а решта команд ви дізнаєтесь за допомогою використання.

2

Помістіть це у свій .bashrc, щоб відкрити vim з останнім редагованим файлом у останньому відредагованому рядку

alias vil="vim  +\"'\"0"

1

Перейдіть до програми " Ефективне редагування" за допомогою vim та дізнайтеся, що потрібно для початку. Не все на цій сторінці важливо починати, тому вишню вибирайте, що хочете.

Звідти використовуйте vim для всього. "hjkl", "y" і "p" пройдуть вас довгий шлях, навіть якщо це не найефективніший спосіб. Коли ви зіткнетесь із завданням, для якого не знаєте магічного ключа, щоб зробити це ефективно (або зовсім), і ви виявите, що ви робите це більше, ніж кілька разів, перегляньте його. Потроху це стане другою природою.

Я виявив, що Vim страждає багато місяців тому (тоді, коли у нього не було "м" в кінці), але для отримання ефективності йому знадобилося лише тиждень стійкого використання. Я все ще вважаю це найшвидшим редактором, в якому можна зробити речі.


Посилання на "Ефективне редагування з vim" зараз мертве. Я думаю, що альтернативу можна знайти на robertames.com/files/vim-editing.html
Даміан Пауелл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.