2013-02-10 2 views
3

Когда я использую команду = для отступов всего файла Python или раздела, он не будет правильно отступать от него. Вот мой vimrc:Vim не будет правильно указывать код Python при использовании команды =

set nocompatible 
syntax on 
set ruler 
set tabstop=2 
set softtabstop=2 
set shiftwidth=2 
set expandtab 
set smarttab 
set hlsearch 
set incsearch 
set ignorecase 
set autoindent 
" turn on line numbers: 
set number 
" Toggle line numbers and fold column for easy copying: 
nnoremap <F2> :set nonumber!<CR>:set foldcolumn=0<CR> 
nnoremap <F4> :set nospell!<CR> 
nnoremap <F3> :set invpaste paste?<Enter> 
imap <F3> <C-O><F3> 
set pastetoggle=<F3> 

filetype on 
filetype plugin indent on 
filetype plugin on 

" Execute file being edited with <Shift> + e: 
map <buffer> <S-e> :w<CR>:!/usr/bin/env python % <CR> 
let g:solarized_termcolors=256 
set background=dark 
colorscheme solarized 
"set spell spelllang=en_us 

set backspace=indent,eol,start 
autocmd FileType python set complete+=k~/.vim/syntax/python.vim isk+=.,(
autocmd VimEnter * NERDTree 

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

ответ

2

Вы должны избавиться от filetype on и filetype plugin on:.. filetype plugin indent on единственная линия вам нужно

редактировать

проблема с . и ( почти наверняка вызвана iskeyword. Я смутно помню, что у кого-то была такая же проблема, потому что он узнал в некотором дезинформированном блоге, что ему или ей нужен словарь на основе comp letion. Поскольку записи в его/ее файле словаря, где в форме .method(, он/она нуждался в ., чтобы считаться символом ключевого слова.

Попробуйте эту команду при редактировании файла Python:

:verbose set iskeyword? 

Она должна возвращать через запятую список значений, который включает . и ( и место, где он установлен. Скорее всего, это сторонний python ftplugin, потому что по умолчанию ftplugin не касается iskeyword.

Эта линия является то, что является причиной проблемы ./(:

autocmd FileType python set complete+=k~/.vim/syntax/python.vim isk+=.,(
  1. Вы абсолютно не нужен этот механизм завершения, так как по умолчанию omnicompletion Vim является достаточно мощным.

  2. Из-за того, как реализован этот механизм завершения и как может быть записан ваш файл словаря, . и ( должны рассматриваться Vim как ключевые слова.

  3. Возможно, ваш пользовательский/синтаксический файл не может быть сформирован так, чтобы этот параметр не работал.

  4. isk - это короткая форма iskeyword, опция, определяющая, что такое символ ключевого слова.

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

+0

Это неподвижная . (сделка, но отступ с = до сих пор не будет работать. – 8vius

+0

У вас есть другие сторонние скрипты, связанные с python? – romainl

+0

Только файл синтаксиса python, на который я верю. Загружено с vim.org. – 8vius

0

вы можете вставить обычно usign в :set paste, у меня есть очень удобный макрос для этого:

set pastetoggle=<F10> 

Вы можете установить его как любой другой ключ, просто добавьте его в .vimrc файл

Смежные вопросы