LINUX.ORG.RU

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

Веб-разработка в 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
()

Появился PyCharm Community Edition

Форум — Talks

Собственно сабж. http://www.jetbrains.com/pycharm/

 ,

HunOL
()

С чего начать изучение электроники

Форум — Talks

Решил таки наконец то попробовать себя в микроэлектронике (вообще хотел давно, но всё как-то руки не доходили).
Конечная цель - создание программируемых система («умный дом», различные датчики, портативная электроника) + желательно починка чего нибудь простого.
Однако мой текущий уровень практически на нуле (пайка джостиков сеги + подобные простые мелочи), в связи с чем хотелось бы попросить совета с чего вообще начинать знакомство со всем этим. Приветствуются истории успеха.

cast Zubok

P.S. Вдруг кто знает. А реально ли будет поступить на Аспирантуру за границей при наличии Российского высшего образования (бакалавриат) по такой специальности?

 , ,

najlus
()

Годных js-библиотек тред

Форум — Web-development

Осваиваю разработку веб-морд, открыл для себя jQuery, underscore.js и date.js. Что ещё посмотреть полезное/универсальное? Must have, одним словом.

 ,

ollowtf
()

Где купить такой блокнот?

Форум — Talks

http://www.3dnews.ru/news/655400

Собственно как мне, находясь в РФ/ДС2 получить такую игрушку? Где купить?

Приветствуются ссылки на отечественные и зарубежные интернет-магазины в том числе с китайскими аналогами.

Ъ: Устройство на e-ink со стилусом. Можно рисовать картинки. Хранит до 2000 страничек, есть варианты, разлинованные под ежедневник. Можно подключать к PC по USB.

P.S. В статье речь про устройство на ЖК дисплее, но я ищу e-ink

 

trex6
()

что-то не так (в консоли)

Форум — Talks

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

Не припомню когда, такое я заметил наверно еще в сусе 11.04 и других дистрибутивах того времени, опять же, точно не скажу, когда, ну пусть будет за последний год-полтора. Это воспроизводилось в сусе, федоре и убунту (то, что было под рукой). Итак,

CTRL+ALT+F1, поле ввода логина, нажимаю на клавиатуре стрелкой влево-вниз-вправо-вверх — куда хочешь можно блок передвигать и где угодно вводить текст. В норме такого не должно быть и не было в более ранних дистрибутивах. Надеялся что кто-то заметит и потом исправят или хотя бы в следующих выпусках... но нет, оно присутствует и по сей день. http://i47.fastpic.ru/big/2013/0507/3e/eb46332b862078c4b1f76aa98ff7303e.png

Bugs-Bunny
()

Создание пользовательской документации

Форум — Development

Нужно написать документацию для пользователей.
Выходные форматы: pdf, html
Хочется сразу выбрать удобный способ написания документации
На работе используется docBook редактор serna - но очень много недовольств со стороны местных тех. писов.
Документацию буду писать для свое домашнего проекта, по этому не очень хочется разбираться в самом инструменте. Можно конечно взять libreoffice и написать там, но хочется узнать о специализированных инструментах.

n4ela
()

Выбор светорегуляторов

Форум — Talks

Недавно решил сменить обстановку и поменять дома совковые люстры на что-то более вписывающееся в интерьер. Заказал люстры в интернет-магазине, получил, стал вешать. В последний момент, когда уже укоротил цепочку для регулировки длины и отрезал лишнюю половину провода в самой большой и дорогой люстре для самой большой комнаты, обнаружил, что на клеммнике вместо двух фаз и нуля у нее нарисованы фаза, ноль и земля. Повесил ее на одну половину двойного выключателя. Во включенном состоянии как-то очень ярко с пятью 40-ваттными лампочками.

Собственно, теперь есть повод поставить диммеры и рулить через них яркостью освещения. Википедия, если я все правильно понял, говорит, что они бывают с реостатом и низким КПД, с дорогими и большими автотрансформаторами, или электронными с ШИМ-модуляцией.

Меня больше всего интересуют электронные регуляторы с управлением по радиоканалу или ИК, т.к. управлять хочется, но возможности тянуть провода от выключателя до контроллера нет, и проводка вся в стенах. Хочется почитать советы людей, уже занимавшихся этой темой, а также мнения теоретиков о возможностях самостоятельной доработки выключателей, преимуществах, недостатках и затее в целом.

 ,

Deleted
()

Умный дом

Форум — Talks

Всем привет!

У меня остался буквально месяц до переезда в новую квартиру. Квартира без ремонта, лишь окна есть. Хотелось бы сделать умные розетки с управлением и мониторингом, вебки, умный свет. Может кто сталкивался с таким ? Что использовать, где купить?

Ну и чтоб за все это отвечал свой сервачек.

 ,

kukara4
()

Литература по электротехнике

Форум — Talks

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

Поскольку лор это единственный образованный форум который я знаю, то именно у вас я прошу посоветовать литературу по электротехнике (основы). Постоянный ток, анализ цепей, переменный ток и т.п.

Спасибо!

maxylopes
()

Купил паяльник...

Форум — Talks

ЛОР, так уж получилось, что в сознательной жизни не приходилось орудовать паяльником и захотелось сей факт исправить.
Поэтому было решено пройтись по некоторым тематическим магазинам моего любимого и славного города, дабы приобрести необходимый минимум. Были приобретены:
1) паяльник отечественного производства на 40 ватт и запасное жало;
2) баночка канифоли;
3) баночка, как оказалось в последствии, просроченного флюса ЛТИ-120;
4) метр припоя ПОС-61 с сечением 1.0 мм;
5) унылая пустая макетная плата (травить самому пока что лень, займусь этим через пару дней, как найду интересное устройство и схему);
6) десяток резисторов, на которых я и буду тренироваться, впаивая их в макетную плату.

Моя цель на данный момент - печатный монтаж. Дальше планирую уходить в МК и поверхностный монтаж. Но это если втянусь.

Собственно возник ряд вопросов.
Во-первых, как выше отмечено, ЛТИ-120 мне продали просроченный. Это не такая большая проблема, но осадочек есть. В связи с чем вопрос - а можно мелочёвку покупать на dealextreme и/или aliexpress? Под мелочевкой подразумеваются те же резисторы/конденсаторы/диоды/etc, пинцеты/бокорезы, монтажные платы/текстолит, флюс. Так же интересует припой. DIHALT почему-то ругался на отечественный ПОС-61 и рекомендовал использовать припой от зарубежных производителей. У нас зарубежные производители начинаются от 800 рублей за катушку 500 гр. Деньги, конечно, не особо большие, но если не втянешься, то катушка будет просто покрываться слоем пыли. В добавок к этому, я не нашёл отечественный припой менее 1 мм поперечного среза. Что без опаски можно покупать у китайцев?
К слову, в одной точке лежит китайский паяльник за ~900, который продают на aliexpress в 2 раза дешевле.

И во-вторых, а что делать с этой макетной платой? Как извлечь из неё профит? Элементы соединяются проводом или как? Я что-то вообще не пойму как её пользовать.

 

mkam
()

Кто работает с Arduino?

Форум — Talks

Простой вопрос, требующий не очень простой ответ.

Есть желание почитать и позаниматься с микроконтроллерами. В голову приходит только arduino, а-ля «платформа для нубов». Где почитать годную информацию про него, желательно на русском, ибо интересуется отец.

Ну и кто где покупает, где цены ниже? Или 22 или 40 евро за контроллер - это нормально?

Реквестирую истории успеха.

 , ,

ekzotech
()

Помогите собрать простой девайс

Форум — Talks

Друг попросил помочь с такой штукой: Ему нужно собрать гирлянду девайс который будет всего-то в определённом порядке мигать светодиодами. Вопрос, насколько я понимаю сродни хэллоу ворлду в электронике, но я этим толком не интересовался. Тем не менее, обкурившись манами, думаю смогу спаять. Мне ведь нужен простой микроконтроллер с простеньким алгоритмом, так? Ардуино и компания - дорого и избыточно. Подскажите, в какую сторону копать.

Может кто может подсказать схему, компоненты и инструментарий под онтопик (он таки причём!)?

 ,

Kalashnikov
()

Обновилась OpenSource библиотека FreeLing

Новости — Open Source
Группа Open Source

Наконец-то вышла OpenSource-библиотека для обработки текста FreeLing 3.0. Основные возможности FreeLing:

  • разметка текста (токенизация);
  • выделение предложений;
  • морфологический анализ;
  • определение составных слов;
  • вероятностное определение части речи неизвестного слова (hmm tagger);
  • обнаружение и определение именной группы;
  • классификация именной группы;
  • построение дерева зависимостей (слов в предложении);
  • определение местоимений (местоименных словоформ);
  • нормализация и определение дат, чисел, процентных соотношений, валюты и физических величин (скорость, вес, температура, плотность и т. д.);
  • определение части речи (вероятностное).

>>> FreeLing homepage

 freeling,

zstan
()

Посоветуйте годный онлайн магазин радио деталей

Форум — Talks

для починки сплита фуджицу нужен варистор 10V471К tnr китайские анлалоги ниже номиналом и хуже по качеству горят от любого скачка напряжения. Посоветуйте годный ресурс на котором его можно заказать в любой мухосранск в замкадье.

Freiheits-Sender
()

Радиолюбитель XXI века

Форум — Talks

В библиотеках книжки 70-х годов (Юный радиолюбитель и т.д.).

В интернетах тоже самое, но в djvu.

Ищеца материал, по изучению сабжа, но со свежим взглядом на это.

 литература 2012

eR
()