развернуть

Топ плагинов для PyCharm:


  1. Tabnine — подсказки с использованием ИИ. Очень крутой плагин, сильно помогает при написании кода, использую всегда.

  2. Translation — супер полезный плагин, позволяет запустить переводчик прямо из кода.

    Использование: выделить нужный текст, нажать ПКМ и выбрать Translete/Translete and Repace. Либо нажать в правом верхнем углу на иконку перевода.

  3. PyLint — линтер для Python, указывает на плохой код. 

    Использование: выбрать в нижнем меню PyLint и запустить проверку.

  4. MyPy — проверка типов в Python (чтобы не допускать ошибки связанные с типом возвращаемых значений).

    Использование: выбрать в нижнем меню MyPy и запустить проверку.

  5. SonarLint — указывает на различные ошибки в нейминге переменных/функций/классов.

    Использование: Ctrl+Shift+S или выбрать в нижнем меню SonarLint и запустить проверку.`

  6. Python Security — проверяет код на уязвимости, работает автоматически.

  7. Quick File Preview — посмотреть файл не открывая его, полезен если вы постоянно бегаете по файлам в поисках буквально 1 строчки и нет смысла полностью открывать файл. 

    Использование: Один раз кликнуть на файл.

  8. String Manipulation — работа с названиями переменных/функций и т. п. (можно привести к snake_case, camelCase и т. п.),

    Использование: выделить нужное слово, нажать ПКМ, нажать String Manipulation, нажать Switch Case и выбрать нужный пункт.

  9. Rainbow Brackets — красит скобочки в свой цвет, нужно чтобы чётко видеть иерархию скобок.

  10. Python Smart Execute — запустить блок кода в консоли, не запуская при этом саму программу (к примеру для теста на работоспособность).

    Использование: выделить код и Alt+Shift+A, или нажать ПКМ и выбрать Smart execute...

  11. MultiHighlight — выделить какое-либо название цветом (к примеру чтобы не забыть отрефакторить этот кусок).

    Использование: Выделить кусок и нажать Ctrl+'

  12. Dummy Text Generator — сгенерировать рандомное предложение в различных стилях. Бывает полезно для теста функционала (к примеру, что текст отображения не вылазит за рамки).

    Использование: Нажать ПКМ, выбрать Generate (либо Alt+Insert), выбрать Generate Dummy Text.

  13. Randomness — сгенерировать случайное число, строку и т. п. 

    Использование: нажать Alt+R и выбрать нужное действие.

  14. CodeGlance — добавляет карту с кодом в правую часть окна.

  15. Extra Icons — изменяет стандартные иконки.

    Использование: Включить Settings/Appearance Behavior/Extra Icons

  16. Mario Progress Bar — изменяет стандартный прогресс бар на марио.



Горячие клавиши:


  1. Ctrl+Alt+S — Перейти в настройки (откроется та часть где вы остановились).

  2. Ctrl+Shift+Стрелочки (вверх, вниз) — Переместить строчку вверх или вниз.

  3. Ctrl+D/Y — Дублировать строчку/Удалить строчку.

  4. Alt+Enter - Привести код к принятым стандартам (для Python - PEP8).

  5. Ctrl+B — Переместиться к реализации данного класса/метода и т. п.

  6. Ctrl+R — Изменить название класса/функции и т. п. по всему проекту.

  7. Double tap on Shift - поиск в классе, функции, файле, PyCharm action или везде.

  8. Ctrl+J — Использовать шаблон кода.

  9. Alt+Enter — произвести настройку класса/функции и т. п. (к примеру указать типы принимаемых и возвращаемых значений).

  10. Ctrl+E — Навигация по файлам (отображает список файлов в хронологическом порядке).

  11. Ctrl+Alt+M — Объединить выделенный код в функцию/метод.

  12. Ctrl+N — Найти класс/метод и т. п. по названию (по всем местам).

  13. Ctrl+Shift+N — Найти файл по названию (по всем местам).

  14. Alt+F7 — Посмотреть где используется класс/метод/функция и т. п.

  15. Ctrl+F12 — Показывает структура файла (класса, функции и т. п).



Настройки PyCharm:


  1. Настроить интерпретатор. Тут вы сможете изменить версию Python, добавить библиотеки и ещё много чего интересного.

    File -> Settings -> Project:<name> -> Project Interpreter

  2. Изменить шрифты, размеры и т. д.

    File -> Settings -> editor -> font

  3. Поменять цветовую схему UI.

    File -> Settings -> editor -> color scheme

  4. Deploy на сервер. Эта настройка открывает нам целый мир удобного деплоя, если будет интересно, могу написать отдельную статью просвещённую деплою.

    Tools -> Deployment -> Configuration

  5. Добавление плагинов.

    File -> Settings -> Plugins

  6. Это не совсем настройка, но всё же находится в меню, так что я решил добавить это сюда. Позволяет посмотреть небольшую статистику своей продуктивности.

    Help -> MyProductivity



взято тут
https://github.com/Ryize



развернуть
дополнительные файлы конфигурации

sudo apt-get install scite
sudo vim /usr/share/scite/SciTEGlobal.properties
изменить эти параметры



sudo wget -P /usr/share/scite http://www.scintilla.org/locale.ru.properties
pushd /usr/share/scite
sudo iconv -f WINDOWS-1251 -t ISO8859-5 -o locale.properties locale.ru.properties
popd

1) скачать свежий перевод https://translations.launchpad.net/codeblocks/trunk/+pots/codeblocks/ru/+details для этого надо залогиниться в https://login.launchpad.net/ перевод придёт по почте
2) конвентировать .po в .mo
msgfmt _codeblocks-ru.po -o codeblocks-ru.mo
3) sudo mkdir -p /usr/share/codeblocks/locale/ru_RU
4) sudo cp codeblocks-ru.mo /usr/share/codeblocks/locale/ru_RU/
4) Settings->Environment->View->Internalization (поставить галочку)-> там где Available languages выбрать Russian
5) перезапустить программу



развернуть
чтоб не забыть, некоторые команды vim




настройка конфига
vim $HOME/.vimrc или vim $HOME/.vim/vimrc




http://dev-tricks.ru/2016/05/07/nemnogo-o-vim-goryachie-klavishi/
список самых часто используемых вещей:
1. Навигация - hjkl, :[номер строки], g, GG
2. Редактирование - i, a, dw, x, cw, r
3. Поиск и замена - /, :%s/что/чем/gc
4. Бинды - :map :make
5. Настройки - ts, sw, et, cc, lst, number, ruler, incsearch

конфиги, схемы
http://bytefluent.com/vivify/

http://sysdev.me/wp-content/uploads/2013/08/vimrc.txt
Удобный Vim
Vim как IDE для разработки на Python
http://najomi.org/vim
https://ru.wikibooks.org/wiki/Vim
http://eax.me/vim-commands/
5 плагинов Vim, делающих из него IDE
Полезные плагины для Vim. Часть 2
https://wiki.archlinux.org/index.php/Vim_(Русский)
http://vim-scripts.org/vim/scripts.html
https://github.com/junegunn/vim-plug
Python’им в Vim
Минимум один трюк Vim, про который вы не знали

http://spacemacs.org/
https://www.emacswiki.org/emacs/VimMode


кстати, насчёт emacs
http://www.informatimago.com/linux/emacs-on-user-mode-linux.html
http://www.howardism.org/Technical/Emacs/new-window-manager.html
https://writequit.org/eos/eos.html

https://tuhdo.github.io/
http://ergoemacs.org/index.html
https://github.com/hlissner/doom-emacs
https://github.com/emacs-tw/awesome-emacs
https://github.com/bbatsov/prelude

https://www.gnu.org/software/emacs/
https://dev.to/huytd/emacs-from-scratch-1cg6
https://github.com/noctuid/evil-guide#emacsevil-for-vim-users
https://company-mode.github.io/
https://github.com/abo-abo/swiper
https://github.com/emacs-helm/helm
https://github.com/jwiegley/use-package

Текстовый редактор Sublime Text 3 изначально мощный, но без плагинов все равно не удовлетворяет всем потребностям разработчиков. Плагины устанавливаются через Package Control, который в свою очередь подтягивает дополнения из интернета. Но что делать, если разработчик находится в корпоративной сети за прокси сервером? Да все просто, надо просто прописать прокси в настройках Sublime Text Preferences -> Package Settings -> Package Control -> Settings – User.

sublime text proxy settings 1 thumb Настройка Sublime Text для работы через прокси

В файле конфигурации дописываем 4 параметра:


1
2
3
4
"http_proxy": "proxy.contoso.com:8080",
"https_proxy": "proxy.contoso.com:8080",
"proxy_password": "Pa$$w0rd",
"proxy_username": "contoso\\username",

Очередность можно не соблюдать, Sublime Text сам все выставит. В результате должно получиться, как на скриншоте (данные надо вбивать свои, конечно же). Домен и имя пользователя надо писать с экранированным обратным слешем – domain\\username!


sublime text proxy settings 2 thumb Настройка Sublime Text для работы через прокси


Перепускаем Sublime Text и ставим пакеты через Package Control. В моем случае все заработало через прокси сервер Microsoft ISA Server 2006.



----------------------------------------------------------------------

Package control можно поставить вручную.
Жмете Preferences > Browse Packages…
Переходите в родительский каталог (Sublime Text 2) и создаете в нем папку Installed Packages
В нее скачиваете файл Package Control.sublime-package
Перезапускаете сублайм
Чтобы потом через Package control устанавливать плагины, идете в Preference > Package Settings > Package control > Settings-User и в нем прописываете

"http_proxy": "host:port",
"https_proxy": "host:port",
"proxy_password": "pass",
"proxy_username": "user"


Если после установки Proxy пакеты не обновляются (но при этом может так случиться, что список обновляемых пакетов отображается), то нужно в настройках IE (Меню Сервис -> Свойства обозревателя -> Вкладка Дополнительно) отключить галочку "Проверять, не отозван ли сертификат сервера" и перезапустить IE и Sublime.


http://did5.ru/it/programming/nastrojka-sublime-text-dlya-raboty-cherez-proksi.html
http://viking-k.livejournal.com/24463.html


Vim — уникальный по своей гибкости редактор, который при должной настройке может едва ли не идеально удовлетворять все пожелания работающего с ним. Правда эта настройка может продолжаться месяцы, а то и годы, что является и достоинством, и недостатком vim’а. Существует множество статей и туториалов по использованию Vim для разработки на Python и Django, надеюсь мне удастся рассказать что-то новое. В своей статье я постараюсь по минимуму упоминать плагины общего назначения, вроде NERDTree или surround.vim и опишу несколько более специализированных расширений и настроек, которые существенно упростили процесс работы на Python.



Настроить Vim под Django оказалось делом довольно непростым, в отличие от использования с тем же Rails, для которого rails.vim решает 80% всех проблем. Но к сожалению Tim Pope ничего подобного для питона не написал, поэтому пришлось собирать все по частям. Вкратце, о чем пойдет речь:


  • python-mode

  • tagbar

  • pydiction

  • neocomplcache

Все ниженаписанное было опробовано в gVim для Linux.



Python-mode


Просто низкий поклон Кириллу Клёнову, разработчику данного расширения. Отлично устанавливается и с помощью vundle, и через pathogen и так же отлично работает.



Python-mode устанавливает свои настройки для питон-файлов. Если вас это не устраивает (мне например не нужен set number, который он добавляет), допишите необходимые настройки в .vimrc. Вот пример моих настроек:



let g:pymode_options = 0
let g:pymode_lint_write = 0 “не проверять при каждом сохранении
let g:pymode_folding = 0 “мне не нужен авто-фолдинг
let g:pymode_rope_vim_completion = 0 “не использовать автодополнение rope


Как можно увидеть, я не использую автоматический фолдинг кода, также мне не нужна проверка pylint'ом при каждом сохранении файла(let g:pymode_lint_write = 0), вместо чего можно использовать команду :PyLint, повесив на нее какой-нибудь хоткей. К автодополнению вернемся позже.



Плагин предоставляет несколько удобных хоткеев для перемещения по объектам в питон-коде:

Сочетание клавиш Команда
K Показать документацию
<C-c>g Перейти к определению
\r Запустить код
[[ Перейти к предыдущему классу или функции
]] Перейти к следующему классу или функции
aC C Выполнить действие для класса. (vaC, daC, dC, yaC, yC, caC, cC)
iC То же, находясь внутри класса. (viC, diC, yiC, ciC)
aM M Выполнить действие для функции. (vaM, daM, dM, yaM, yM, caM, cM)
iM То же, находясь внутри функции. (viM, diM, yiM, ciM)
Отдельно хотелось бы отметить возможность использовать Rope, в частности команды :RopeGoToDefinition, :RopeFindOccurrences и другие возможности по поиску кода и рефакторингу. просмотреть полный список команд Rope и сокращения к ним можно с помощью :help RopeKeys. Кроме того по умолчанию включена поддержка virtualenv, что значит, что с помощью того же :RopeGoToDefinition вы можете спокойно перейти к определнию функции любой библиотеки, установленной в site-packages вашего virtualenv’а.



Просмотр кода


Хотя самым популярным плагином для этого является Taglist, мне больше нравится Tagbar, также основанный на ctags(которые нужно установить перед использованием плагина). Вешаем :TagbarToggle на какой-нибудь хоткей, например:
nnoremap <F8> :TagbarToggle<CR>
Выглядит это примерно так:







Пара дополнительных настроек:



let g:tagbar_autofocus = 1
let g:tagbar_sort = 0 "tagbar shows tags in order of they created in file
let g:tagbar_foldlevel = 0 "close tagbar folds by default


Кроме того можно настроить, с какой стороны будет появляться окно тагбара, какими будут отступы, иконки и т.д. Обо всем этом можно узнать через :help tagbar.



Автодополнение


Один из плагинов, который я мог бы посоветовать — Pydiction, дополняющий ключевые слова на основе большого файла словаря. У данного плагина очень много плюсов:


  • автодополнение происходит по клавише Tab, не нужно запоминать всякие комбинации с Ctrl

  • абсолютно никаких конфликтов, можно одновременно использовать Pydiction с omnicomplete

  • автодополнение не затрагивает другие типы файлов

  • умеет дополнять импортированные объекты

  • довольно легко можно добавить в словарь собственные модули: python pydiction.py module_name

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



Другой способ — использовать neocomplcache. Кроме установки плагина, нужно задать omnifunc для питоновских файлов:

autocmd FileType python setlocal omnifunc=pythoncomplete#Complete


Neocomplcache несколько хуже справляется с дополнением из модулей, зато дополняет не только ключевые слова из текущих файлов, но и просто строки. Кроме того присутствует опция автоматически всплывающего дополнения, которое включается с помощью задания настройки:

let g:neocomplcache_enable_at_startup = 1


Шаблоны Django


Vim подерживает синтаксис джанго-шаблонов и подсвечивает их, если задать файлу тип htmldjango. К сожалению автоматически при открытии Vim определяет этот тип только если в начале файла находится джанго-тэг. Решить это можно например с помощью такой функции:



fun! DetectTemplate()
  let n = 1
  while n < line("$")
    if getline(n) =~ '{%' || getline(n) =~ '{{'
      set ft=htmldjango
      return
    endif
    let n = n + 1
  endwhile
  set ft=html "default html
endfun


которую нужно запускать при открытии файла с раширением .html:

autocmd BufNewFile,BufRead *.html call DetectTemplate()


Если вы используете несколько шаблонизаторов, функцию несложно модифицировать под них, правда следует сделать условия определения типа шаблонизатора более строгими.



Случайные настройки




  • Питоновские отступы:
    autocmd FileType python setlocal ts=4 sts=4 sw=4
    



  • Если вы пользуетесь NERDTree, стоит добавить .pyc в список игнорируемых файлов:
    let NERDTreeIgnore=['\.pyc$']
    



  • простое сокращение для вставки дебаггера ipdb в код
    iab ipdb import ipdb; ipdb.set_trace()
    



  • сокращение для задания кодировки в начале файла:
    iab utf! # -*- coding: utf-8 -*-
    



  • убрать раздражающие всплывающие окна с документацией для omnicompletion:
    set completeopt-=preview
    



  • пара цветовых схем:darkspectrum, gruvbox, Lucius



Дополнительные ссылки


1. python-mode

github.com/klen/python-mode

2. Tagbar

github.com/majutsushi/tagbar

3. Pydiction

github.com/rkulla/pydiction

4. Neocomplcache

github.com/Shougo/neocomplcache

https://habrahabr.ru/post/173473/


image

Данная статья будет посвящена настройке vim, в которой я поделюсь своим «скромным» пониманием того, каким должен быть текстовый редактор, чтобы в нем было удобно/приятно/легко (нужное подчеркнуть) писать код также, как это сейчас возможно во всевозможных IDE типа PyCharm, SublimeText и т.п.

Весь процесс постараюсь описать как можно более подробно, чтобы вопросов по мере чтения для начинающих осваивать vim возникало как можно меньше.



Предыстория
Сам я знаком с vim не очень продолжительное время, однако, к его изучению и желанию использовать привело:


  • достаточное количество на хабре статей по vim

  • большое количество существующих плагинов

  • преимущественно, разработчики на Python занимаются написанием кода под Linux (хотя vim — кроссплатформенный)

  • собственное любопытство



В настоящее время я использую весьма часто vim как основной инструмент для разработки на Python и нисколько об этом не жалею. Если чего-либо нехватает, то проблема решается гуглением в течении пару минут. Поверьте, vim действительно стоит тех затраченных сил на его изучения. Это достаточно быстро себя «окупает». Было бы только желание и немножечко терпения.



Подготовительный этап
Итак. Перейдем непосредственно к подготовительному этапу. Нам понадобится:


  1. Vim версии 7.4 (получить нужное можно либо скачиванием из репозиториев, либо сборкой вручную)

  2. Python 2.7 (с установленным pip)

  3. Клиент для работы с git



После того, как вышеперечисленное у нас имеется, можно приступать непосредственно к настройке и «кастомизации».



Настройка


Самое первой проблемой для любого новичка, который решает обуздать vim, является vimscript. Vimscript — это скриптовый язык, предназначенный для vim. На нем мы будем описывать используемые плагины, горячие клавиши и все тому подобное, чтобы обеспечить себе простую и легкую работу в vim. Для ознакомления советую посетить вот этот и этот сайты. Там достаточно неплохо все описано, что, где, как, и почему.



Первым делом стоит рассказать о том, что конфигурационный файл vim находится в домашнем каталоге пользователя (~/) и называется .vimrc. В нем-то и будут расписываться моменты относительно того, какие шрифты, цветовая схема, хоткеи и т.п. будут использоваться.



Во-вторых, при настойке текстового редактора, иногда будет необходимо заходить в каталог .vim (это скрытый каталог, и он расположен также в домашнем каталоге юзера), в который будут помещен ряд необходимых файлов, рассортированных по каталогам.

Какие включает в себя подкаталоги исходный каталог .vim? Примерно такие:

.vim

|____after

|____autoload

|____colors

|____doc

|____ftplugin

|____indent

|____plugin

|____scripts

|____syntax



Однако, из всех вышеперечисленных каталогов нам понадобится лишь несколько:


  • colors — для цветовых схем/тем

  • indent — сюда будет скидывать файлы для работы с тегами HTML/XML и т.п.

  • scripts — для скриптов

  • syntax — файлы синтаксиса



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



До начала установки и работа с менеджером пакетов пропишем в консоли:

pip install pyflakes pep8 pylint ipython


В дальнейшем, эти библиотеки нам пригодятся для того, чтобы отслеживать качество своего кода: ошибки, соответствие его PEP8 и т.п. Последняя же в этом списке библиотека/пакет — ipython нам будет удобна для настройки своего «дебаггера».

Также нам еще необходимо установить Exuberant ctags. Скачать его можно отсюда либо поискать и установить через менеджер пакетов apt-get/aptitude/rmp/pacman/и т.п.



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


Для того, чтобы нам было проще с установкой и использованием плагином будем использовать Vundle. Vundle — это пакетный менеджер для Vim, способный:


  • настраивать и устанавливать плагины, указанные в. vimrc

  • обновлять плагины при необходимости

  • удалять неиспользуемые плагины



Однако прежде чем приступать к описанию необходимого набора плагинов в конфигурационном файле, сначала необходимо установить сам Vundle. Для этого делаем следующее:



git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim


После выполнение этой команды Vundle будет установлен в ~/.vim/bundle/Vundle.vim



Теперь добавим следующую часть в свой новосозданный .vimrc если его еще нет:



set nocompatible              " be iMproved, required
filetype off                  " required

"=====================================================
" Vundle settings
"=====================================================
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

Plugin 'gmarik/Vundle.vim'		" let Vundle manage Vundle, required

"---------=== Code/project navigation ===-------------
Plugin 'scrooloose/nerdtree' 	    	" Project and file navigation
Plugin 'majutsushi/tagbar'          	" Class/module browser

"------------------=== Other ===----------------------
Plugin 'bling/vim-airline'   	    	" Lean & mean status/tabline for vim
Plugin 'fisadev/FixedTaskList.vim'  	" Pending tasks list
Plugin 'rosenfeld/conque-term'      	" Consoles as buffers
Plugin 'tpope/vim-surround'	   	" Parentheses, brackets, quotes, XML tags, and more

"--------------=== Snippets support ===---------------
Plugin 'garbas/vim-snipmate'		" Snippets manager
Plugin 'MarcWeber/vim-addon-mw-utils'	" dependencies #1
Plugin 'tomtom/tlib_vim'		" dependencies #2
Plugin 'honza/vim-snippets'		" snippets repo

"---------------=== Languages support ===-------------
" --- Python ---
Plugin 'klen/python-mode'	        " Python mode (docs, refactor, lints, highlighting, run and ipdb and more)
Plugin 'davidhalter/jedi-vim' 		" Jedi-vim autocomplete plugin
Plugin 'mitsuhiko/vim-jinja'		" Jinja support for vim
Plugin 'mitsuhiko/vim-python-combined'  " Combined Python 2/3 for Vim

call vundle#end()            		" required
filetype on
filetype plugin on
filetype plugin indent on


Как вы видите, места где указаны Plugin 'ссылка_до_плагина' представляет собой ссылки в интернете эти плагины, которые Vundle будет скачивать и в последствии устанавливать. Для себя, я разбивал эти плагины на «категории», но это уже дело вкуса. Сами плагины:


  • NERDTree — навигация по файловой/директориям

  • TagBar — навигация по классам/функциям/переменным

  • vim-airline — строка статуса/состояния

  • FixedTaskList — поиск в файле FIXME, TODO и т.п.

  • conque-term — используем для вызова дебаггера

  • vim-surround — автозакрытие тегов HML/XML/и т.п.

  • vim-snipmate — сниппеты

  • python-mode — рефакторинг, документация, дебаггер Python и т.п.

  • jedi-vim — автодополнение для Python

  • vim-jinja — поддержка синтаксиса шаблонов Jinja



В качестве руководства/гайда по использованию Vundle можно зайти сюда. Однако для наших целей будет предостаточно одной:

:PluginInstall


Эта команда сканирует файл .vimrc на наличие списка плагинов прописанных в виде Plugin 'ссылка_до_плагина'.

Для того, чтобы запустить установку набора плагинов, заходим в vim/gvim и прописываем :PluginInstall. Придется немного подождать, поскольку каждый плагин, указанный выше в конфиге, будет скачан с githuba либо еще откуда-то и настроен до установок «по умолчанию», подождите пару минут. Каждый выкачанный и настроенный плагин отмечается как "+". Как только увидите, что все из списка подсвечены "+" — значит, все готово. И для дальнейшего использования необходимо будет перезапустить vim. Однако на этом все еще не оканчивается статья — все необходимо «подкрутить», чтобы работать в vim'е было комфортно.



Общие настройки vim'а
Эти настройки для меня являются базовыми. Тут я указываю свои предпочтения относительно парочки плагинов, размера шрифтов, цветовой схемы, отображаемых элементов и т.п.

Добавьте эти строчки в конец своего .vimrc файла:

"=====================================================
" General settings
"=====================================================
set backspace=indent,eol,start
aunmenu Help.
aunmenu Window.
let no_buffers_menu=1
set mousemodel=popup

set ruler
set completeopt-=preview
set gcr=a:blinkon0
if has("gui_running")
  set cursorline
endif
set ttyfast

" включить подсветку кода
syntax on
if has("gui_running")
" GUI? устаналиваем тему и размер окна
  set lines=50 columns=125
  colorscheme molokai
" раскомментируйте эти строки, если хотите, чтобы NERDTree/TagBar автоматически отображались при запуске vim
" autocmd vimenter * TagbarToggle
" autocmd vimenter * NERDTree
" autocmd vimenter * if !argc() | NERDTree | endif

" на маке vim?
if has("mac")
  set guifont=Consolas:h13
  set fuoptions=maxvert,maxhorz
else
" дефолтный GUI
  set guifont=Ubuntu\ Mono\ derivative\ Powerline\ 10
endif
else
" терминал?
  colorscheme myterm
endif

tab sball
set switchbuf=useopen

" отключаем пищалку и мигание
set visualbell t_vb= 
set novisualbell       

set enc=utf-8	     " utf-8 по дефолту в файлах
set ls=2             " всегда показываем статусбар
set incsearch	     " инкреминтируемый поиск
set hlsearch	     " подсветка результатов поиска
set nu	             " показывать номера строк
set scrolloff=5	     " 5 строк при скролле за раз

" отключаем бэкапы и своп-файлы
set nobackup 	     " no backup files
set nowritebackup    " only in case you don't want a backup file while editing
set noswapfile 	     " no swap files

" прячем панельки
"set guioptions-=m   " меню
set guioptions-=T    " тулбар
"set guioptions-=r   "  скроллбары

" настройка на Tab
set smarttab
set tabstop=8

"  при переходе за границу в 80 символов в Ruby/Python/js/C/C++ подсвечиваем на темном фоне текст
augroup vimrc_autocmds
    autocmd!
    autocmd FileType ruby,python,javascript,c,cpp highlight Excess ctermbg=DarkGrey guibg=Black
    autocmd FileType ruby,python,javascript,c,cpp match Excess /\%80v.*/
    autocmd FileType ruby,python,javascript,c,cpp set nowrap
augroup END

" указываем каталог с настройками SnipMate
let g:snippets_dir = "~/.vim/vim-snippets/snippets"

" настройки Vim-Airline
set laststatus=2
let g:airline_theme='badwolf'
let g:airline_powerline_fonts = 1
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#formatter = 'unique_tail'

" TagBar настройки
map <F4> :TagbarToggle<CR>
let g:tagbar_autofocus = 0 " автофокус на Tagbar при открытии

" NerdTree настройки
" показать NERDTree на F3
map <F3> :NERDTreeToggle<CR>
"игноррируемые файлы с расширениями
let NERDTreeIgnore=['\~$', '\.pyc$', '\.pyo$', '\.class$', 'pip-log\.txt$', '\.o$']  

" TaskList настройки
map <F2> :TaskList<CR> 	   " отобразить список тасков на F2

" Работа буфферами
map <C-q> :bd<CR> 	   " CTRL+Q - закрыть текущий буффер


Python-mode
Очень нравится этот плагинчик, который кстати, сделан klen. Предоставляет море возможностей при работе с кодом:


  • рефакторинг

  • автодополнение

  • работа с дебаггером

  • автофикс PEP8 ошибок

  • и многое-многое другое...



Добавьте эти строчки в конец своего .vimrc файла:

"=====================================================
" Python-mode settings
"=====================================================
" отключаем автокомплит по коду (у нас вместо него используется jedi-vim)
let g:pymode_rope = 0
let g:pymode_rope_completion = 0
let g:pymode_rope_complete_on_dot = 0

" документация
let g:pymode_doc = 0
let g:pymode_doc_key = 'K'
" проверка кода
let g:pymode_lint = 1
let g:pymode_lint_checker = "pyflakes,pep8"
let g:pymode_lint_ignore="E501,W601,C0110"
" провека кода после сохранения
let g:pymode_lint_write = 1

" поддержка virtualenv
let g:pymode_virtualenv = 1

" установка breakpoints
let g:pymode_breakpoint = 1
let g:pymode_breakpoint_key = '<leader>b'

" подстветка синтаксиса
let g:pymode_syntax = 1
let g:pymode_syntax_all = 1
let g:pymode_syntax_indent_errors = g:pymode_syntax_all
let g:pymode_syntax_space_errors = g:pymode_syntax_all

" отключить autofold по коду
let g:pymode_folding = 0

" возможность запускать код
let g:pymode_run = 0


Jedi-vim
Очень полезный плагин, предоставляющий отличные возможности автокомплита, go to definition, и т.п.

В своем конфиге добавьте в конец этот фрагмент:

" Disable choose first function/method at autocomplete
let g:jedi#popup_select_first = 0


Этой строчкой я отрубаю в автокомплите выбор первой строки из списка выбора метода/библиотеки/класса автокомплита. Это связано с тем, что достаточно часто я выбираю не первую строку из нее, а автоматический выбор раздражает.



После настройки jedi-vim получаем отображение документации по функции

image

и добротный автокомплит по аргументам функций

image



Хоткеи
Тут сложно что-либо посоветовать. У всех различное понимание того, какие хоткеи нужны, а какие-нет. Могу лишь сказать, что для желающих, найти/написать необходимые кусочки vimscript, переопределяющих поведение стандартных горячих клавиш — очень много.

Добавьте этот фрагмент в конец конфига:

"=====================================================
" User hotkeys
"=====================================================
" ConqueTerm
" запуск интерпретатора на F5
nnoremap <F5> :ConqueTermSplit ipython<CR>
" а debug-mode на <F6>
nnoremap <F6> :exe "ConqueTermSplit ipython " . expand("%")<CR>
let g:ConqueTerm_StartMessages = 0
let g:ConqueTerm_CloseOnEnd = 0
" проверка кода в соответствии с PEP8 через <leader>8
autocmd FileType python map <buffer> <leader>8 :PymodeLint<CR>

" автокомплит через <Ctrl+Space>
inoremap <C-space> <C-x><C-o>

" переключение между синтаксисами
nnoremap <leader>Th :set ft=htmljinja<CR>
nnoremap <leader>Tp :set ft=python<CR>
nnoremap <leader>Tj :set ft=javascript<CR>
nnoremap <leader>Tc :set ft=css<CR>
nnoremap <leader>Td :set ft=django<CR>


Отступы, табы, пробелы для разных языков
Это связано с тем, что в том же Python табы не рекомендуется к использованию. Поэтому будем заменять их на пробелы. Один таб = 4 пробелам. Плюс ко всему необходимо помнить, что всегда нужно сделать переход на следующую строку + отступ, чтобы было соответствие операторам for/if/while/и т.п.

Для других языков предостаточно будет указать размер Таба, и замены их на пробелы.

Добавьте этот фрагмент в конец своего конфига:

"=====================================================
" Languages support
"=====================================================
" --- Python ---
"autocmd FileType python set completeopt-=preview " раскомментируйте, в случае, если не надо, чтобы jedi-vim показывал документацию по методу/классу
autocmd FileType python setlocal expandtab shiftwidth=4 tabstop=8
\ formatoptions+=croq softtabstop=4 smartindent
\ cinwords=if,elif,else,for,while,try,except,finally,def,class,with
autocmd FileType pyrex setlocal expandtab shiftwidth=4 tabstop=8 softtabstop=4 smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class,with

" --- JavaScript ---
let javascript_enable_domhtmlcss=1
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
autocmd BufNewFile,BufRead *.json setlocal ft=javascript

" --- HTML ---
autocmd FileType html set omnifunc=htmlcomplete#CompleteTags

" --- template language support (SGML / XML too) ---
autocmd FileType html,xhtml,xml,htmldjango,htmljinja,eruby,mako setlocal expandtab shiftwidth=2 tabstop=2 softtabstop=2
autocmd bufnewfile,bufread *.rhtml setlocal ft=eruby
autocmd BufNewFile,BufRead *.mako setlocal ft=mako
autocmd BufNewFile,BufRead *.tmpl setlocal ft=htmljinja
autocmd BufNewFile,BufRead *.py_tmpl setlocal ft=python
let html_no_rendering=1
let g:closetag_default_xml=1
let g:sparkupNextMapping='<c-l>'
autocmd FileType html,htmldjango,htmljinja,eruby,mako let b:closetag_html_style=1
autocmd FileType html,xhtml,xml,htmldjango,htmljinja,eruby,mako source ~/.vim/scripts/closetag.vim

" --- CSS ---
autocmd FileType css set omnifunc=csscomplete#CompleteCSS
autocmd FileType css setlocal expandtab shiftwidth=4 tabstop=4 softtabstop=4


Подведение итогов
После прохождения столь длительного процесса настройки у нас получился достаточно гибкий инструмент для работы с Python. При этом, последующая установка, на другие ПК будет представлять только доустановку необходимых библиотек, переноса соответствующего конфига и установку плагинов.



После настройки мы получим примерно такой vim:

image

В режиме работы с HTML/JavaScript/XML будет все выглядеть примерно так:

image



Если кому-либо нужен больший функционал (например поддержка автокомплита для любых иных языков), то могу посоветовать лишь поискать необходимые плагины на GitHub'е или на офицальном сайте сайте vim'a.



Полезные ссылки:
Раздел script сайта vim.org — тут

wikia по vim'у — тут

OpenVim: уроки по азам в vim — тут

Шрифты для vim-airline — тут



Мой конфиг для vim на GitHub

https://habrahabr.ru/post/224979/
http://freecoder.ru/content/vim-kak-ide-dlya-razrabotki-na-python
http://linux.cpms.ru/?p=8339




Данная статья не раскрывает всех премудростей перемещения по тексту или его редактирования. Основные движения можно узнать в vimtutor, остальные комбинации изучаются в процессе работы. Некоторые из них, особо важные в процессе программирования, я освещу позже.



Я достаточно долгое время использовал sublime (около 4 лет) в качестве основной среды разработки, но в последнее время кое-что изменилось: я освоил слепой 9-ти пальцевый метод печати. В тот момент я начал понимать людей, которым неудобно тянуться к мышке или стрелочкам. Убирать пальцы с «домашних» позиций стало неестественно и непродуктивно. Тогда я включил vintage. Проблема, вроде бы, стала неактуальна, но чего-то не хватало. Не помню, что заставило меня пересесть за vim, но мне всегда нравилось, как в нем выделяются фигурные скобки (MatchParen) и как выглядит курсор :). Vim я пробовал и до этого, когда правил конфиги на сервере, правда, вся «магия» ограничивалась переходом в режим вставки и успешным сохранением/выходом из редактора.



Первое, что необходимо понять — vim из коробки годится разве что для правки конфигов, для комфортной работы с кодом необходимо установить несколько плагинов. Мне хватило 33. Я не ставил перед собой цель полностью копировать поведение sublime, скорее сделать работу в vim'е такой же простой и интуитивно понятной. Данное руководство описывает все установленные плагины, а также настройки, которые, по моему мнению, делают работу с плагинами и самим vim'ом более удобной. Нужные плагины вы можете найти на официальном сайте, хотя мне больше нравится vimawesome. В качестве окружения выступает Ubuntu 16.04 и консольный vim 7.4.



Все плагины находятся на github, где вы можете посмотреть краткое руководство по установке или использованию того или иного плагина, за подробным описанием стоит идти в help. Если из описания плагина не ясно, как его использовать, то, наверняка, нужная комбинация биндится в разделе горячих клавиш. Все настройки прописываем в ~/.vimrc или ~/.vim/vimrc, если файл не существует — создаем. Пожалуй, начнем.



vundle
Нет ничего приятного в том, чтобы ставить плагины вручную. Vundle выступает в роли пакетного менеджера, среди которых есть также pathogen, vim-plug и другие. Не могу сказать, что удобнее, так как пользовался только Vundle. Выбирайте на свое усмотрение.



Установленные плагины

// set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

// let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

// common
Plugin 'scrooloose/nerdtree'
Plugin 'valloric/youcompleteme'
Plugin 'xolox/vim-easytags'
Plugin 'majutsushi/tagbar'
Plugin 'tpope/vim-fugitive'
Plugin 'easymotion/vim-easymotion'
Plugin 'ctrlpvim/ctrlp.vim'
Plugin 'terryma/vim-multiple-cursors'
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
Plugin 'scrooloose/nerdcommenter'
Plugin 'matze/vim-move'
Plugin 'raimondi/delimitmate'
Plugin 'mattn/emmet-vim'
Plugin 'scrooloose/syntastic'
Plugin 'tpope/vim-surround'
Plugin 'sirver/ultisnips'
Plugin 'honza/vim-snippets'
Plugin 'xolox/vim-session'
Plugin 'xolox/vim-misc'
Plugin 'SyntaxAttr.vim'
Plugin 'dyng/ctrlsf.vim'
Plugin 'rking/ag.vim'
Plugin 'godlygeek/tabular'

// php
Plugin 'stanangeloff/php.vim'
Plugin 'sumpygump/php-documentor-vim'
Plugin 'arnaud-lb/vim-php-namespace'

// javascript
Plugin 'pangloss/vim-javascript'

// html
Plugin 'othree/html5.vim'

// twig
Plugin 'evidens/vim-twig'

// css
Plugin 'mtscout6/vim-tagbar-css'

// colors
Plugin 'damage220/solas.vim'
Plugin 'nanotech/jellybeans.vim'
Plugin 'mhartington/oceanic-next'

call vundle#end()
Команды

// просмотр всех установленных плагинов
:PluginList

// устанавливаем плагины
:PluginInstall

// удаляем ненужные плагины
:PluginClean

// поиск необходимого плагина
:PluginSearch foo
Установка

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
Зависимости

git и curl
solas
Из всех цветовых тем, что я пробовал, больше всего понравилась jellybeans, но через некоторое время решил создать свою тему. К счастью, узнать названия всех групп не составило труда, к несчастью, терминалы очень ограничены в цветовой палитре и поддерживают, как правило, 256 цветов. Solas основана на стандартной теме в PhpStorm.

move
Плагин предназначен для перемещения текущей строки или выделенных строк вверх или вниз.



Пользовательские настройки

// биндим команды перемещения на <C-j> и <C-k>
let g:move_key_modifier = 'C'
nerdtree
Самый популярный плагин, предназначен для работы с файловой системой. Добавляет удобные горячие клавиши для создания, перемещения и удаления файлов и директорий.



Пользовательские настройки

// автоматически обновлять буфер после переименовывания файла
let NERDTreeAutoDeleteBuffer = 1
php-documentor
Плагин создает doc-блоки для классов, свойств класса, функций.

php
Плагин предоставляет улучшенную поддержку синтаксиса. Обновлен список констант, классов и функций до версии 5.6.

html5
Плагин предоставляет улучшенную поддержку синтаксиса и отступов.

javascript
Плагин предоставляет улучшенную поддержку синтаксиса и отступов.

twig
Плагин добавляет поддержку шаблонов twig.

fugitive
Удобная обертка над git, предоставляет множество команд.

ultisnips
Плагин добавляет поддержку сниппетов в vim.



Полезные комбинации

<Tab> - вставить сниппет
snippets
Набор сниппетов для большинства языков программирования.



Зависимости

snipmate или ultisnips
SyntaxAttr
Плагин показывает группу синтаксиса, ссылки (hi link) и цвет группы. Удобный плагин для создания собственных цветовых схем.

ctrlp
За 3 года я так сильно привык к нечеткому поиску, что с трудом представляю разработку без этой возможности. Насколько я помню, это был первый плагин, который я установил. Ctrlp производит поиск по тегам, файлам, буферам и последним активным файлам.



Команды

// поиск тега в текущем файле (аналог Ctrl + R в sublime)
:CtrlPBufTag
Полезные комбинации

<C-j> и <C-k> - для перемещения курсора вниз и вверх соответственно
<Enter> - открыть в текущем окне
<C-t> - открыть в новой вкладке
<C-v> - открыть файл слева/справа (зависит от настройки)
<C-x> - открыть файл сверху/снизу (зависит от настройки)
<C-d> - переключение режима поиска по имени файла или полному пути
Пользовательские настройки

// По умолчанию, CtrlP ищет файлы по их полному пути, что мне показалось странным, поскольку на запрос "repo", имея следующую структуру файлов:
// project/src/Repository/Repository.php
// project/src/Repository/Foo.php
// CtrlP может придать больший вес файлу Foo.php. К счастью, CtrlP, как и многие другие плагины для vim'a, имеет гибкую настройку. Для решения проблемы нужно прописать
let g:ctrlp_by_filename = 1

// откуда начинать поиск. w - ближайшая директория, которая содержит признаки наличия CVS (.git, .svn). r - текущая директория (pwd).
let g:ctrlp_working_path_mode = 'wr'

// по умолчанию, как не сложно догадаться, поиск активируется по нажатию <C-p>, но т.к. у меня стоит другая комбинация (далее по тексту), я решил сбросить стандартное поведение.
let g:ctrlp_map = ''

// убираем переменные из списка тегов
let g:ctrlp_buftag_types = {
	\'php': '--php-kinds=icdf'
\}
Зависимости

Для поиска по тегам нужен ctags
tagbar
Мне нравится миникарта в sublime, взглянув на неё можно сразу понять структуру файла. Естественно, я хотел такую же и в vim, и, надо же, плагин так и называется — vim-minimap. К сожалению, плагин мне совершенно не понравился. Нужна была альтернатива, и она нашлась — tagbar. Плагин показывает список тегов в текущем файле, группируя их и сортируя в нужном порядке.



Пользовательские настройки

// сортировать в том порядке, в котором тег появляется в коде, а не по имени
let g:tagbar_sort = 0

// замена стандартных стрелочек раскрытия/сворачивания группы тегов
let g:tagbar_iconchars = ['+', '-']

// обеспечиваем переключатель
let g:tagbar_map_close = '<C-m>'

// Убираем переменные из списка
let g:tagbar_type_php = {
	\'ctagstype': 'php',
	\'kinds': [
		\'i:interfaces',
		\'c:classes',
		\'d:constants',
		\'f:functions'
	\]
\}
Зависимости

ctags
tagbar-css
Плагин добавляет поддержку css, less и scss для tagbar. Помимо установки самого плагина, пропишите следующие строки в ваш ~/.ctags

--langdef=css
--langmap=css:.css.less.scss
--regex-css=/^[ \t]*@([A-Za-z0-9_-]+)/@\1/v,var,variables/
--regex-css=/^[ \t]*\.([A-Za-z0-9_-]+)/.\1/c,class,classes/
--regex-css=/^[ \t]*#([A-Za-z0-9_-]+)/#\1/i,id,ids/
--regex-css=/^[ \t]*(([A-Za-z0-9_-]+[ \t\n,]+)+)\{/\1/t,tag,tags/
--regex-css=/^[ \t]*@media\s+([A-Za-z0-9_-]+)/\1/m,media,medias/
Зависимости

tagbar
easymotion
Один из лучших плагинов, на мой взгляд. Позволяет моментально перемещаться по коду, введя всего несколько символов.



Пользовательские настройки

// отключаем зависимость от регистра
let g:EasyMotion_smartcase = 1

// отключаем тень (в момент выбора цели весь текст помечается как комментарий)
let g:EasyMotion_do_shade = 0

// какой группой подсвечивать цели
hi link EasyMotionTarget Search
Примечание

Поскольку easymotion работает с буфером напрямую, постоянно изменяя его, местами может появляться неприятный баг, когда вы попытаетесь отменить все изменения. Vim сообщит, что вы восстановили первоначальное состояние, но при попытке выйти из редактора, появится предупреждение о несохраненном буфере.
session
Плагин делает работу с сессиями более удобной, предоставляя обертку над стандартной командой :mksession.



Команды

// открыть сессию. Если вы закрыли терминал или случайно нажали <C-z>, необходимо добавить "!" в конце команды, например, "OpenSession! name"
:OpenSession name

// сохранить сессию
:SaveSession name
Пользовательские настройки

// открывать сессию при старте. Опция игнорируется, если мы передаем vim некие файлы
let g:session_autoload = 'yes'

// включить автосохранение
let g:session_autosave = 'yes'

// сохранять состояние каждые 5 минут
let g:session_autosave_periodic = 5

// не сообщать ничего при автосохранении
let g:session_autosave_silent = 1

// открывать последнюю рабочую сессию вместо стандартной
let g:session_default_to_last = 1
Зависимости

misc
misc
Плагин, необходимый для работы session.
emmet
Об emmet'e было сказано слишком много, чтобы писать о нем тут.



Пользовательские настройки

// разворачивать аббревиатуру по нажатию на <C-e>
let g:user_emmet_expandabbr_key = '<C-e>'
delimitmate
Плагин ставит отступы между любыми скобками или кавычками.



Пользовательские настройки

// включить отступы по нажатию на enter
let delimitMate_expand_cr = 1

// включить отступы по нажатию на пробел. " |" превращается в " | "
let delimitMate_expand_space = 1

// для html, необходимо дописать >:<, чтобы выставлялись правильные отступы
au FileType vim,html let b:delimitMate_matchpairs = "(:),[:],{:},<:>,>:<"
syntastic
Плагин для проверки синтаксиса. В readme советуют ставить следующие настройки, не спорим.



Пользовательские настройки

let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
NERDCommenter
От плагина для комментирования кода я хотел добиться следующего поведения: для комментирования участка кода используем <C-?>, для комментирования строки, раскомментирования строки/фрагмента кода служит <C-/>. Насколько я помню, из всех установленных мною плагинов (около 4-х), ни один в точности не справился с этой задачей. Чтобы раскомментировать фрагмент кода приходится использовать стандартную комбинацию — \<Leader\>cu, где \<Leader\> — ",". Это не стандартная клавиша, по умолчанию используется "\". В остальном такое же поведение, как и в sublime.



Пользовательские настройки

// количество пробелов после символа(ов) комментария
let g:NERDSpaceDelims = 1
airline
Плагин отображает удобную строку статуса, которую легко кастомизировать под свои нужды. Также можно позволить плагину управлять внешним видом вкладок. Для корректной работы нужны пропатченные шрифты, которые вы можете взять отсюда.



Пользовательские настройки

// solarized не входит в стандартную поставку, необходимо загрузить набор тем
let g:airline_theme='solarized'

// использовать пропатченные шрифты
let g:airline_powerline_fonts = 1

// включить управление табами
let g:airline#extensions#tabline#enabled = 1

// всегда показывать tabline
let g:airline#extensions#tabline#tab_min_count = 0

// такое же поведение, как и в sublime: если файл с уникальным именем - показывается только имя, если встречается файл с таким же именем, отображается также и директория
let g:airline#extensions#tabline#formatter = 'unique_tail'

// скрыть буферы
let g:airline#extensions#tabline#show_buffers = 0

// имя файла + расширение :help filename-modifiers
let g:airline#extensions#tabline#fnamemod = ':t'

// убираем раздражающие ненужные красные панели с предупреждениями или ошибками. Предупреждения, как по мне, не нужны, поскольку ругаются даже на trailing-spaces и разные отступы: например табы и пробелы (привет от phpDoc). Для ошибок и так открывается дополнительное окно. Впрочем, вам решать.
let g:airline_section_warning = ''
let g:airline_section_error = ''

// убираем "X" для закрытия вкладки мышью (мышью!?)
let g:airline#extensions#tabline#show_close_button = 0

// убираем разделитель для вкладок
let g:airline#extensions#tabline#left_alt_sep = ''

// отключаем tagbar
let g:airline#extensions#tagbar#enabled = 0

// показывать номер вкладки
let g:airline#extensions#tabline#show_tab_nr = 1

// показывать только номер вкладки
let g:airline#extensions#tabline#tab_nr_type = 1
airline-themes
Набор тем для airline.



Зависимости

airline
youcompleteme
YCM предоставляет быстрое автодополнение кода с нечетким поиском. Самый «тяжелый» плагин из всех и самый неприятный в установке. Весит 275.9 mb и заметно замедляет запуск редактора. Для сравнения, все остальные плагины вместе взятые занимают 15.1 mb. Для работы плагина нужен vim, скомпилированный с поддержкой python. Для проверки выполните команду vim --version | grep "+python" в вашем терминале. Я не люблю компилировать из исходников и, к счастью, в моём репозитории есть пакет «vim-nox» с поддержкой скриптовых языков.



Пользовательские настройки

// ycm сам определяет подходящую версию интерпретатора, но, почему-то, с 3 версией дополнения не показываются - ставим вторую.
let g:ycm_server_python_interpreter='python'

// закрыть превью после ввода, например, при нажатии на закрывающую скобку ")"
let g:ycm_autoclose_preview_window_after_completion = 1

// позволяем ultisnips использовать tab для раскрытия сниппетов
let g:ycm_key_list_select_completion = ['<Down>']
Установка

Помимо установки самого плагина, необходимо запустить "install.py" с необходимыми флагами, подробнее в help.
multiple-cursors
Название говорит само за себя — плагин позволяет работать с несколькими курсорами одновременно.



Команды

// выделить все вхождения
:MultipleCursorsFind pattern
Полезные комбинации

<C-n> - выделение следующего слова под курсором
<C-p> - выделение предыдущего слова под курсором
<C-x> - пропустить текущее слово и перейти к следующему

// После того, как вы выделили все слова, можно приступить к редактированию:
c - удалить и перейти в режим редактирования
I - вставить в начало
A - вставить в конец
ctrlsf
Долгое время меня пугала мысль, как я буду реализовывать замену строки по всему проекту, да еще с предпросмотром и… подтверждением. И зря — для vim'a нашелся (причем почти сразу) замечательный плагин, который предоставляет необходимый функционал. Достаточно набрать команду :CtrlSF pattern [filemask] и откроется окно со всеми вхождениями. Редактируем как обычный файл, сохраняем (:w). После чего, плагин запросит подтверждение и укажет сколько файлов подвергнутся изменениям. Будьте осторожны, если нажать на \<Esc\>, то данные всё равно закоммитятся. Впрочем, всегда можно отменить изменения (u) и сохранить буфер заново. Хорошо сочетается с множественными курсорами, особенно с командой :MultipleCursorsFind. CtrlSF — это абстракция над ack/ag, так что один из этих плагинов придется установить. Про установку ag читать ниже.



Команды

:CtrlSF foo *.php
Полезные комбинации

<C-j> и <С-k> - перейти к следующему и предыдущему вхождению
Пользовательские настройки

// перемещаем окно вправо
let g:ctrlsf_position = 'right'
Зависимости

ack или ag
ag
Обертка над системным ag. По заявлению автора, за счет распараллеливания, ag работает в 34 раза быстрее ack, подробнее. Для работы плагина нужно установить сам ag. В ubuntu пакет называется silversearcher-ag.

php-namespace
Плагин для более удобной работы с оператором «use». Подключает необходимый класс, используя тег-файл.



Зависимости

ctags, сгенерированный тег-файл.
surround
Плагин позволяет добавлять, заменять или удалять окружающие текст кавычки, скобочки или xml-теги. ys, cs, ds — служат для вставки, замены и удаления обрамляющих символов соответственно.



Полезные комбинации

ds' - удалить одинарные кавычки
dst - удалить обрамляющий тег
cs'" - заменить одинарные кавычки на двойные
ysiw" - поместить слово в двойные кавычки
ysiw<a> - поместить текст в тег <a>
tabular
Плагин выравнивает текст по определенному шаблону, например "=" или "|". Я не любитель «бьюти» кода, но недавно, когда я делал шпаргалку по временам в английском языке, плагин оказался весьма полезным.



Команды

// выравнивает текст по символу "|"
:Tabularize /|
ctags
Для работы таких плагинов, как CtrlP, TagBar и php-namespace вам понадобится ctags — мощная утилита для анализа исходного кода программ. Ctags создает тег-файл, в котором содержатся названия классов, функций, переменных, ..., а также их позиции. Ctags 5.9 поддерживает 43 языка из коробки, но может быть расширен при помощи регулярных выражений (смотреть tagbar-css).



Полезные ключи

// список поддерживаемых языков
--list-languages

// список тегов для конкретного языка
--list-kinds=lang
Установка

Ищите в своих репозиториях пакет со схожим именем. Например, в ubuntu - это exuberant-ctags
Примечание

Для крупных проектов имеет смысл создать какой-нибудь "tags.vendor" и добавить этот файл в переменную "tags"
easytags
Тег-файл предоставляет много информации, но создавать его вручную — дело не из приятных. Easytags избавит вас от рутины, достаточно один раз прописать :UpdateTags -R в новом проекте, а все последующие изменения плагин проиндексирует сам.



Пользовательские настройки

// записываем теги локально для каждого проекта, вместо ~/.vimtags
let g:easytags_file = './tags'

// отключаем подсветку тегов
let g:easytags_auto_highlight = 0

// события (:help autocmd-events), которые слушает easytags
let g:easytags_events = ['BufWritePost']

// не блокировать vim во время обновления тег-файла
let g:easytags_async = 1
Зависимости

ctags


Довольно сложно описать каждый плагин подробно, да и незачем, наверное. Нет никакого смысла перечислять все команды, я лишь описал те, которые сам использовал, но и без того статья получилась весьма объемной. Теперь давайте рассмотрим возможности самого редактора.



Настройки
За подробностями идем в :help setting

// Для работы с табами, вместо пробелов, присвойте tabstop и shiftwidth одинаковые значения
set tabstop=4
set shiftwidth=4
set softtabstop=4

// автоматически обновлять файл при его изменении
set autoread

// настраиваем отступы
set autoindent
set smartindent

// показывать относительные номера строк. Удобно тем, что можно легко переходить к нужной строке командой 10j, например
set rnu

// всегда показывать строку статуса
set laststatus=2

// Время, которое vim ждет для ввода следующего символа комбинации клавиш.
// Например, если в vim'e существует комбинация "df", то после ввода символа "d" у вас есть пол секунды,
// чтобы ввести "f", иначе в буфер вставиться символ "d".
set timeoutlen=500

// эту команду я плохо понимаю. В документации написано, что это время ожидания для ввода последовательностей клавиш,
// в таком случае, я не знаю в чем отличие от предыдущей команды. Тем не менее, когда ожидание равно нулю, то при нажатии <Esc>
// для выхода из визуального режима или закрытия всплывающего меню, нет никакой заминки, что весьма приятно.
set ttimeoutlen=0

// более удобная работа с кириллицей. При нажатии <C-6> в режиме вставки, vim изменит режим с "Insert" на "Insert (lang)",
// после чего будут вводиться русские символы. Если вернуться в нормальный режим, то все команды будут работать.
set keymap=russian-jcukenwin
set iminsert=0
set imsearch=0

// Выставляем кодировку
set encoding=utf-8
set termencoding=utf-8

// Отключаем swap-файлы. Ставьте на свое усмотрение, мне эта возможность чаще мешала
set noswapfile

// Если в течении этого времени, вы не будете перемещать курсор или печатать, vim обновит swap-файл,
// а также активирует событие CursorHold. Некоторые плагины, вроде tagbar, слушают это событие для обновления состояния.
// Так как swap-файлы я не использую, решил сделать значение поменьше (по умолчанию - 4000).
set updatetime=500

// :vsplit открывает окна справа
set splitright

// :split открывает окна снизу
set splitbelow

// убираем совместимость с vi
set nocompatible

// ищем тег-файл в текущей директории
set tags=./tags;

// Игнорировать регистр при поиске. Намного удобнее вводить команды без учета регистра, например ctrlsf, вместо CtrlSF.
// Для поиска с учетом регистра, нужно поместить \C в любое место искомой строки
set ignorecase

// например, при переходе к тегу, vim может ругаться, что текущий буфер не сохранен, hidden решает эту проблему
set hidden

// подсвечивать все совпадения при поиске
set hlsearch

// подсвечивать совпадение во время поиска на лету
set incsearch

// выделять строку, на которой находится курсор
set cursorline

// количество cтрок в всплывающем окне
set pumheight=10

// использовать пробелы в качестве разделителей окон. Не забудьте поставить в конце строки символ пробела
set fillchars+=vert:\ 

// меняем mapleader на ",", по умолчанию - "\"
let mapleader=","

// рекомендуемые настройки для Vundle
filetype off
filetype plugin on
filetype plugin indent on

// включить подсветку синтаксиса
syntax enable

// выбираем темный фон
set background=dark

// выбираем цветовую схему
colorscheme solas
Комбинации клавиш
Синтаксис создания комбинации, как не сложно догадаться, следующий:

[[mode]nore]map keys command
где mode — режим или окружение, где работает комбинация

nore (non-recursive) — не «раскрывать» комбинацию, а использовать значение по умолчанию

:map j gg // j = gg
:map Q j // Q = gg
:noremap W j // W = j

<CR> - enter
<C> - Ctrl
Подробнее про назначение комбинаций

// выходим в "нормальный" режим по df. "d" используется гораздо чаще, чем "j"
// наверное, забиндить "jj" было бы куда уместнее, но я уже привык, к тому же так быстрее
imap df <Esc>l

// часто нужно отделять блоки кода пустой строкой, например, перед return
nnoremap 2o o<CR>

// тоже самое, что и предыдущая команда, только в другом направлении
nnoremap 2O O<Esc>O

// передвинуть текущую вкладку вправо
nnoremap tm :tabm +1<CR>

// передвинуть текущую вкладку влево
nnoremap tM :tabm -1<CR>

// убрать подсветку найденных совпадений
nnoremap <C-h> :noh<CR>

// комментируем фрагмент кода
map <C-?> <plug>NERDCommenterComment

// комментируем строку, повторное нажатие убирает комментарий
map <C-_> <plug>NERDCommenterToggle

// создаем phpDoc для функций, классов, свойств
nnoremap <C-d> :call PhpDoc()<CR>

// показать окно с тегами
nnoremap <C-m> :TagbarToggle<CR>

// показать дерево проекта
nnoremap <C-p> :NERDTreeToggle<CR>

// показать syntax group для участка кода, а также цвет этой группы. Удобно при создании своей цветовой схемы
nnoremap <C-g> :call SyntaxAttr()<CR>

// мне гораздо удобнее нажать <C-j> и <C-k> для выбора последующего и предыдущего значения, чем <C-n> и <C-p>
inoremap <C-j> <C-n>
inoremap <C-k> <C-p>
cnoremap <C-j> <C-n>
cnoremap <C-k> <C-p>

// прописываем use
autocmd FileType php noremap <C-u> :call PhpInsertUse()<CR>

// открыть ~/.vimrc
nnoremap <F4> :tabe ~/.vimrc<CR>:tabm 0<CR>

// сохранить ~/.vimrc и применить изменения
nnoremap <F5> :w<CR>:so $MYVIMRC<CR>
Мне не нравится идея менять стандартное поведение клавиш, но следующие комбинации я нашел весьма удобными для себя. Я редко пользуюсь поиском символа в строке (f и F), а такие команды, как J и K, я ни разу так и не использовал.

// переместиться в начало видимой области
nnoremap K H

// переместиться в конец видимой области
nnoremap J L

// открыть предыдущее окно
nnoremap H gT

// открыть следующее окно
nnoremap L gt

// окно поиска файлов
nnoremap F :CtrlP<CR>
nnoremap ff :CtrlP<CR>

// find tag - нечеткий поиск тега в файле
nnoremap ft :CtrlPBufTag<CR>

// find buffer - нечеткий поиск буфера
nnoremap fb :CtrlPBuffer<CR>

// find symbol - переместиться к любому символу в файле
nmap fs <Plug>(easymotion-s)

// find line - переместиться к любому символу в строке
nmap fl <Plug>(easymotion-sl)

// find current - найти текущий файл в дереве проекта
nnoremap fc :NERDTreeFind<CR>

// find pattern - поиск слова в проекте
nnoremap fp :CtrlSF 
Самой сложной задачей для меня оказалась установка youcompleteme настройка переключения вкладок <Alt-n>, на которую я потратил часов 5 (5, Карл!). Как я только не писал: <Alt-1>, <A-1>, <M-1>, ^[1 — escape-последовательность (<C-v>, потом Alt + 1). Читал :help :map-alt-keys, создавал файл ~/.inputrc с содержанием set convert-meta on. Забавно, но в xterm всё работало. Gnome-terminal преподнес мне уйму незабываемых ощущений, пока я не наткнулся на этот ответ на SO. Должен признаться, я почти сразу нашел этот ответ, но мне показалось, что программировать комбинацию клавиш, хм, слишком. Немного изменив пример, получаем:

for c in range(1, 9)
	exec "set <A-".c.">=\e".c
	exec "map \e".c." <A-".c.">"

	let n = c - '0'
	exec "map <M-". n ."> ". n ."gt"
endfor
Это какой-то мазохизм, и я верю, что есть что-то более адекватное (напишите в комментариях, если это так, пожалуйста), просто в тот момент я был рад любому решению.

Некоторые стандартные комбинации
// вставка из системного буфера. Нужен vim, скомпилированный с флагом "clipboard". Чтобы проверить, наберите vim --version | grep "+clipboard" в вашем терминале
<C-r> *

// центрировать экран на текущей строке
zz

// перейти к определению тега (необходим тег-файл)
<C-]>

// вернуться на уровень выше по стеку вызовов команды <C-]>
<C-t>

// вставка последнего удаленного(d) или скопированного(y) текста. Удобно использовать в режиме вставки или в режиме командной строки
<C-r> "
Аббревиатуры
Vim позволяет создавать полезные сокращения команд, просто пропишите в вашем .vimrc следующее «abbr help tab help» и после ввода «help», и нажатия пробела, vim раскроет её до «tab help». Чтобы избежать «раскрытия», перед пробелом нажмите <C-v>.


Заключение: vim дает свободу, несравнимую ни с чем. Возможно, emacs может составить конкуренцию, но с ним пока не работал. Переход от sublime'a к vim'у напоминает мне переучивание с 4-х пальцевой (насколько я помню) печати на 9-ти пальцевую. Не поймите меня неправильно, sublime замечательный редактор, речь о том, что поначалу вы теряете привычную скорость; проходит время, продуктивность возвращается до прежнего уровня и начиная с этого момента вы наращиваете скорость. Все основные функции, которыми я пользовался в sublime, перекочевали в vim в том или ином виде. Самое время отрабатывать комбинации и расширять стандартные возможности редактора с помощью viml. Есть еще одна особенность, которая напоминает мне смену основной ОС с Windows на Ubuntu. В Windows я пользовался терминалом, наверное, раз 10 за всё время. Я не могу сказать, что мне чего-то не хватало, вполне всё устраивало. Но когда переходишь на linux, то волей-неволей начинаешь использовать консольные команды. Не осознанно (и это важно) вы получаете инструмент (bash) для решения определенных задач. В vim'e приходится постоянно что-то гуглить в поисках решения тех или иных проблем. Очень часто я вижу решения, которые отличаются от привычной настройки sublime или похожих редакторов в стиле key:value. Вы в буквальном смысле программируете свой редактор. Почти сразу вы видите, как инициализировать переменную, чуть позже — как применить ту или иную настройку для определенного типа файлов, еще позже — как слушать события или создавать циклы. По крупицам информации вы получаете представление про viml и, возможно, скоро напишите свой первый плагин. Конечно, всё это можно узнать просто открыв документацию к языку, но, должен сказать, желания освоить python или api sublime у меня так и не появилось. Лично я уверен, что vim приберег для меня еще немало приятных сюрпризов, а мой .vimrc, похоже, будет меняться всё время, пока я работаю с этим редактором.



Несколько вопросов
1. Если буфер изменился, airline выделит таб другим цветом, тем не менее, когда мы переключаемся на другую вкладку, измененная вкладка окрашивается в обычный цвет. Из-за этого, при выходе из редактора, часто получаю предупреждение, что буфер не сохранен. Можно ли подсвечивать все измененные вкладки, независимо от того, активны они или нет?

2. В readme nerdtree сказано, что можно изменить символ открытия/закрытия директории прописав g:NERDTreeDirArrowExpandable и g:NERDTreeDirArrowCollapsible. Однако, при попытке выставить "+" и "-", nerdtree падает. Кто-нибудь пробовал починить?

3. Как подружить youcompleteme и omnicompletion? Приходится идти напрямую, нажимая <C-x><C-o>.

4. В начале каждого php-скрипта стоит "<?php", когда курсор находится над "<", то vim ищет ближайший ">". Как отключить подсветку этого символа для php-файлов? Что-то на подобии:

au FileType php set matchparen-=<
.vimrc целиком
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

" common
Plugin 'scrooloose/nerdtree'
Plugin 'valloric/youcompleteme'
Plugin 'xolox/vim-easytags'
Plugin 'majutsushi/tagbar'
Plugin 'tpope/vim-fugitive'
Plugin 'easymotion/vim-easymotion'
Plugin 'ctrlpvim/ctrlp.vim'
Plugin 'terryma/vim-multiple-cursors'
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
Plugin 'scrooloose/nerdcommenter'
Plugin 'matze/vim-move'
Plugin 'raimondi/delimitmate'
Plugin 'mattn/emmet-vim'
Plugin 'scrooloose/syntastic'
Plugin 'tpope/vim-surround'
Plugin 'sirver/ultisnips'
Plugin 'honza/vim-snippets'
Plugin 'xolox/vim-session'
Plugin 'xolox/vim-misc'
Plugin 'SyntaxAttr.vim'
Plugin 'dyng/ctrlsf.vim'
Plugin 'rking/ag.vim'
Plugin 'godlygeek/tabular'

" php
Plugin 'stanangeloff/php.vim'
Plugin 'sumpygump/php-documentor-vim'
Plugin 'arnaud-lb/vim-php-namespace'

" javascript
Plugin 'pangloss/vim-javascript'

" html
Plugin 'othree/html5.vim'

" twig
Plugin 'evidens/vim-twig'

" css
Plugin 'mtscout6/vim-tagbar-css'

" colors
Plugin 'damage220/solas.vim'
Plugin 'nanotech/jellybeans.vim'
Plugin 'mhartington/oceanic-next'

call vundle#end()

" settings
set tabstop=4
set softtabstop=4
set shiftwidth=4
set autoread
set autoindent
set smartindent
set rnu
set laststatus=2
set timeoutlen=500
set ttimeoutlen=0
set keymap=russian-jcukenwin
set iminsert=0
set imsearch=0
set encoding=utf-8
set termencoding=utf-8
set updatetime=500
set noswapfile
set splitright
set splitbelow
set nocompatible
set tags=./tags;
set ignorecase
set hidden
set hlsearch
set incsearch
set cursorline
set pumheight=10
set fillchars+=vert:\ 
let mapleader=","
filetype off
filetype plugin on
filetype plugin indent on
" autocmd CompleteDone * pclose

" color
syntax enable
set background=dark
colorscheme solas

" abbreviations
abbr help tab help

" mappings
imap df <Esc>l
nnoremap 2o o<CR>
nnoremap 2O O<Esc>O
nnoremap tm :tabm +1<CR>
nnoremap tM :tabm -1<CR>
nnoremap K H
nnoremap J L
nnoremap H gT
nnoremap L gt
nnoremap F :CtrlP<CR>
nnoremap ff :CtrlP<CR>
nnoremap ft :CtrlPBufTag<CR>
nnoremap fb :CtrlPBuffer<CR>
nmap fs <Plug>(easymotion-s)
nmap fl <Plug>(easymotion-sl)
nnoremap fc :NERDTreeFind<CR>
nnoremap fp :CtrlSF 
nnoremap <C-h> :noh<CR>
map <C-?> <plug>NERDCommenterComment
map <C-_> <plug>NERDCommenterToggle
nnoremap <C-d> :call PhpDoc()<CR>
nnoremap <C-m> :TagbarToggle<CR>
nnoremap <C-p> :NERDTreeToggle<CR>
nnoremap <C-g> :call SyntaxAttr()<CR>
inoremap <C-j> <C-n>
inoremap <C-k> <C-p>
cnoremap <C-j> <C-n>
cnoremap <C-k> <C-p>
autocmd FileType php noremap <C-u> :call PhpInsertUse()<CR>
nnoremap <F4> :tabe ~/.vimrc<CR>:tabm 0<CR>
nnoremap <F5> :w<CR>:so $MYVIMRC<CR>

" map <alt+n> to navigate through tabs
for c in range(1, 9)
	exec "set <A-".c.">=\e".c
	exec "map \e".c." <A-".c.">"

	let n = c - '0'
	exec "map <M-". n ."> ". n ."gt"
endfor

" nerdtree
let NERDTreeAutoDeleteBuffer = 1

" move
let g:move_key_modifier = 'C'

" youcompleteme
let g:ycm_server_python_interpreter='python'
let g:ycm_autoclose_preview_window_after_completion = 1
let g:ycm_key_list_select_completion = ['<Down>']

" emmet
let g:user_emmet_expandabbr_key = '<C-e>'

" airline
let g:airline_theme='solarized'
let g:airline_powerline_fonts = 1
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#tab_min_count = 0
let g:airline#extensions#tabline#formatter = 'unique_tail'
let g:airline#extensions#tabline#show_buffers = 0
let g:airline#extensions#tabline#fnamemod = ':t'
let g:airline_section_warning = ''
let g:airline_section_error = ''
let g:airline#extensions#tabline#show_close_button = 0
let g:airline#extensions#tabline#left_alt_sep = ''
let g:airline#extensions#tagbar#enabled = 0
let g:airline#extensions#tabline#show_tab_nr = 1
let g:airline#extensions#tabline#tab_nr_type = 1

" easymotion
let g:EasyMotion_smartcase = 1
let g:EasyMotion_do_shade = 0
hi link EasyMotionTarget Search
hi EasyMotionTarget2First ctermfg=202 ctermbg=None cterm=None
hi EasyMotionTarget2Second ctermfg=202 ctermbg=None cterm=None

" session
let g:session_autoload = 'yes'
let g:session_autosave = 'yes'
let g:session_autosave_periodic = 5
let g:session_autosave_silent = 1
let g:session_default_to_last = 1

" NERDCommenter
let g:NERDSpaceDelims = 1

" html
au BufNewFile,BufRead *.tpl set filetype=html syntax=php

" syntastic
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0

" tagbar
let g:tagbar_sort = 0
let g:tagbar_width = 35
let g:tagbar_iconchars = ['+', '-']
let g:tagbar_map_close = '<C-m>'
let g:tagbar_type_php = {
	\'ctagstype': 'php',
	\'kinds': [
		\'i:interfaces',
		\'c:classes',
		\'d:constants',
		\'f:functions'
	\]
\}
let g:tagbar_type_javascript = {
\'ctagstype':'JavaScript',
	\'kinds' : [
		\'f:functions',
		\'c:classes',
		\'m:methods',
		\'p:properties'
	\]
\}

" delimitmate
let delimitMate_expand_cr = 1
let delimitMate_expand_space = 1
au FileType vim,html let b:delimitMate_matchpairs = "(:),[:],{:},<:>,>:<"

" NERDTree
" let g:NERDTreeDirArrowExpandable = '+'
" let g:NERDTreeDirArrowCollapsible = '-'

" ctrlp
let g:ctrlp_by_filename = 1
let g:ctrlp_working_path_mode = 'wr'
let g:ctrlp_map = ''
let g:ctrlp_buftag_types = {
	\'php': '--php-kinds=icdf'
\}

" ctrlsf
let g:ctrlsf_position = 'right'

" easytags
let g:easytags_file = './tags'
let g:easytags_auto_highlight = 0
let g:easytags_events = ['BufWritePost']
let g:easytags_async = 1
vim как ide
Предвидя некоторые вопросы в стиле: «как в vim'e рефакторить код также удобно, как и в моей любимой ide?», пожалуй, отвечу сразу.



Если вы заядлый vim'ер, то вам могут понравиться следующие расширения для chrome:



vimium
Расширение добавляет комбинации для навигации по странице и удобному перемещению по ссылкам, подробнее.

wasavi
Добавляет основные возможности vim'a для работы с текстовыми полями. Расширение можно активировать, нажав \<Insert\>, <C-enter> или же при фокусе текстового поля (настраивается).



PS: вместо родного символа комментария viml (двойная кавычка), я решил использовать "//", поскольку viml на хабре нет, и я не знаю, есть ли язык со схожим комментированием кода.

PS2: некоторые комбинации экранированы символом "\", дабы парсер не считал их за html-теги. Тег «pre» — блочный, решил, что лучше уж так.



UPD: добавлена поддержка gui для solas.

http://itnan.ru/post.php?c=1&p=303524
https://habrahabr.ru/post/303524/
Удобный Vim


чтобы включить подсветку в редактор nano нужно:



Ctrl+C (закончить ввод и выйти)

получить все варианты подсветки:



или




http://www.unix-lab.org/posts/nano/

Два в одном: как пользоваться Vim и Nano?
Alt+U (Esc U) — Undo, отмена последнего действия.
Alt+E (Esc E) — Redo, повтор отменённого действия.
F2 — Выход с сохранением файл
Ctrl+X — Вернуться к редактированию из справки, и прочих диалоговых окон, выход из программы.

Копирование и вставка текста:
Alt-A (Ctrl-6) — установить\снять маркер начала выделения текста (либо просто стрелки с shift)
Alt+6 (Esc 6) — копировать выделение текст в буфер обмена. Комбинация alt+6 у меня занята и не заработала.
Ctrl+K (или F9) — вырезать выделенный фрагмент в буфер обмена, при отсутствии выделения удалить строку.
Ctrl+U (или F10) — вставить фрагмент из буфера обмена
Ctrl+Shift+V — вставить из GUI буфера обмена
Ins — Вставка текста из другого файла, либо вывода команды.

Поиск и замена:
Ctrl+W — Поиск
Alt+W — Повторный поиск
Ctrl+\ — Замена. Помнит последний поиск как изменяемое по умолчанию.

Ctrl + K - удалить всю строку
Alt + T - удалить все ниже курсора

Чтобы запускать тестовые куски кода javascript прямо в текстовом редакторе sublime text, не открывая браузер для просмотра вывода функции, эта короткая инструкция может быть полезной.

Read more... )
https://web.archive.org/web/20190627093849/http://www.unix-lab.org/posts/js-console-sublime-text/
http://uzverss.livejournal.com/33842.html


Зачем нужна ещё одна, 1001я публикация на эту тему? Статей про vim и nano написано огромное количество, но как правило они касаются только одного из редакторов, либо представляют из себя общий обзор. Чтобы в одной были сжато описаны оба редактора, но при этом без углубления в дебри приведены все основные клавиши управления для полноценной работы, я не нашёл. Поэтому, почитав найденные материалы, я начал их конспектировать, так и родилась эта статья.

Read more... )
https://habrahabr.ru/post/331600/
Клавиши и комбинации клавиш VIM
Моя шпаргалка по работе в Vim
http://najomi.org/vim
Арнольд Роббинс, Элберт Хана, Линда Лэмб "Изучаем редакторы vi и Vim" (7-е издание) 2013
Перевод справочника команд редактора vi из официального учебника Solaris
------------------------------------------------------------------
самое простое для новичка:

чтобы внести изменения в содержание файла в редакторе vi— необходимо:
  • нажать клавишу «i» или «Insert»
  • для выхода из режима редактирования — «esc»
  • для сохранения внесенных изменений — «Shift+:» затем «wq» и нажать «Enter»
  • чтобы выйти без сохранения — «Shift+:» затем «q!» и нажать «Enter»

можно также запустить в "ограниченном режиме"
rgvim



Создание статьи с ответами на часто задаваемые вопросы по LyX давно назрело. Известно, сколько нервов может попортить даже казалось бы небольшая проблема. Хуже того, начинающий пользователь не найдя ответов на свои вопросы может и вовсе отказаться от использования программы. Поэтому, в данной заметке я постараюсь дать ответы на наиболее популярные вопросы по LyX для начинающих пользователей.Read more... )
http://obscurityway.blogspot.ru/2013/05/lyx.html



В настоящее время в рунете практически отсутствует информация по LyX не в виде обзоров, а в виде учебников, руководств, самоучителей. Данная учебная статья посвящена работе в текстовом процессоре LyX и призвана в некоторой мере восполнить этот пробел. По задумке, выполнив небольшое задание, которое здесь разбирается вы узнаете самые главные аспекты работы в LyX.


Оглавление:


I. Установка и настройка

II. Запуск и первое знакомство

III. Создание документа в LyX

  1. Набор текста

  2. Списки

  3. Заголовки и структурирование

  4. Математика

  5. Таблицы

  6. Метки и перекрестные ссылки

  7. Содержание

  8. Вставка рисунков

  9. Сноски

  10. Список литературы

  11. Настройка документа

  12. Просмотр созданного документа

  13. Форматирование документа

  14. Готовимся к публикации

IV. Исходные файлы

V. Источники


I. Установка и настройка


1) Windows. Для работы LyX потребуется MiKTeX (дистрибутив TeX для платформы Windows). Можно пойти двумя путями: скачать LyXWinInstaller, который включает в себя MiKTeX, LyX а также полезные программы такие как Ghostscript (интерпретатор PS и PDF), Aspell (проверка орфографии), GSview (просмотрщик документов) и несколько других, или поставить MiKTeX отдельно, а потом установить LyX.

Подробнее об установке.

2) Ubuntu Linux и родственные с ним дистрибутивы. Установка пакета TeX Live (дистрибутив TeX для Unix) а также вспомогательных пакетов из репозитория выполняется командой:

sudo apt-get install texlive-full

Затем через менеджер пакетов Synaptic или через Центр приложений можно установить собственно Lyx.

sudo apt-get install lyx

Варианты установки можно прочесть здесь.

3) Об установке в MacOS и других Unix-системах можно прочесть на официальном сайте:

http://wiki.lyx.org/LyX/LyXOnLinux

http://wiki.lyx.org/Mac/Mac


II. Запуск и первое знакомство


Первое что следует сделать, в первый раз запустив LyX - открыть справочный раздел. На русском доступны следующие разделы документации:


  • Введение

  • Самоучитель


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


III. Создание документа в LyX


Для примера давайте оформим в LyX статью Википедии, посвященную ему же. Рамки данной заметки не позволят описать все возможности LyX. Поэтому мы рассмотрим основные моменты и создадим простой документ, тем ни менее в процессе познакомившись с основными принципами и достоинствами работы в LyX. Если у вас что-то не получается, скачайте готовый вариант (в самом низу статьи) и посмотрите как все сделано. К тому же документация по LyX вполне исчерпывающая и позволяет находить ответы на вопросы.








 Вот такой документ у нас получится



1. Набор текста


Вставим в созданный новый документ следующий текст:


LyX (произносится «ликс») — свободный процессор документов, основанный на системе компьютерной вёрстки LaTeX. LyX является кроссплатформенным программным обеспечением и имеет готовые сборки для Windows, Mac OS X и различных дистрибутивов Linux, а также неофициальную сборку для OS/2.


LyX придерживается парадигмы WYSIWYM (англ. what you see is what you mean, примерный перевод — «видишь то, что подразумеваешь»), которая противопоставляется идеям WYSIWYG, используемым в обычных текстовых процессорах. В соответствии с этой парадигмой пользователь пишет текст и определяет его семантическую структуру, помечая содержимое в соответствии с его смыслом, назначением в документе. Задание внешнего вида возлагается на редактор, который генерирует выходной файл в соответствии с набором правил, определяющих внешний вид документа.


В LyX структура документа частично определяется шаблоном, выбранным для него. Эти шаблоны соответствуют классам документов LaTeX. Процесс генерации выходного файла выполняется в два этапа. Первый этап состоит в преобразовании из внутреннего формата в LaTeX, на втором этапе LaTeX-процессор используется для генерации выходного документа в необходимом формате (DVI, PDF, и т. д.). Преимущество этого подхода в том, что LyX может предоставить любой формат, в который может быть сконвертирован LaTeX файл.


Примечание:


В версии lyx 2.x, то после набора текста доступна проверка орфографии на лету. Для этого необходимо зайти в "Инструменты -> Настройки -> Настройки языка -> Проверка правописания". Выберете здесь движок проверки офографии - spellchecker engine, например enchant, aspell, hunspell. Установить их можно скачав с официального сайта или средствами менеджера пакетов в linux. После выбора движка появится возможность проверять орфографию, но только одного языка. Если оказалось так, что весь текст подчеркнут красным, зайдите в "Документ -> Настройки -> Язык" и выберете Русский.




Хотелось бы отметить окно окружений, с которым нам придется работать постоянно. При наборе текста оно показывает "Обычный", что является окружением по умолчанию для текста.



Окружения это настолько важная и фундаментальная для LyX вещь, что я приведу цитату из самоучителя Lyx:


Различные части документа служат различным целям; мы называем эти части окружениями. Большинство документов состоит из обычного текста. Заголовки раздела (главы, подраздела и т.д.) дают понять пользователю, что начинается новый тематический раздел или подраздел. Некоторые типы документов имеют специальные окружения. Журнальная статья содержит резюме и заголовок. Письмо не содержит ни того, ни другого, однако, возможно, содержит окружение с адресом отправителя.


Окружения — значительная часть философии LyX «Вы видите то, что вы имели в виду». Конкретное окружение может требовать определённых стилей и размеров шрифта, размеров отступа, междустрочного интервала и тому подобное. LyX поможет вам избежать изучения всевозможных стилей форматирования.



2. Списки


Создадим список с перечислением возможностей LyX. Для этого вставим "возможности" как обычные абзацы текста, затем выделим их и в списке окружений выберем "Перечисление". Есть и другие способы сделать список в плане алгоритма действий, думаю это не трудно. Главное понять, что окружение любого абзаца (строки) текста всегда можно поменять.

Пример списка возможностей LyX:


  • GUI с системой меню, настраиваемые сочетания клавиш;

  • автодополнение текста;

  • WYSIWYG-редактор таблиц; 

  • визуальный редактор формул с возможностью ввода команд LaTeX; 

  • копирование/вставка исходного кода LaTeX; 

  • ...










3. Заголовки и структурирование


Наш документ уже достаточно большой, чтобы разбить его на части, то есть структурировать. Перейдем в начало документа и введем следующую строку:


LyX - текстовый процессор будущего

Теперь выберем для этого текста окружение "Заглавие". Внешний вид его сразу же измениться. Правда на бумаге этот заголовок будет выглядеть по-другому. Но нам же понятно, что это заголовок? Это и есть WYSIWYM.

После первого абзаца вставим еще одну строку:


Идеология

И выберем для нее окружение "Раздел*".

Заголовок "Возможности" перед соответствующей частью текста добавьте сами.

Теперь наш документ структурирован. Посмотреть структуру можно выбрав в меню панель "Документ -> Структура". С помощью нее также осуществляется навигация по документу и некоторые другие интересные вещи.




 Обратите внимание - после создания структуры доступна панель для быстрой навигации по документу.



4. Математика


Давайте наберем формулу. Для примера возьмем уравнение Шредингера:





Формулы в LyX бывают внутристрочными и выключенными. Создадим пронумерованную формулу "Вставка -> Математика -> Пронумерованная формула". Появится поле для ввода. Ввод формул удобно делать с помощью панелей математика и формула:



Панель эта довольно дружелюбна и понятна. Если вам тяжела такая формула, введите что-нибудь по-проще.

Заметьте, что за место номера справа от формулы стоит символ решётки (а в Lyx 2.0 - уже и сам номер). Это нумерация, о которой вам можно не беспокоиться - LyX все сделает за вас.



Примечание:

Для набора формул удобно использовать горячие клавиши и коды tex. Например в формуле после символа можно нажать "_" и LyX автоматически перейдет к вводу подстрочного индекса. Можно начать набирать "\alp" и LyX предложит вам ввод "\alpha". Для автозавершения нажмите Tab, и LyX заменит код на соответствующую греческую букву. Вставлять внутристрочную формулу можно комбинацией клавиш Ctrl-M, выключенную - Ctrl+Shift+M. Завершить редактирование формулы можно клавишей Esc. Навигация по формуле осуществляется клавишами со стрелками "вверх", "влево" и т.п.



Подробнее о математике в LyX вы можете узнать из самоучителя, в котором данный вопрос разобран обстоятельно. Очень рекомендую ознакомиться, ведь математика для LyX - сильная строна.



5. Таблицы


LyX обладает неплохим инструментарием для создания таблиц. Для вставки таблицы выберите "Вставка -> Плавающий объект -> Таблица". Введите название таблицы "Версии LyX". Далее создайте строку внутри плавающего объекта. Теперь можно вставить собственно таблицу "Вставка -> Таблица". Укажите два столбца и девять строк. Заполните таблицу.




Примечание:

Для быстрого заполнения таблицы можно воспользоваться трюком - выделите текст в таблице Википедии целиком и нажмите копировать. Перейдите в LyX, переместите курсор в первую ячейку таблицы и выберите "Правка -> Вставить как -> Простой текст" (или нажмите Ctrl+Shift+V).  Если все пройдет гладко, LyX автоматически разнесет информацию по ячейкам таблицы.




ВерсияДата выхода
0.7.024 октября 1995 года
1.0.01 февраля 1999 года
1.2.029 мая 2002 года
1.3.07 февраля 2003 года
1.4.08 марта 2006 года
1.5.027 июля 2007 года
1.6.010 ноября 2008 год
2.0.08 мая 2011 года






Теперь выровняем таблицу по центру. Для этого оставьте курсор в строке с таблицей и выберите "Правка -> Настройки абзаца". Укажите выравнивание по центру.







6. Метки и перекрестные ссылки


Раздел с таблицей озаглавим "История разработки".

Перед таблицей введем текст:


Релиз значительно усовершенствованной версии 2.0.0 выпущен 8 мая 2011 года. История выхода версий приведена в таблице

Далее поместим курсор в поле названия таблицы. Выберем в меню "Вставка -> Метка". В качестве названия метки LyX предложит использовать название таблицы, нам это подходит. Таким образом мы пометили таблицу. Теперь перейдите в конец текста "История выхода версий приведена в таблице". Нажмите "Вставка -> Перекрестная ссылка". Выберете созданную метку и нажмите Ок. Рядом с текстом будет вставлена ссылка. В LyX она выглядит серым прямоугольником с текстом. При печати на бумагу эта ссылка будет заменена на цифру, к примеру:


История выхода версий приведена в таблице 1.

Если даже номер таблицы изменится, не будет необходимости переделывать ссылку, потому что она связана не с номером, а с объектом (таблицей), которая в любом случае остается неизменной. Это очень мощный инструмент, предоставляемый LyX. Существует также автоматическая нумерация формул, рисунков, разделов. Все эти объекты можно пометить и сделать на них перекрестные ссылки, навсегда забыв о нумерации и проблемах с ней. А сами ссылки называются перекрестными потому, что даже при изменении названия метки ссылка продолжает работать (двойная связь).



7. Содержание


В LyX все просто - если у вас есть структура, у вас есть и содержание. Собственно содержание вставляется одним нажатием. Перейдите в начало документа и после заглавия создайте абзац, выберите "Вставка -> Списки/Содержание -> Содержание". В документе появится серый прямоугольник с надписью "Содержание". На бумаге содержание будет отображено в соответствии со стилями класса документа.



8. Вставка рисунков




Вставим обтекемый рисунок с логотипом LyX.






Примечание:

В отличии от текстового процессора Word рисунки в LyX не "содержатся" непосредственно в документе (по крайней мере в word это выглядит именно так). Это позволяет обновлять рисунок автоматически, просто заменяя старый. Кроме того, рисунок всегда доступен извне. В общем долой убогую философию word, считающую пользователя за идиота.

Вообще, для каждого документа lyx желательно создавать отдельный каталог и в нем работать. В этом каталоге можно создать подкаталог, в котором будут храниться картинки. Поэтому сам файл рисунка необходимо поместить в каталог (или субкаталог) файла "LyX_article.lyx", над которым вы работаете. При перемещении рабочей папки по файловой системе ничего фатального не произойдет - lyx использует относительные пути к изображениям и прочим объектам.

Для вставки обтекаемого рисунка выберите "Вставка -> Плавающий объект -> Плавающий обтекаемый рисунок". Озаглавите рисунок "Логотип LyX". Внутри плавающего объекта создайте абзац и выберите "Вставка -> Графика". После выбора рисунка из файловой системы, отцентрируйте его так же как это было сделано с таблицей. Нажмите правой кнопкой по серому прямоугольнику "обтекать: Рисунок". Укажите ширину занимаемого пространства в процентах, например 25. Теперь поле с рисунком будет занимать четверть страницы по ширине.



9. Сноски


Сделаем сноску. Найдем в тексте фразу "WYSIWYG". После него выберем "Вставка -> Подстрочная сноска". В появившемся поле введите


Аббревиатура от англ. What You See Is What You Get, «что видишь, то и получишь».







10. Список литературы


LyX предоставляет удобную систему списка литературы. Для его создания перейдите в конец документа, создайте новую строку и выберите окружение "Библиография". Появится строка с серым прямоугольником "key-1". Введите в строку текст "http://wiki.lyx.org/". Нажимите на серый прямоугольник и введите в поле метка "wiki.lyx" (можете использовать цифру). Теперь можно сделать ссылку на данный источник библиографии. Перейдите к той части документа, где набиралась формула. Создайте новый абзац с текстом


Подробнее о возможностях LyX

Поместите курсор в конец строки и выберте "Вставка -> Ссылка на источник". Выберите доступную ссылку key-1 и нажмите "Добавить", а затем Ok. В тексте появится ссылка на источник.





11. Настройка документа


До сего момента мы абсолютно не обращали внимание на оформление. Им в LyX занимаются в последнюю очередь. Перейдем к настройке документа "Документ -> Настройка".


  • Класс документа - article (Polish cersion by M.V.). Можете поэкспериментировать с классами, если желаете. Мы оформляли статью, поэтому выбран класс article. Конкретно его я выбрал из-за нормального отображения ненумерованных разделов в содержании.

  • Шрифты - 11 кегель. Если вы хотите иметь больший выбор шрифтов, выберите класс article (more font sizes).

  • Формат страницы - А5.

  • Поля установите по вкусу.

  • Язык - Русский.

  • Размещение плавающих объектов - Здесь, если возможно.

  • В преамбулу добавьте:

    \usepackage{indentfirst}
    \usepackage{cmap}

    Первый пакет отвечает за отступы абзацев (по умолчанию они оформлены в американской системе, что нас не устроит).

    Второй пакет обеспечивает нормальную кодировку выходного pdf-документа.


Примените сделанные изменения. После установки языка документа (русского) можно проверить текст на орфографические ошибки (Инструменты -> Проверка правописания).



12. Просмотр созданного документа


Заметьте, до сих пор, кроме раздела "Настройка документа" мы ничего не говорили о собственно формате публикации и о конечном виде документа. Это возможно благодаря концепции структурного оформления, использующейся в LyX. Фактически, работая в LyX вы создаете действительно электронный документ - без привязки к размерам шрифтов, бумаги, полям и прочему. Но к сожалению, посматривать такой документ можно лишь в LyX, а он для этого не предназначен. Поэтому встает вопрос о конвертации в форматы для просмотра и печати. LyX позволяет конвертировать ваш документ в форматы (DVI, PDF, PS) и (HTML, TXT, RTF, ODT). Первая группа позволяет оценить достоинства LaTeX и получить документ полиграфического качества для печати и просмотра на компьютере. Вторая группа позволяет получить несколько иные представления документа, но данные форматы все достоинства документов LaTeX передать не могут.

Итак, после того, как документ набран в LyX и заданы все его параметры, можно посмотреть, что же получилось. Для этого выберите "Вид -> PDF (pdflatex)". Обратите внимание на качество полученного документа. Сохранить выходной документ можно путем экспорта "Файл -> Экспортировать в -> PDF (pdflatex)".



13. Форматирование документа


К сожаления, привязка к бумаге вынуждает более плотно работать над отображением документа в pdf. Что же, средства для этого у LyX имеются. Давайте разобъем документ так, чтобы он выглядел на бумаге прилично. Например, чтобы каждый раздел начинался с новой страницы. Конечно же в LyX недоступно убогое форматирование в стиле "Жми Enter пока не сделаешь как надо".

Перейдем к разделу "История разработки". Переправим курсор на начало строки заголовка раздела. Теперь выберем "Вставка -> Форматирование -> Новая страница". LyX в соотвествии с идеологией WYSIWYM отобразит нам символическое представление о начале новой страницы. Красота, да и только.

Что же, теперь неплохо было бы посмотреть, чего вышло. Для того, чтобы не тыкать кнопки просмотра постоянно, запомните следующие сочетания:

Ctrl-R - отрыть просмотр документа по умолчанию (как правило это просмотр в pdf)

Ctrl-Shift-R - обновить открытый pdf-документ с учетом изменений, сделанных в LyX с момента последнего обновления. Таким образом отпадает необходимость каждый раз открывать pdf-документ заново, а такие программы как Okular даже запоминают в каком месте вы находились, и вам не придется заново листать документ. Удобно!



14. Готовимся к публикации


Что же, документ создан. Теперь пришло время отшлифовать последние детали. Документ мы будем публиковать в pdf. Для удобства того, кто его читает прикрутим необходимый функционал. Перейдем в "Документ -> Настройки -> Свойства pdf". Поставим галочку "Использовать поддержку huperref". Заполним поля название, автор, тема, ключевые слова по вкусу. Теперь созданный pdf-файл будет иметь навигацию по содержанию, возможность перехода по ссылкам и прочие приятные мелочи.






В моем Okular это выглядит так


IV. Исходные файлы





Статья, файлы и исходники доступны по лицензии Creative Commons Attribution-ShareAlike. Источник - русская Википедия.




V. Источники




http://obscurityway.blogspot.ru/2011/01/lyx.html
Таинственная программа LyX. Часть 1
Таинственная программа LyX. Часть 2
Таинственная программа LyX. Часть 3
Таинственная программа LyX. Часть 4


Как известно, качество звукозаписи у современных смартфонов, планшетов и ноутбуков оставляет желать лучшего, мягко говоря. Что же делать, если вам нужна качественная аудиозапись, а в вашем распоряжении лишь трек с жужжанием, шипением и бубнёжем? Ответ прост: установить программу Audacity в Ubuntu и применить чудо-фильтр Noise Removal, который сделает всю работу за вас.Read more... )


http://liberatum.ru/exclusive/audacity-noise-removal




развернуть
Есть неплохой редактор Sublime Text, в нём удобно редактировать код, для того чтобы можно было сразу смотреть на его исполнение необходимо:

1. Установить Sublime Package Control, он поможет легко управлять плагинами, нажимаем ctrl+` и в открывшейся консоли вставляем код


если возникает ошибка
Error validating download (got ...... ), please try manual install
то взять код здесь
https://packagecontrol.io/installation#st3

2. Устанавливаем необходимые плагины
Preferenses -> Package Control -> Install Package
в окно вставляем плагины:
SublimeREPL
SublimePythonIDE
если нужно
http://damnwidget.github.io/anaconda/
и прочие необходимые, которые находятся по запросу в Install Package
устанавливаем их
список годных схем оформления и плагинов:


3. Создаём для запуска горячую клавишу:
Preferenses -> Key Bindings-User
вставить в Key Bindings-User следующий код:

Теперь при нажатии win+z происходит исполнение кода

Прочие мелочи:
Preferenses -> Settings-User
вставить в Settings-User следующий код:


или например этот:



Sublime Text можно настроить на любой вкус, чтобы изменить тему нужно в Settings-User всавить вместо приведённой "theme": "Sunrise.sublime-theme"
вот некоторые из тёмных тем:



темы и стили оформления можно посмотреть тут:

https://packagecontrol.io/search/Theme
https://colorsublime.github.io/


горячие клавиши:



русификация меню (если нужна) есть по ссылке
http://dimox.name/sublime-text-russian-menu/
http://files.is-best.net/Public/Sublime_Text_2/SublimeTextRussianMenu/

скрипт, чтоб не заморачиваться, использовать если нет каталогов
$HOME/.config/sublime-text-3/Packages/Default/ и $HOME/tttmppp




Для того чтобы код выполнялся в интерпретаторе python3 необходимо:

1. Изменить PYTHONPATH:
Preferences -> Package Setting -> SublimeREPL -> Setting - Default - копируем содержимое
Preferences -> Package Setting -> SublimeREPL -> Setting - User вставляем содержимое, заменяя
"default_extend_env": {},
на
"default_extend_env": {"PYTHONPATH": "YOU_PATH"},
Где вместо YOU_PATHs - прописываем нужные вам пути
узнать PYTHONPATH можно так:
запускаем интерпретатор python3
вбиваем там
import sys
print(sys.path)
получаем
['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-i386-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']



2. в Preferenses -> Key Bindings-User изменить
"cmd": ["python", "-u", "$file_basename"],
на
"cmd": ["python3", "-u", "$file_basename"],




Sublime Text 3 и gcc
Как установить Sublime Text для работы с C/C++
Sublime Text как IDE для ARM на примере STM32

нужно установить All autocomplete, C++ completions, C++ snippets и (если есть необходимость) SublimeGDB
запуск на компиляцию (и выполнение): Ctrl + b


советы
Как скомпилировать и запустить C в sublime text 3?
Для системы сборки sublime, реализующей команду меню Выполнить :
Перейдите в меню Инструменты->Система сборки->Новая система сборки...
Или
Создать файл ~/.config/sublime-text-3/Packages/User/GCC.sublime-build
И вставьте это:



1. Создайте новую систему сборки в Sublime: Инструменты > Система сборки > Новая система сборки. ..
2. Будет создан новый файл с именем untitled.sublime-build .
Если нет, перейдите в Настройки > Обзор пакетов > Пользователь
Если файл untitled.sublime-build есть , откройте его , если его нет , создайте его вручную и откройте .
3. Скопируйте и вставьте приведенный ниже код в вышеупомянутый файл untitled.sublime-build и сохраните его.


Закройте файл. Вы почти закончили!
4. Наконец , переименуйте свой файл с untitled.sublime-build на myC.sublime-build , или вы можете также показать свое творчество здесь. Просто сохраните расширение файла таким же.
5. Наконец , установите для текущей системы сборки имя файла, которое вы написали на предыдущем шаге. В этом случае это myC


Помеченные строки (Bookmarks)
Ctrl + F2 (по ней же и снимается), чтобы была возможность делать кликом мыши:

nano $HOME/.config/sublime-text-3/Packages/Default/Context.sublime-menu

добавить строчку:
    { "command": "toggle_bookmark", "caption": "Отметить строку" },

И в контекстном меню появится соответствующая команда.

Как вернуть верхнюю панель инструментов в Sublime Tex 2.02?
если случайно скрылось меню ;)

Нажимаете Alt, затем «View» ► «Show menu»

