-8 / 2 / 0
Регистрация: 21.04.2015
Сообщений: 23
1

VIM как IDE для Python

30.04.2015, 18:35. Показов 4664. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте ещё раз. Понимаю что эта тема не раз поднималась в интернете.
Большенство обсуждений безнадёжно устарели. Некоторые плагины перестали
поддерживаться а другие заменены на новые. Я напишу как настроен VIM у меня.
Хотелось бы обменяться опытом и узнать как у других людей.

Записи в виде:
Плагин - настройки для него в vimrc если нужны.

Идентификатор отступов.
Код
github.com/Yggdroot/indentLine

let g:indentLine_enabled = 1
let g:indentLine_color_term = 7
let g:indentLine_char = '|' " '·'
Комментирование выделенных строк.
Код
github.com/tomtom/tcomment_vim
Пока не придумал как заставить работить по удобной клавише,
только вчера поставил.

Запуск Shell из VIM.
Код
github.com/vim-scripts/Conque-Shell
Код
set wildmenu
set wcm=<Tab>
menu Terminal.Bash      :ConqueTermSplit bash<CR>
menu Terminal.Ipython   :ConqueTermSplit ipython<CR>
map <F11>               :emenu Terminal.<Tab>
Авто исправление синтаксиса.
Код
autopep8 github.com/tell-k/vim-autopep8
Automatically formats Python code to conform to the PEP 8 style guide
Тут нечего писать, можно только изменить хоткей
Код
autocmd FileType python map <buffer> <F8> :call Autopep8()<CR>
Проверка синтаксиса и стиля в питоне.
dev-python/flake8 A wrapper around PyFlakes, pep8 & mccabe
github.com/nvie/vim-flake8
У меня уменьшен размер буфера.
Код
let g:flake8_quickfix_height=6
Для тех кто знает что такое теги:
Код
TagList app-vim/taglist требует dev-util/ctags
let Tlist_Auto_Open = 1 " Открытие автоматом.
let Tlist_Exit_OnlyWindow = 1 " Выход автоматом.
let Tlist_WinWidth = 20
let Tlist_Enable_Fold_Column = 0
nnoremap <silent> <F6> :TlistToggle<CR>
Не устанавливать python-mode, говно! Конфликты и плохо работает с python 3.x
Вернее требует дополнительных настроек и устарело. В часности не знает что
существует документация для третьей версии.

Python Автодополнение
Код
github.com/davidhalter/jedi-vim
Для вызова дополнения по <Tab>
Код
app-vim/supertab
Автодополнение только по клавише.
Код
let g:jedi#popup_on_dot = 0
Для плагинов использую
Код
app-vim/pathogen
но годится и любой другой способ.
Для pathogen:
Код
execute pathogen#infect()
Самое главное написал. У кого по другому делитесь опытом.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.04.2015, 18:35
Ответы с готовыми решениями:

Visual Studio как IDE для Python
Не буду изобретать велосипед, статью про него на русском можна прочитать здесь. Или ссылка на...

Как подключить IDE для Python 2.7.10? Я в этом тупой новичок:)
Как подключить IDE для Python 2.7.10? Я в этом тупой новичок:)

IDE python 3 для слабого пк
Привет. Посоветуйте IDE python 3 для слабого пк. Добавлено через 6 минут прошу прощения, IDE...

IDE для Python похожее на RStudio
Добрый день! Подскажите есть среда разработки для Питона максимально похожая на RStudio ?...

Какой IDE выбрать для python
Я начинающий питонист. В самом начале решил работать на пайчарме, но сейчас решил перейти на что...

5
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
30.04.2015, 19:48 2
когда пробовал вим, что то в этом роде и ставил. Пару замечаний - в такой теме было бы неплохо привести файлик .vimrc ( вроде бы так называется файл настроек вима?) . А что либо для взаимодействия с файловой системой, наподобие NerdTree вы не используете? А взаимодействие с системами контроля версий?
0
-8 / 2 / 0
Регистрация: 21.04.2015
Сообщений: 23
30.04.2015, 22:39  [ТС] 3
Для взаимодействия с файловой системой не понравился ни один плагин из тех
что я пробовал типа NerdTree vim-commander и др. И не стоит забывать что
каждый новый плагин замедляет работу. Поэтому использую:

" <F4> вертикальное разделение и открытие дерева каталогов
Код
set wildmenu
set wcm=<Tab>
menu Bumper.Open_buffer     :Vex!<CR>
menu Bumper.Close_buffer    :bd<CR>
menu Bumper.List_buffer     :ls<CR>
map <F4> :emenu Bumper.<Tab>
Если навести курсор на нужный файл и нажать <t> то файл откроется в новом буфере.
Для переключения между буферами:

