PostgreSQL coub express.js freeware git jquery laravel links linux macos mysql node.js php powershell python ubuntu vim virtualbox анекдот блог игры интересно стихи цитаты

Врядли это для кого-то открытие конечно, но тем не менее.
У mkdir (man mkdir) есть ключик -p который позволяет создавать довольно интересные структуры подпапок одним движением. Например
mkdir -p ./one/two/three
создаст три вложенных друг в друга папки внутри текущей директории.
Можно сделать несколько интереснее
mkdir -p ./one/{two1,two2,two3}/three
что даст нам такую структуру (допустим что мы запускали это все из домашней папки)
~/one/two1/three
~/one/two2/three
~/one/two3/three
Ну и ещё раз если вдруг кто не понял что происходит
mkdir -p ./one/{two1,two2,two3}/{th1,th2,th3}
Создает такую структуру
~/one/two1/th1
~/one/two1/th2
~/one/two1/th3
~/one/two2/th1
~/one/two2/th2
~/one/two2/th3
~/one/two3/th1
~/one/two3/th2
~/one/two3/th3
Ну и понятное дело фигурные скобки можно использовать не только с mkdir, в этом примере мы чистим папки с кешем и логами для трех типовых проектов лежащих в текущей папке
#!/bin/bash
rm -rf {proj1,proj2,proj3}/{logs,cache}/*


Vim: скринкасты
October 29, 2013
Тут буду подкладывать ссылок на кладбища скринкастов по виму
  1. Vim Tutorial Videos - для начинающих, от базовых до очень интересных вещей, веселый автор
  2. Vimcasts.org - широко известный ресурс, просто тонны всяких vim-вкусняшек, обязательно к посещению
  3. Destroy All Software - ворованный каталог из 80 скринкастов одного очень толкового дядьки. Кроме вима также рассматриваются git, TDD, *nix и т.д. Каталог можно глянуть вот тут.
  4. udioica.blogspot.ru - это не совсем скринкасты, а анимированные gif-ки с решениями задач с vimgolf.com. Вообще-то я не уверен что это человек. Больше похоже на vim-терминатора. Я не представляю как это все можно запомнить.
vim


Очень неудобно бывает после правки .vimrc закрывать сессию полностью чтобы применить внесенные изменения. Можно этого избежать довольно легко:
# выполните в редакторе :echo $MYVIMRC чтобы понять что это за переменная
source $MYVIMRC
Чтобы было удобнее жить можно добавить пару команд покороче, например так:
" edit ~/.vimrc file
command! RcEdit e $MYVIMRC
" reload ~/.vimrc config
command! RcReload source $MYVIMRC
vim


Я пользуюсь этим в виме не часто пока и постоянно забываю как там танцуется эта замена, самый простенький вариант примерно такой: имеем файл пример с таким содержимым:
./folder1/folder2/file1.txt
./folder1/folder2/file2.txt
./folder1/folder2/file3.txt
./folder1/folder2/file4.txt
./folder3/folder5/file5.txt
./folder3/folder5/file6.txt
./folder3/folder5/file7.txt
./folder4/folder6/file8.txt
./folder4/folder6/file9.txt
./folder4/folder6/file10.txt
Допустим нужно отрезать из каждой строки все что касается пути, то есть чтобы остались только имена файлов. Переходим в командный режим и выполняем
:%s/\.\/.*\///gc
Выглядит довольно похабно, но в общем-то главное знать что искать. Синтаксис замены вообще примерно такой
:%s/serach-str/replace-str/g
search-str - то что ищем, replace-str - то на что заменяем, просто в примере выше использовано регулярное выражение и слешей много из-за обычного скрина точки и слешей. Модификатор c в примере означает что каждое найденное совпадение и соответственно его замену нам надо будет подтвердить, иначе все найденное в файле будет молча заменено.

Интересный нюанс: чтобы заменить что-то с переводом строки \n придется использовать \r то есть примерно вот так
:%s/\n/ -- \r/gc
Либо как вариант, тоже самое
# чтобы ввести ^M жмем (прямо в строке набора команды) Ctrl+v - Enter
:%s/\n/ -- ^M/gc
vim


Для этого понадобится установить xmllint
# для ubuntu
sudo apt-get install libxml2-utils

В .vimrc это будет выглядеть примерно так
command FormatXml execute "%!xmllint --format --recover - "
После этого вызов в редакторе чтобы отформатировать текущий файл будет таким:
:FormatXml
Другие бинды на ваше усмотрение конечно.
vim


aghr