Wednesday, March 23, 2011

Изменение символической ссылки

Однажды столкнувшись с необходимостью быстро переключать символическую ссылку на различые директории, я долго не мог понять как это сделать одной командой. Сначала я никак не мог пересоздать симлинку поверх существующей, потом возникла проблема с тем, что симлинка ссылается на директорию и новая линка создавалась в директори...
Однако все оказалось проще пареной репы:
ln -nfs dir_name link_name перевесит ссылку link_name на папку dir_name.
-s - тут все понятно, указываем, что хотим симлинку
-f - опция разрешает переписывать существующую симлинку
-n - тут весь смак: опция говорит не обращать внимания на то, является ли объект файлом или директорией

PS. Необходимость возникла при работе с двумя ветками проекта, расположенных в разных папках, скажем, project_trunk и project_branch, в то время как сервер смотрел на симлинку project.

Thursday, March 03, 2011

Vim: табуляции и пробелы

Периодически у меня возникали различные проблемы с пробелами и табуляциями. Вот несколько полезных настроек, которые помогли мне с ними разобраться:
:set expandtab - заменяет табуляции при вставке на пробелы
:set tabstop=4 - устанавливает количество пробелов, на которые нужно заменять табуляции
Стоит отметить, что после использования expandtab только новые табуляции будут заменяться на пробелы. Чтобы привести все табуляции к текщей политике, можно использовать команду :retab
Для изменения количества пробелов, которые используются для выравнивания строк, используется переменная shiftwidth, например:
:set shiftwidth=4
Для того, чтобы увидеть табуляции и прочие спецсимволы, можно воспользоваться командой:set list
Команда
:set nolist скроет спецсимволы обратно.
NB: табуляции показываются как ^I, поэтому их можно искать (вне зависимости от того, показываются они или нет) используя команду /C-VC-I (/ control-V control-I), и если включена подсветка, то первая найденная табуляция будет подсвечена.

Labels:

Vim: переменные

Для работы с переменными помимо известной большинству команды :set foo=bar (которая установит значение переменной foo в bar) есть еще ряд иногда полезных команд:
:set - просмотреть все переменные, значение которых отличается от предустановленных
:set all - просмотреть все переменные
:set foo? - просмотреть текущее значение переменной bar
:set foo+=bar - изменить переменную foo, добавив в список значений bar 
:set foo-=bar - изменить переменную foo, убрав в список значений bar 
:setlocal foo - применить только для текущего буфера

Labels: