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

Очень неудобно бывает после правки .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


В случае если macvim установлен через brew например, то нельзя просто взять и в файндере обычным способом ассоциировать с ним файлы. Его просто нет в папке /Applications потому что он ставится куда-то в дебри /usr/local/Cellar/macvim
Если кто-то ещё не догадался то нужно просто сделать ссылку на него в приложениях
ln /usr/local/Cellar/macvim/7.4-70/MacVim.app /Applications/MacVim.app
Ссылку мы делаем жесткую в этом случае, любознательные граждане могут полистать man ln
После этой процедуры macvim будет виден как обычное приложение.


Вообще по-старинке я предпочитаю var_dump но бывает что сапортишь что-то такое что.. словом и xdebug бывает полезен.
  1. Ставим сам xdebug (углубляться не буду в операционки, суть не в этом)
    # ubuntu/debian
    sudo apt-get install php5-xdebug
    
  2. После установки убедимся что его видно, все тип-топ
    php -m | grep xdebug
    
  3. Смотрим phpinfo() и ищем там секцию xdebug. Если все хорошо, то она там должна быть, если не хорошо - пробуем перезагрузить веб-сервер или php-fpm, смотря что у вас установлено. Если все равно не хорошо (sic!) - идем гуглить как вообще xdebug устанавливать. В секции xdebug ищем директиву xdebug.remote_port это порт на который будет стучать отладчик по умолчанию (с сервера на клиент отладчика, у нас клиент - это шторм). Его можно понятное дело изменить на ваше усмотрение, поправив значение в конфиге. По умолчанию это порт 9000. Едем дальше.
  4. В php.ini нужно добавить от такие инструкции и убедиться что их видно через браузер (тоже самое: если нужно - перезагружаем сервер)
    xdebug.remote_enable=true
    xdebug.remote_port=9000
    xdebug.profiler_enable=1
    xdebug.profiler_output_dir=/tmp
    
  5. Теперь веб-сервер будет пытаться законнектиться на порт клиента который мы указали в настройках (xdebug.remote_port) при каждой загрузке страницы. Теперь надо поднастроить наш проект в шторме под отладчик. Для этого нужно добавить в проект конфигурацию веб-приложения и удаленной отладки. Ниже скриншоты раскрывающие суть этой магии.
    Открываем конфигурацию проекта
    
    
    Добавляем конфигурацию веб-приложения
    Правим её
    Если нужно добавляем и правим сервер (хост смотрит на хост нашего проекта)
    Правим свойства удаленной отладки (после того как добавили конфиг конечно см. скриншот выше)
  6. Теперь осталось включить в шторме прослушку порта для отладчика. Для этого ищем кнопку на панели инструментов с телефонной трубкой как на скриншоте (или идем в меню Run и ищем там пункт "Start Listen PHP Debug Connections")
    
    
    Чтобы прекратить отладку эту прослушку нужно отключить.
  7. Теоретически все должно работать на данный момент. Итого мы имеем установленный на сервере xdebug который при каждом запросе страницы отправляет клиенту запрос на порт xdebug.remote_port (из настроек сервера) и клиент отладчика в виде шторма с готовым для подключения отладчика портом. Теперь можно ставить брейкпойнты в любом месте приложения и вызывать выбранный юзкейз в браузере. По достижению брейкпоинта шторм должен всплыть и станут доступны все фичи отладчика. Ссылка на официальную доку.
  8. Ещё маленькая деталь, отладчик в шторме должен быть настроен на тот же порт что и xdebug.remote_port. То есть на сервере прописываем куда будем стучать, а в шторме - где будем ловить подключение отладчика. Изменить номер порта в шторме можно в настройках проекта
    
    
    Про файрвол наверное лишнее писать, но если коннекта вдруг нет и порты при этом прописаны правильно, то имеет смысл глянуть в настройки стенки, может быть собака зарыта там.
php


aghr