" <F5> позволяет переключать вкладки справа-налево
Код
imap <F5> <Esc> :tabprev <CR>
map <F5> :tabnext <CR>

Внёс небольшие изменения.
Плагин vim-scripts/Conque-Shell себя не оправдал поэтому я вернулся к старому способу.
Запуск по <Ctrl+d>, не надо забывать для выхода из терминала и возвращения
в VIM повторно нажать <Ctrl+d>. Иначе останется безхозный своп от файла
который редактировали и изменения не будут пременены. А из баша можно
хоть ipython запускать, хоть чёрта лысого.

" Запуск Bash по <Ctrl+d>, так же по <Ctrl+d> возвращение в vim.
Код
noremap <C-d> :!/bin/bash<CR>
И повесил Комментирование выделенных строк app-vim/tcomment на <F3>
Переходим в визуальный режим по "v", выделяем строку или блок и нажимаем <F3>
Убирать комментарии так же.

" по умолчанию <Ctrl+_><Ctrl+_>
Код
noremap <F3> :TCommentMaybeInline<CR>
Для контроля за версиями у меня стоит замечательная штука.
Дистрибутив "Gentoo GNU Linux" назавается. Система portage за всем и следит.

Если кому то интересно привожу файл настроек ".vimrc" полностью.
Привожу как есть, ничего не исправляя, с пометками на память и проч.
И в нём не отображено всё что установлено для VIM. И там комментарии не везде.
Если что то не заработает пишите и я постараюсь вспомнить как делал.


Код
" Вставка форматированного текста с отступами
" :set paste
" отключить :set nopaste
"
" замена одного слова другим :%s/\<идиот\>/модератор/g
"
" Отмена действия Esc+u
"
" Cut and Paste в визуальном режиме d - вырезать p - вставить

" Статусбар.
set laststatus=2   " всегда показывать строку статуса

set nocompatible

" allow backspacing over everything in insert mode
set backspace=indent,eol,start

syntax on
filetype plugin indent on

" app-vim/colorschemes
" color scheme wuye, elflord, industry
colorscheme wargrey

" маркер переноса строк
set colorcolumn=80
highlight ColorColumn term=reverse ctermbg=6 guibg=DarkRed

" табуляции и пробелы
set tabstop=8
set shiftwidth=4
set smarttab
set expandtab
set softtabstop=4

" Умные отступы
set autoindent
set smartindent

" удалить лишние пробелы на конце
autocmd BufWritePre * :%s/\s\+$//e

" игнорировать регистр при поиске
set ic

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Запуск Bash по <Ctrl+d>, так же возвращение в vim.
noremap <C-d> :!/bin/bash<CR>

" Python, подсвечивать всё.
let python_highlight_all = 1

" <F2> меню кодировок
set wildmenu
set wcm=<Tab>
menu Кодировка.cp1251       :e ++enc=cp1251<CR>
menu Кодировка.koi8-r       :e ++enc=koi8-r<CR>
menu Кодировка.utf8         :e ++enc=utf-8<CR>
menu Кодировка.Save-utf8    :w ++enc=utf-8<CR>
menu Кодировка.Save-unix    :set fileformat=unix<CR>
map <F2> :emenu Кодировка.<Tab>

" <F3>  Комментирование выделенных строк app-vim/tcomment
" nnoremap v_<Plug>TComment_<C-d> :TCommentMaybeInline<CR>
noremap <F3> :TCommentMaybeInline<CR>
" <Ctrl+_><Ctrl+_> по умолчанию.

" <F4> вертикальное разделение и открытие дерева каталогов
set wildmenu
set wcm=<Tab>
menu Bumper.Open_buffer     :Vex!<CR>
menu Bumper.Close_buffer    :bd<CR>
menu Bumper.List_buffer     :ls<CR>
map <F4> :emenu Bumper.<Tab>

" <F5> позволяет переключать вкладки справа-налево
imap <F5> <Esc> :tabprev <CR>
map <F5> :tabnext <CR>

" Plugins: app-vim/pathogen manage runtimepath
execute pathogen#infect()

" Не устанавливать python-mode, говно! Конфликты и плохо работает с 3.
" Python Автодополнение http://github.com/davidhalter/jedi-vim
" Для вызова по <Tab> app-vim/supertab
let g:jedi#popup_on_dot = 0 " Автодополнение только по клавише.

" <F6> TagList app-vim/taglist depend dev-util/ctags
let Tlist_Auto_Open = 1 " Открытие автоматом.
let Tlist_Exit_OnlyWindow = 1 " Выход автоматом.
" let Tlist_Use_Horiz_Window = 1
let Tlist_WinWidth = 20
let Tlist_Enable_Fold_Column = 0
nnoremap <silent> <F6> :TlistToggle<CR>

" <F7> Проверка синтаксиса и стиля в питоне. dev-python/flake8
" autocmd FileType python map <buffer> <F7> :call Flake8()<CR>
" let g:flake8_quickfix_location="topleft"
let g:flake8_quickfix_height=6

" <F8> Авто исправление синтаксиса python dev-python/autopep8
autocmd FileType python map <buffer> <F8> :call Autopep8()<CR>

" <F9> вызвать меню вариантов завершения работы
set wildmenu
set wcm=<Tab>
menu Exit.quit      :quit <CR>
menu Exit.quit!     :quit! <CR>
menu Exit.save      :w <CR>
menu Exit.save+exit :exit <CR>
map <F9> :emenu Exit.<Tab>

" <F12> включение и выключение номеров строк :set number
menu Номера.Включить    :set number <CR>
menu Номера.Отключить   :set nonumber <CR>
map <F12> :emenu Номера.<Tab>

"""""""""""""""""""""""""""""""""""""""""""""""""
" Сворачивание блоков кода
set foldenable  " включить фолдинг по умолчанию
set foldmethod=syntax  " определять блоки на основе синтаксиса
set foldmethod=indent  " определять блоки на основе отступов
" set foldnestmax=3  "deepest fold is 3 levels
" set foldcolumn=5  " показать полосу для управления сворачиванием
" set foldlevel=1  " Открыт только первый уровень вложенности.
set foldlevel=99  " по умолчанию все развернуто
" автоматическое открытие и закрытие сверток при заходе в них
" set foldopen=all
" set foldclose=all
" <space> - раскрыть/свернуть блок кода
" nnoremap <C-S> za
" Автозавершение скобок.
" :inoremap { {}<LEFT>
" imap [ []<LEFT>
" imap ( ()<LEFT>
" imap " ""<LEFT>

" Идентификатор отступов. indentLine
" :IndentLinesToggle toggles lines on and off.
let g:indentLine_enabled = 1
let g:indentLine_color_term = 7
let g:indentLine_char = '|' " '·'
0
-8 / 2 / 0
Регистрация: 21.04.2015
Сообщений: 23
09.05.2015, 20:57  [ТС] 4
Вот прикольно, ни кто ничего не пишет. И понятно почему. Все у кого Linux имеют свой vimrc.
Виндузятина же просто не в курсах. Им на джаву.
0
Покинул форум
6598 / 1481 / 355
Регистрация: 07.05.2015
Сообщений: 2,902
09.05.2015, 21:20 5
Цитата Сообщение от zie_R9
Все у кого Linux имеют свой vimrc. Виндузятина же просто не в курсах.
А какая разница какая ОСь? .vimrc он и в Linux, и Windows шурует нормально. Например, автозавершение по Tab:
Код
function! InsertTabWrapper(direction)
  let col = col('.') - 1
  if !col || getline('.')[col - 1] !~ '\k'
    return "\<Tab>"
  elseif "backward" == a:direction
    return "\<C-p>"
  else
    return "\<C-n>"
  endif
endfunction
inoremap <Tab>   <C-r>=InsertTabWrapper("forward")<CR>
inoremap <S-Tab> <C-r>=InsertTabWrapper("backward")<CR>
Или эдакая навигация по вкладкам:
Код
set stal=2
nmap <S-t> : tabnew<CR> "новая вкладка
nmap ,t    : tabp<CR>   "переход к предыдущей
nmap .t    : tabn<CR>   "переход к следующей
0
298 / 256 / 57
Регистрация: 11.06.2012
Сообщений: 1,557
10.05.2015, 19:51 6
Цитата Сообщение от zie_R9 Посмотреть сообщение
И понятно почему.
Может быть тут мало людей которые осилили вим? И причем тут виндузятники и жава?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.05.2015, 19:51
Помогаю со студенческими работами здесь

IDE для начинающего на Python
Только недавно начал изучать Pyton.Хотелось бы узнать, какую IDE стоит остановиться новичку, помимо...

реимпорт при запуске :Pymod в python-mode для vim
Вопрос для пользователей python-mode в vim. Допустим в виме открыто два простенких файла file1.py...

VIM в качестве легкой IDE
Я решил создать эту тему, потому что когда я начал программировать с помощью VIM, у меня возникли...

Vim объединить команды в vim
Здравствуйте, возможно ли объединить несколько (две) команды в одну: Проблема в том, что установи...

obj\Debug\IDE.o||In function `Z11OpenProjectv':| C:\tsserver\Projects\cpp\codeblocks\MyComp\IDE\IDE\IDE.cpp|2 36|undefined reference to `GetOpenFileNam
obj\Debug\IDE.o||In function `Z11OpenProjectv':|...

Vim для Go
Есть такой древний редактор текстов. Vi. После был создан Vim - улучшенный Vi. Созданный...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru