3

当我使用 = 命令缩进整个 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 文件时,或者删除它时不会正确删除。例如,它不会停止在 . 或 ( 当删除他们之前的作品时,甚至会删除这些作品。

4

2 回答 2

2

你应该去掉filetype onand filetype plugin on:filetype plugin indent on是你唯一需要的行。

编辑

.和的问题(几乎可以肯定是由iskeyword. 我隐约记得有人遇到过同样的问题,因为他/她在一些误导性的博客文章中发现他/她需要基于字典的补全。因为他/她的字典文件中的条目在 form 中.method(,所以他/她需要.将 视为关键字字符。

在编辑 Python 文件时尝试以下命令:

:verbose set iskeyword?

它应该返回一个逗号分隔的值列表,其中包括.(以及设置它的位置。它很可能是第三方 python ftplugin,因为默认的 ftplugin 没有 touch iskeyword

此行是导致./(问题的原因:

autocmd FileType python set complete+=k~/.vim/syntax/python.vim isk+=.,(
  1. 你绝对不需要那种补全机制,因为 Vim 的默认全补全功能已经足够强大了。

  2. 因为完成机制是如何实现的,以及你的字典文件是如何编写的.(Vim 必须将其视为关键字字符。

  3. 您的自定义/语法文件甚至可能不会像那样形成,因此此设置甚至可能不起作用。

  4. isk是 的缩写形式iskeyword,定义什么是关键字字符的选项。

您似乎从其他人那里复制了设置,却不了解他们做了什么。你的问题的答案是你自己的这个简单的事实~/.vimrc应该足以告诉你这个想法有多么错误。

于 2013-02-10T19:44:31.323 回答
0

你可以正常粘贴使用:set paste,我有一个非常方便的宏:

set pastetoggle=<F10>

您可以将其设置为任何其他键,只需将其添加到您的.vimrc文件中

于 2013-03-04T20:23:34.727 回答