Formatexpr / prg (gq) kullanarak Vim formatı python yanlış sonuç verir


0

Python'un yorumlarla etkileşimi konusunda sorun yaşıyorum. Bunlar iki konuya ayrılabilir. İlişkili olduklarını umuyorum, bu yüzden ikisini de buraya göndereceğim.

Sorun 1.

Kullanırken gqotomatik Python kodunu sarmak için yanlış sonuç verir. Örneğin, bu verilen:

# Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 
# tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim 
# veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
# commodo consequat. Duis aute irure dolor in reprehenderit in voluptate 

Seçme ve çalıştırma gqşunları verir:

# Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
# tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim #
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea #
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate

Buna karşılık, aynı şeyi YAML veya Coffee-script'de çalıştırmak aşağıdakileri sağlar:

# Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
# tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
# veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
# commodo consequat. Duis aute irure dolor in reprehenderit in voluptate

Biri Python'un yorum kurallarının Coffee-script ya da YAML ya da #line-line-line yorumlar içeren diğer prensiplere uymasını bekler .

2. Sayı.

Yorum başlatmak, imlecin geçerli derinlikte devam etmesi gerektiğinde çizginin başına atlamasına neden olur.

Örneğin:

class Hello(object):
   """Something"""
# The comment starts here

# or worse
  def hi(self):
# again, here
      pass

Bu PEP 8 tarafından belirlenenlere aykırıdır : yorumları engelle - yorum eklemek aşağıdaki gibi girintili olmalıdır:

class Hello(object):
   """Something"""
   # The comment starts here

  # or worse
  def hi(self):
      # again, here
      pass

Ayarlar

Harika Vundle betiğini kullanıyorum ve kullandığım eklentiler:

Bundle 'gmarik/vundle'
" navigation / display
Bundle 'kien/ctrlp.vim'
Bundle "tpope/vim-fugitive"
Bundle "ton/vim-bufsurf"
python import sys; sys.path.append("")
set rtp +=~/.vim/bundle/powerline/powerline/bindings/vim
Bundle 'Lokaltog/powerline'
Bundle 'nathanaelkane/vim-indent-guides'
Bundle 'altercation/vim-colors-solarized'    
" syntax
Bundle 'jQuery'
Bundle 'kchmck/vim-coffee-script'
" Bundle 'scrooloose/syntastic'
Bundle 'Syntastic'
Bundle "groenewege/vim-less"
Bundle "skammer/vim-css-color"
Bundle "hail2u/vim-css3-syntax"    
" Editing
Bundle 'AndrewRadev/splitjoin.vim'
Bundle 'tpope/vim-unimpaired'
Bundle 'rstacruz/sparkup.git'
Bundle 'klen/python-mode'
" Bundle 'sjl/gundo.vim'
Bundle 'mbbill/undotree'
" file-type based configs
filetype plugin indent on

Ne biz itibaren .vimrc, burada Python ile ilgili ayarlar şunlardır:

let g:syntastic_python_checker = 'pyflakes'
let g:syntastic_python_flake8_args = 
      \ '--ignore=W191,E501,E121,E122,E123,E128,E225,W291'
let pymode_lint = 0
au 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
let python_highlight_all=1
let python_highlight_exceptions=0
let python_highlight_builtins=0

özet

Python, YAML ve Coffee senaryosundan biraz daha büyük ve daha olgun olduğundan, Vim'in yanlış sonuçlar vermesi beni şaşırttı ve hayal kırıklığına uğrattı. Bana neler olacağı belli değil - ve her türlü düşünce ve yön için minnettar olurum. Tabii ki çözersem sonuçlarımı yazarım.


Bu "nmove" olayı nedir?
romainl

@romainl Bir bloğu vurgulayıp <kbd> gq </kbd> tuşuna bastığınızda Vim bana komutun çağrıldığını söyledi Nmove, ancak dokümanlar formatexprtanımlanmışsa, aksi belirtilirse formatprgveya başka türlü "dahili olarak yapılır" olduğunu söylüyor .
Brian M. Hunt,

Herhangi bir eklenti olmadan ve boş .vimrc ile deneyin (bir satır hariç: au FileType python setlocal textwidth=79)
DBedrenko
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.