Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Posts Tagged ‘Vim

Конфігурація Vim, вкотре

with 10 comments

Я недавно змінив свою Xubuntu 12.04 на Ubuntu 15.04. Так, я три роки нічого не оновлював, але все працювало ок. Тільки от нові гостьові доповнення в машинах Virtualbox не хотіли працювати з моїм Virtualbox (а той чомусь не хотів оновлюватись), а ще я вручну компілював драйвер для планшета Wacom Intuos, а той все одно не хотів працювати. Зате на 15.04 планшет працює без установки будь-яких драйверів.

І звісно доводиться знову ставити всі плагіни до Vim. Добре що в останній версії мого конфігу для цього використовується пакетний менеджер. Правда команду Vundle, як виявилось, перейменували в Plugin.

Тепер конфіг виглядає так:
Прочитати решту цього запису »

Advertisements

Written by bunyk

Травень 19, 2015 at 22:00

Оприлюднено в Інструменти

Tagged with

sudo :w

with 2 comments

Або як зберегти файл від імені суперкористувача, коли ви відкрили його в Vim як звичайний користувач і вже зробили забагато змін щоб перевідкривати?

:w !sudo tee %

Все. tee FILENAME означає взяти те що прийшло у stdin і записати в FILENAME. % – назва поточного файлу. А :w ! – “зберегти файл” перенаправивши його на вхід команді.


Реклама: Приєднуйдесь до роботи над підручником Vim!

Written by bunyk

Грудень 16, 2013 at 16:49

Оприлюднено в Інструменти

Tagged with

ЙЦУКЕН в Vim, нарешті

with 12 comments

Мені Дмитріш ще кілька років тому щось розповідав про те що з кирилицею в Vim незручно бо ж при переході в нормальний режим потрібно повертатись до латинської розкладки. А я все терпів. Чому я нарешті вирішив розібратись – великий секрет. (А хоча, чому секретничати. Файл в якому я от набираю цей текст (в Vim) називається emacs_cheatsheet.txt 🙂 ).

Так от, є спосіб зробити так, аби українська вмикалась лише в режимі вставки, чи в нормальному режимі наприклад при введенні шаблону пошуку. При введенні команд в рядку статусу за замовчуванням спершу вмикається латиниця. Але можна перемкнутись на кирилицю (якщо раптом вводите команду заміни) за допомогою комбінації Ctrl+6. Аби таке працювало необхідно аби Vim було скомпільовано з опцією +keymap, і аби в каталозі $VIMRUNTIME/keymap/ містився відповідний файл ukrainian-jcuken.vim. Дякую Anatoli Sakhnik за те що він ще в 2007-му його створив. Тепер, виконуємо, чи прописуємо в .vimrc команду:

set keymap=ukrainian-jcuken

Крім того, виявилось що розкладка яку зробив Анатолій розділові знаки на цифровому ряду розміщує якось не дуже стандартно. Тому довелось виправити її ось так:

\/	.
?	,
@	"
#	№
$	;
^	:
&	?

Єдине що ще незвично – так це перемикання розкладки по Ctrl+6, я хотів був її на Caps Lock перемапити, але виявилось що цією клавішею займеться ОС.

Але комбінації клавіш в пам’яті людини – справа контексту. Якось я запам’ятав що вкладки термінала і браузера перемикаються по Ctrl+Pg Up / Down, а в Vim – gt / gT, то й до іншої комбінації зміни розкладки в такому контексті звикну. Хоча цей документ набирати все ще складно.

Written by bunyk

Вересень 28, 2013 at 13:08

Оприлюднено в Інструменти

Tagged with

Vim, Vundle, Solarized

with 6 comments

Vim – це текстовий редактор, який має кілька менеджерів пакетів. Можливо їх навіть більше ніж в Windows, тому що враховуючи те що найкращий менеджер пакетів для Windows – Cygwin.

Зараз для мене якраз актуально розповісти про те як швидко розгорнути Vim в звичній конфігурації. Розповідатиму мінімально на прикладі теми Solarized.

Отож, перше (нульове – це мати в системі git) що треба зробити – встановити сам менеджер пакетів:

$ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

Далі – заповнити .vimrc наступним:

"----------- VUNDLE ---------------------
set nocompatible
filetype off

set rtp+=~/.vim/bundle/vundle/
call vundle#rc()

Bundle 'gmarik/vundle'
Bundle 'altercation/vim-colors-solarized'

filetype plugin indent on     " required!
"------------- END VUNDLE ---------------

syntax enable
set background=dark
colorscheme solarized
set t_Co=16

Додавати пакети треба в .vimrc там де я вже додав два потрібні, за допомогою команди Bundle, параметром якої є репозиторій GitHub, пряме посилання на .git-файл, чи просто назва скрипта на vim.org/scripts.

Після додання пакетів в .vimrc потрібно виконати команду :BundleInstall і вони інсталюються.

Далі виявиться що потрібно налаштувати кольори в відповідному терміналі, в якому ми Vim запускатимемо. В Gvim все і без цього буде нормально. В Cygwin я вже забув як налаштував, а в Terminal 0.4.8 для xfce ось так:

$ wget -O ~/.config/Terminal/terminalrc https://raw.github.com/altercation/solarized/master/xfce4-terminal/dark/terminalrc

Для Guake трішечки складніше:

$ git clone https://github.com/coolwanglu/guake-colors-solarized.git
$ guake-colors-solarized/set_dark.sh

І от маємо обидва термінали з Vim:
solarized vim in terminals

Written by bunyk

Липень 2, 2013 at 01:16

Оприлюднено в Інструменти, Кодерство

Tagged with ,

Чудернацькій клавіатурі – відповідний редактор

with 3 comments

В продовження клавіатурної теми, хотів згадати про те як впливає на дизайн програми машина за якою (для якої) її писали.

Наприклад всі вже давно знають що Vi розробляли на терміналі, в якому не було окремих клавіш управління курсором, а вони були розміщені на hjkl. Але це не найцікавіше. Ви гляньте де знаходиться Esc. Нє, ну ви гляньте!
Прочитати решту цього запису »

Written by bunyk

Липень 29, 2012 at 01:06

Оприлюднено в Інструменти, Всяке

Tagged with ,

Програмна археологія і проблема власника коду

with 14 comments

Уявіть собі, виявляється така дисципліна програмної інженерії як археологія існує досить давно, і в 2001 спеціально по ній навіть проводили конференцію.

Ну і я, собі теж, маючи необхідність прикрутив до Vim таку лопату, яка дозволяє копати в Mercurial:

103 command! nargs=* Blame call Blame(<f-args>)
104 function! Blame()
105     " gets zero, one or two params
106     " first param – revision to annotate (if false – don’t pass)
107     " second param – pattern to search
108     let revision = (a:0 >= 1) && a:1 ? ‘ -r ‘ . a:1 :
109     let pattern = (a:0 >= 2) && a:2 ? ‘| grep ‘. a:2 :
110
111     let command = ":!hg blame -nvud % ". revision . "| cat -n ". pattern ." | less"
112     execute command
113 endfunction

Лопата жахлива бо я на VimScript ніфіга не вмію писати. І взагалі не люблю мови в яких оператор конкатенації рядків – це крапочка. 🙂

Але вона працює, і дозволяє вияснити хто, коли і під яким приводом (зазвичай посилання в Jira) написав код на який я дивлюсь. Найчастіше якщо трапляється якийсь великий WTF то виявляється що це написав мій CEO ще в 2008, не пояснюючи мотивів, бо тоді й не було кому пояснювати. 🙂 Ну, і його питати немає сенсу, не тому що субординація, чи він зайнятий, а тому, що це було дуже давно, і звісно він не пам’ятає.

Але загалом все нормально. Тільки от з’являється проблемка. Коли я хочу збільшити пов’язаність якогось модуля, доводиться робити переміщення методів. Коли я хочу щоб метод похудав на 100-200 рядочків, доводиться робити витягнення метода. Обидва рефакторинги переміщують рядки коду, і для Mercurial змінюють його власника, бо він бачить лише що я видалив одні рядки, і вставив якісь інші. Те що вони однакові він не бачить.

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

Зібравши один модуль я навіть вгорі копірайти написав, аби в разі чого люди знали що за поясненнями можна іти не тільки до мене.
І от маю дилему – привласнювати код якось невиховано, але якщо наступна моя задача знову полягатиме в перечитуванні 300-рядкового методу, то я сильно пожалію що залишив код в такому стані.

Тепер питання: а вам доводилось займатись археологією? Що за проект? Як враження? 🙂

Written by bunyk

Червень 20, 2012 at 19:57

Оприлюднено в Кодерство

Tagged with , ,

Назад в термінал

with 7 comments

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

  1. Нормальна підтримка терміналу. З curses, що дає можливість використовувати кольори, пейджери, і взагалі bpython.
  2. Можливість починати роботу командою vim -p `hg st -n` (відрити у вкладках всі файли які були змінені в поточній ревізії).
  3. Можливість змінювати розмір шрифту на ходу – можна дивитись на код з висоти пташиного польоту по 90 рядків на екран, і до 40 рядків при яких можна відкинутись назад на крісло і медитувати на якусь цікаву функцію.

Прочитати решту цього запису »

Written by bunyk

Травень 28, 2012 at 14:37

Оприлюднено в Інструменти

Tagged with