f78e468f931b45ccacc9636a08307909.jpg

для Linux: ctrl+shift+p, в водим в поиске "menu" и выбираем "View: Toggle Menu".

f39d4f2d793c45ae89f211d40dceeb8d.png


чтобы сохранить сессию

Preferences > Package Control), select Package Control: Install package, and search for “Session Manager”.
https://packagecontrol.io/packages/Session%20Manager
The commands, accessible through the command palette (ctrl+shift+p), are:

Session Manager: Save Session
Session Manager: Load Session
Session Manager: Delete Session



горячие клавиши

Работа с текстом

Хоткей Описание
ctrl+l Выделить строку.
ctrl+shift+m Выделить текст между двумя парными скобками.
ctrl+shift+a Выделить текст между двумя парными тегами.
ctrl+shift+j Выделить текст с соответствующим отступом.
ctrl+shift+space Выделить по контексту.
ctrl+shift+left Выделить слово слева.
ctrl+shift+right Выделить слово справа.
ctrl+a Выделить весь текст.
ctrl+shift+l Разделить выделенные строки на независимые участки редактирования.
ctrl+shift+up Переместить выделенные строки вверх.
ctrl+shift+down Переместить выделенные строки вниз.
ctrl+shift+d Дублировать строку.
ctrl+shift+k Удалить строку.
ctrl+backspace Удалить часть слова до курсора.
ctrl+delete Удалить часть слова после курсора.
ctrl+shift+backspace Удалить текст от курсора и до начала строки.
ctrl+k, ctrl+backspace Удалить текст от курсора и до начала строки.
ctrl+shift+delete Удалить текст от курсора и до конца строки.
ctrl+k, ctrl+k Удалить текст от курсора и до конца строки.
ctrl+j Объединить выделенные строки.
alt+q Объединить строки в параграфе.
ctrl+enter Добавить пустую строку под курсором.
ctrl+shift+enter Добавить пустую строку над курсором.
ctrl+alt+up Добавить курсор на следующей или предыдущей строке.
ctrl+alt+down Добавить курсор на следующей или предыдущей строке.
ctrl+/ Добавить или убрать однострочный комментарий.
ctrl+shift+/ Добавить или убрать блочный комментарий.
f9 Отсортировать строки в алфавитном порядке.
ctrl+f9 Отсортировать строки в алфавитном порядке с учетом регистра.
ctrl+k, ctrl+l Трансформировать выделенный текст в нижний регистр.
ctrl+k, ctrl+u Трансформировать выделенный текст в верхний регистр.
ctrl+t Транспонировать текст.
alt+. Закрыть незакрытый тег.
alt+shift+w Обернуть тегом выделенный текст.
insert Переключить режим ввода: вставка или замена.
ctrl+k, ctrl+space Установить метку.
ctrl+k, ctrl+a Выделить текст от курсора до метки.
ctrl+k, ctrl+x Поменять местами метку и курсор.
ctrl+k, ctrl+w Удалить метку.
ctrl+k, ctrl+g Удалить все метки.
ctrl+] Убрать отступ.
ctrl+[ Добавить отступ.
ctrl+y Повторить последнее действие.
ctrl+c or ctrl+insert Копировать.
ctrl+v or shift+insert Вставить.
ctrl+shift+v Вставить с отступом.
ctrl+x Вырезать.
shift+delete Вырезать.
ctrl+z Отмена последнего действия.
ctrl+shift+z Повторить последнее отмененное действие.
ctrl+u Отменить последнее выделение.
ctrl+shift+u Повторить последнее отмененное выделение.

Поиск и замена

Хоткей Описание
ctrl+f Открыть панель поиска.
ctrl+h Открыть панель поиска и замены.
ctrl+shift+f Открыть панель поиска и замены по всем файлам проекта.
ctrl+i Открыть панель быстрого поиска и поиск.
ctrl+shift+i Открыть панель быстрого поиска и поиск в обратном направлении.
alt+a Включить или выключить режим сохранения регистра на панели поиска и замены.
alt+r Включить или выключить использование регулярных выражений на панели поиска и замены.
f6 Включить или выключить проверку правописания.
alt+c Включить или выключить чувствительность к регистру на панели поиска и замены.
alt+w Включить или выключить режим поиска слова целиком на панели поиска и замены.
alt+enter Найти все.
ctrl+` Показать панель.
shift+enter Поиск в обратном направлении.
ctrl+alt+enter «Заменить все» на панели поиска и замены.
ctrl+shift+h Заменить текст далее.
f3 Поиск.
shift+f3 Поиск в обратном направлении.
f4 Переход к следующему результату поиска по всем файлам.
shift+f4 Переход к предыдущему результату поиска по всем файлам.
ctrl+f3 Быстрый поиск.
ctrl+shift+f3 Быстрый поиск в обратном направлении.
ctrl+d Найти и выделить текст.
ctrl+k, ctrl+d Пропустить выделенный текст.
alt+f3 Найти все.
ctrl+e Скопировать слово или выделенный текст в окно поиска.
ctrl+shift+e Скопировать слово или выделенный текст в окно замены.
ctrl+f6 Перейти к следующей ошибке.
ctrl+shift+f6 Перейти к предыдущей ошибке.
ctrl+p Открыть окно поиска файла «Goto Anything…».
ctrl+r Открыть окно перехода к функциональному блоку.
ctrl+g Открыть окно для перехода к заданной строке.
ctrl+; Открыть окно для перехода к заданному слову.

Фолдинг

Хоткей Описание
ctrl+shift+[ Свернуть код.
ctrl+shift+] Развернуть код.
ctrl+k, ctrl+1 – 9 Свернуть код соответствующего уровня.
ctrl+k, ctrl+0 or ctrl+k, ctrl+j Развернуть все.
ctrl+k, ctrl+t Свернуть атрибуты тегов.

Навигация

Хоткей Описание
ctrl+alt+p Открыть окно выбора проектов.
ctrl+f2 Установить или снять закладку.
f2 Перейти к следующей закладке.
shift+f2 Перейти к предыдущей закладке.
alt+f2 Выделить все закладки.
ctrl+shift+f2 Удалить все закладки.
ctrl+k, ctrl+c Переместить экран к курсору.
ctrl+up Прокрутка окна редактирования.
ctrl+down Прокрутка окна редактирования.
ctrl+m Переместить курсор к парной скобке.

Управление окнами

Хоткей Описание
alt+0 – 9 Выбор соответствующей вкладки.
ctrl+f4 Закрыть вкладку.
ctrl+tab Переключиться на следующую вкладку.
ctrl+shift+tab Переключиться на предыдущую вкладку.
ctrl+pageup Переключиться на вкладку слева.
ctrl+pagedown Переключиться на вкладку справа.
alt+shift+1 – 5 Управление количеством и расположением областей редактирования.
alt+shift+8 – 9 Управление количеством и расположением областей редактирования.
ctrl+1 – 4 Переключиться в соответствующую область.
ctrl+shift+1 – 4 Переместить вкладку в соответствующую область.
f11 Развернуть окно во весь экран.
shift+f11 Переключиться в «Отвлеченный режим».
ctrl+k, ctrl+b Показать или скрыть боковую панель.
ctrl+0 Переключить фокус на боковую панель.
ctrl+n Создать новую вкладку.
ctrl+w Закрыть текущую вкладку.
ctrl+shift+n Создать новое окно.
ctrl+shift+w Закрыть окно.

Работа с файлами

Хоткей Описание
ctrl+o Вызвать окно «Открыть файл».
ctrl+shift+t Открыть последний закрытый файл.
ctrl+s Сохранить текущий файл.
ctrl+shift+s Вызвать окно «Сохранить как».
alt+o Переключение между файлами представления и реализации.

Разное

Хоткей Описание
ctrl+shift+p Открыть окно списка функций.
ctrl++ Увеличить размер шрифта.
ctrl+- Уменьшить размер шрифта.
ctrl+q Запустить или остановить запись макроса.
ctrl+shift+q Воспроизвести макрос.
ctrl+alt+shift+p Отобразить в статусной строке название контекста, в котором находится курсор.
f7 Выполнить
ctrl+b Выполнить
ctrl+shift+b Выполнить
ctrl+break Отменить выполнение


доп. плагины
https://packagecontrol.io/packages/Terminus
https://github.com/daveleroy/sublime_debugger

удалённое редактирование конфигов
вставить в свой файл /etc/ssh/sshd_config на стороне сервера:
Subsystem sftp sudo -n true && sudo -n /usr/lib/openssh/sftp-server || /usr/lib/openssh/sftp-server
закомментить
#Subsystem sftp /usr/lib/openssh/sftp-server

systemctl restart sshd

в /etc/sudoers просто поместите новые записи после них.
sudo visudo
Новая запись должна выглядеть
myuser ALL=(ALL) NOPASSWD: ALL для одного пользователя, или
%sudo ALL=(ALL) NOPASSWD: ALL для группы.

разное
отредактировать хоткей множественного курсора
https://www.sublimetext.com/docs/multiple_selection_with_the_keyboard.html

Preferenses -> Key Bindings



в CudaText В command-palette нажми F9 для задания хоткея. Для команд "carets extend: ..........."

Просмотр и редактирование окончаний строк в Sublime Text
установить RawLineEdit
Ctrl+Shift+P
Raw Line Edit: Toggle Line Edit Mode
Raw Line Edit: View Line Endings

ссылки
Использование Sublime Text Editor 2 в качестве редактора текста Python 3.x
Настройка Sublime Text для Python

https://sublime.wbond.net/installation
https://sublime.wbond.net/packages/SublimeREPL
http://sublimetext.ru/documentation/горячие-клавиши
http://sublimetext.ru/documentation/параметры
djbook.ru Рецепты Sublime Text 3
Делаем из Sublime Text 3 IDE для Python и Django
Sublime-Text 3. Коротко о главном
Как sublimerepl установит на горячую клавишу?
Отображение непечатных символов в SublimeText2 как это делается в vim'e
Шпаргалка по Sublime Text 2
http://coddism.com/zametki/nastrojka_sublime_text
http://blog.brainf.net/soft/nastrojjki-sublime-text/
http://iklmn.net/blog/moi-nastroki-sublime-text-3.html
Превращаем Sublime Text 2 в Notepad++
Интегрируем Git в Sublime Text
Лучшие плагины Sublime Text 3
Top 12 Sublime Text Plugins
Sublime Text 2 хитрости
Небольшой обзор Sublime Text 2
Sublime Text — горячие клавиши
uzverss JavaScript в консоли Sublime Text
uzverss Настройка Sublime Text для работы через прокси
------------------------------------------------------------------------
Олег Молчанов Sublime Text 3
https://www.youtube.com/playlist?list=PLlWXhlUMyooYUgxmybYJiYNTicSHR8nme
------------------------------------------------------------------------
Web Developer Blog Sublime Text 2
https://www.youtube.com/playlist?list=PLVfMKQXDAhGXTtaRwrHzPLNQALkVhGWKj
------------------------------------------------------------------------


есть годный, лёгкий редактор кода IEP но у него по умолчанию гадкая тема оформления, простыми способами её не изменить
1. скачиваем с поддержкой gtk отсюда
2. отрыть в редакторе (с подсветкой кода) файл (где находится программа)iep/source/iep/codeeditor/base.py
и добавить в метод __init__ стиль (добавляем сюда)

    def __init__(self,*args, **kwds):
        ....
        S["Editor.Line numbers"] = "back:%s, fore:%s" % (back2, back3)
 
        # Apply style
        self.setStyle(S)
        ....

Read more... )
http://blogs.univ-poitiers.fr/laurentsignac/2013/09/01/sublime-dark-iep/

чтобы переключить настройки ("продвинутые") нужно вбить
iep.resetConfig() либо iep.resetConfig(True) в консоль логгера (Tools -> Logger) и перезапустить IEP

Оригинал взят у [livejournal.com profile] oio11 в Конвертируем документы в Ubuntu

Конвертируем документы в Ubuntu

Наверняка вам приходилось конвертировать документы в форматы pdf, doc, docx, xls, xlsx, odt и ods в Ubuntu Linux, не так ли? Для этого вам приходилось открывать LibreOffice, ждать загрузки, открывать документ и так далее. А сейчас я расскажу как это делать всего одной командой.Read more... )

Сценарий вырезает фрагмент видео из выделенного файла.
В скрипте используется приложение mencoder и zenity, которые должны быть установлены.
текст скрипта:
Read more... )


http://g-scripts.sourceforge.net/
http://www.sakryukin.ru//?module=filesdb&id=2&fid=28
http://www.sakryukin.ru//?module=filesdb&id=2


Торрент-клиент Deluge, веб-браузер Google Chrome, клиент Dropbox и множество других программ открывают файлы и папки посредством xdg-open (/usr/bin/xdg-open). Этот скрипт служит для определения DE, среди которых поддерживаются только Gnome, KDE и XFCE, после чего посылает запрос на открытие файла прилагающемуся к DE обработчику, который, в свою очередь, открывает встроенный файловый менеджер. В случае же, если у вас нет DE, а стоит какой-либо WM (Openbox, Fluxbox, Awesome и др.), то он просто открывает файл/папку в браузере по умолчанию.

ознакомиться
1. Открываем xdg-open любым редактором текста (нужны рут права). В моем случае вот так:

$ sudo nano /usr/bin/xdg-open

2. Ищем раздел open_generic(). Должно выглядеть примерно так:
open_generic()
{
    # Paths or file:// URLs
    if (echo "$1" | grep -q '^file://' ||
        ! echo "$1" | egrep -q '^[a-zA-Z+\.\-]+:'); then

        local file="$1"

        # Decode URLs
        if echo "$file" | grep -q '^file:///'; then
            file=${file#file://}

3. Добавляем в самое начало такой код:
 if [ -d "$1" ]; then
         pcmanfm $1
         exit
      fi
Получится примерно такое:

open_generic()
{
    if [ -d "$1" ]; then
        pcmanfm $1
        exit
     fi

    # Paths or file:// URLs
    if (echo "$1" | grep -q '^file://' ||
        ! echo "$1" | egrep -q '^[a-zA-Z+\.\-]+:'); then

        local file="$1"

        # Decode URLs
        if echo "$file" | grep -q '^file:///'; then
            file=${file#file://}

4. Теперь сохраняем. Теперь все должно открываться в pcmanfm
вместо pcmanfm можно использовать и другие ФМ напр. thunar

P.S.
nano ~/.local/share/applications/mimeapps.list

inode/directory=pcmanfm.desktop

xdg-mime
Например для установки Thunar в качестве файлового менеджера по умолчанию, запустите:
$ xdg-mime default Thunar.desktop inode/directory

проверить:
$ xdg-mime query default inode/directory

запустить
$ xdg-open ~

xdg-open http://example.com

Имеющиеся типы можно узнать так:

mimetype *.mp4
mimetype *.djvu
mimetype *.pdf


настройка других mimetype xdg и тд
открыть с помощью:
$HOME/.local/share/applications/
~/.local/share/applications/mimeapps.list
~/.config/mimeapps.list
~/.config/xfce4/helpers.rc

cat /usr/share/applications/exo-web-browser.desktop
cat /usr/share/applications/mimeinfo.cache
xdg-settings get default-web-browser
xdg-mime default debian-sensible-browser.desktop x-scheme-handler/https
xdg-mime default debian-sensible-browser.desktop x-scheme-handler/http
xdg-mime query default application/x-mimearchive

mimeopen -d file.mhtml
mimeopen -D file.mhtml
Будет задан вопрос, какое приложение использовать при открытии /path/to/file:
Выбранное приложение будет обработчиком по умолчанию для данного типа файлов

xdg-open https://archlinux.org


update-desktop-database ~/.local/share/applications/
update-mime-database ~/.local/share/mime/
gtk-update-icon-cache ~/.local/share/icons/hicolor/ -t

Модифицирование меню XFCE

как изменить приложения по умолчанию в debian

https://wiki.archlinux.org/index.php/Xdg-open_(Русский)
https://wiki.archlinux.org/index.php/XDG_MIME_Applications_(Русский)
http://oligarhsblog.blogspot.ru/2011/04/pcmanfm-vs-google-chrome.html
http://blog.aloneunix.ru/2011/10/xdg-open.html
https://bbs.archlinux.org/viewtopic.php?id=157033
http://mynotescomp.blogspot.ru/2015/05/blog-post_37.html?m=0
http://www.altlinux.org/Mime_Policy
http://linuxsetup.ru/katalogi-i-skripty-xdg/

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

Read more... )
http://eax.me/vim-commands/


Во время работы в vim часто приходится редактировать файлы в различной кодировке.

Для того чтобы открыть файл в нужной кодировке, надо выполнить команду:
:e ++enc=кодировка имяфайла

Вместо «кодировка» надо поставить необходимую (koi8-r, cp866, cp1251, utf8 )

Если имя файла не указывать то будет переоткрыт текущий файл.
Но гораздо удобней перекодировку делать не вводя команды а при помощи меню.

Для этого в .vimrc и добавляем там следующие строчки:
set wildmenu
set wcm=
menu Encoding.koi8-r :e ++enc=koi8-r
menu Encoding.windows-1251 :e ++enc=cp1251
menu Encoding.cp866 :e ++enc=cp866
menu Encoding.utf-8 :e ++enc=utf8
map :emenu Encoding.

При нажатии на F8 появится меню, в котором можно выбрать кодировку.

http://mainloop.ru/vim-text-editor/vim-i-menyu-pereklyucheniya-kodirovki-faylov.html

Profile

uzverss: (Default)
uzverss

December 2024

S M T W T F S
12345 67
891011121314
15161718192021
22232425262728
293031    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 21st, 2026 07:20 pm
Powered by Dreamwidth Studios