Горячие клавиши к Vim

Standard

Когда надо быстро что-то подправить на серверах, не мучая IDE, vim очень пригодится. Для того чтобы привыкнуть уйдет может пару дней, но оно того стоит. У vim существуют 3 режима работы:

  1. Стандартный режим (по умолчанию, чтобы перейти в него из другого режима, нажмите Esc) — в нем можно выполнять команды
  2. Режим редактирования (включается по клавише i)
  3. Визуальный режим (клавиша v)

Внизу слева vim уведомит вас об используемом режиме.  Для того чтобы выполнить команду нажмите двоеточие и название команды.

Стандартный режим:

  1. h, j, k, l перемещение по тексту, т.е. ↑, ←, →, ↓ соответственно, можно использовать обычные клавиши перемещения, но так медленней
  2. u — отменить, <ctrl + r > — команда обратная отменить
  3. <shift + U>,  отменить/ вернуть прошлое действие, полезно когда нужно поменить лишь одно изменение
  4. ZZ или :wq сохранить и выйти
  5. CC очистить текущую линию и включить режим редактирования
  6. <shift + a> — включить режим редактирования и поставить курсор в конце линии
  7. dd — удалить линию, и запишет её в буфер
  8. o — включить режим редактирования, добавить пустую строку вниз и перевести туда курсор
  9. O — аналогично, но добавит строку вверх
  10. D — удалить все начиная с текущего курсора до конца строки и перевести курсор на 1 символ назад
  11. d — удаление вместе со следующим символом
    • $  - до конца линии
    • w -слова
    • e — текущего слова
  12. w — перемещение к первому символу следующего слова, b — тоже, только в обратную сторону
  13. e — перемещение к последнему символу текущего слова или следующего
  14. G  - в конец файла, gg — в начало файла
  15. <ctrl + O> — переместить курсор где был до редактирования
  16. :%s/old/new/g — заменить old слово на new в файле
  17. :%s/old/new/gc  - аналогично, но будет спрашивать подтверждение
  18. <shift + R> — replace mode, аналог набора текста при включенной клавише insert
  19. :r имя файла — вставить ниже текст из файла
  20.  $ — в конец линии
  21. <ctrl + G>- покажет линию где находится курсор
  22. <ctrl + u/d> — промотка половины экрана вперед, назад
  23. число + <shift + G> — перейти к линии
  24. Y — копировать в буфер
  25. p — вставить строку из буфера внизу
  26. P — аналогично, но на текущую строку

Визуальный режим:

  1. <shift + v> — выделить линию
  2. d  - удалить
  3. gv — выделить последнее выделяемое

Командный режим:

  1. /искомое — ищет строку, при последующем нажатии n или <shift + n> ищем вперед, назад соответственно
  2. newtab имя файла — откроет в новой вкладке содержимое файла, переход между табами gt/ gT
  3. firsttab, lasttab — no comments
  4. !команда — выйдет из редактора запустит в bash команду и вернется обратно

Хватит теории, покажу на примерах:

К примеру, вы редактируете php файл и хотите проверить его на синтаксис, вот команда:   !php -l %, в % — vim автоматически подставит текущее название файла. Чтобы облегчить себе жизнь отредактируйте ~/.vimrc вставив туда строки:

  • :synax on (включает подсветку кода)
  • :set number (отображает номер линии)

Дальше — больше, например вы хотите удалить 5 слов — d5w, удалить все начиная с 10 строки — 10G, <shift + v>, <shift + g>, d и все :) Сначала сложно и непривычно, но потом ко всему привыкаешь и начинаешь работать очень продуктивно

 

Особенности html и css

Standard
  1. height свойство span элемента не зависит от регистра
  2. В Chrome (да и в Safari вроде) возникает интересная ошибка security Error  при следующих обстоятельствах: при добавлении изображения с другого хоста на canvas и последующем вызове toDataURL(). Решение — загрузите на свой хост картинки.
  3. Данные в base64 на сервере необходимо сначала отделить от строки расширения, типа image/png.
  4. На данный момент невозможно определить высоту текста на canvas, хотя можно ширину (странно как-то). Приходится создавать невидимый элемент, в который записываем текст и определяем получившуюся высоту, но есть минус — см. пункт 1
  5. Изображение надо помещать на canvas по событию onload, сам браузер не сообразит :(
  6. В chrome 20 версии на Mac OS при использовании drag&drop метода e.dataTransfer.getData(mime_type, data) нужно учесть что mime_type — не должен быть неизвестным типом, типа «wtf-type», более того, чтобы это работало в IE 9 разрешено использовать только Text и URL