当我使用=命令缩进整个Python文件或某个部分时,它将无法正确缩进它。这是我的vimrc:
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
此外,当我使用w或b循环浏览我的python文件时,或者当删除它时,将无法正确删除。例如,它不会停止。或(当删除他们之前的作品时,甚至会删除它们。
答案 0 :(得分:2)
你应该摆脱filetype on
和filetype plugin on
:filetype plugin indent on
是你需要的唯一一条线。
修改强> 的
.
和(
的问题几乎肯定是由iskeyword
引起的。我依稀记得有人遇到同样的问题,因为他/她在一些被误导的博客文章中发现他/她需要基于字典的完成。因为他/她的词典文件中的条目.method(
形式,他/她需要将.
视为关键字字符。
编辑Python文件时尝试此命令:
:verbose set iskeyword?
它应该返回逗号分隔的值列表,其中包含 .
和(
以及设置它的位置。它最有可能是第三方python ftplugin,因为默认的ftplugin不会触及iskeyword
。
此行是导致.
/ (
问题的原因:
autocmd FileType python set complete+=k~/.vim/syntax/python.vim isk+=.,(
你绝对不需要那种完成机制,因为Vim的默认omnicompletion足够强大。
由于如何实现完成机制以及如何编写字典文件,Vim必须将.
和(
视为关键字字符。
您的自定义/语法文件可能甚至不是这样形成的,所以此设置甚至可能无效。
isk
是iskeyword
的缩写形式,是定义关键字字符的选项。
您似乎从其他人那里复制了设置而不理解他们做了什么。一个简单的事实是,你的问题的答案在你自己的~/.vimrc
中应该足以告诉你这个想法是多么错误。
答案 1 :(得分:0)
你可以使用:set paste
正常粘贴,我有一个非常方便的宏:
set pastetoggle=<F10>
您可以将其设置为任何其他密钥,只需将其添加到.vimrc
文件