2008-11-24 16 views
12

PHP kodunu düzenlerken (bu dile özgü olup olmadığından emin değilim) ve birden çok satıra yayılan virgülle ayrılmış listelerin ortasında yeni bir satır oluşturur. huzursuz giden ben gidiyorum. Here's a video of it. Bu, dizilerde, işlev argüman listelerinde, vb. Olur.Rahatsız edici vim (un) girinti kuralları

Bunun olmasını önlemek için yapabileceğim herhangi bir şey var mı, yoksa hatayı düzeltmekten daha hızlı bir şekilde düzeltme, yeniden girme, aşağı taşıma, yeniden yapma girinti (çizgiden çıktığınızda temizlendiği için) ve devam ediyor?

.vimrc

+1

Arsa kalınlaşıyor. Listede ilk veya ikinci öğeden sonra enter tuşuna bastığımda sadece bu tutarsızlık görünüyor. –

+0

oh hey! ben senin portföyünü arıyordum. Bir süre önce gördüğümü hatırlıyorum ama son zamanlarda bağı kaybettim. küçük dünya: D – Karan

+0

Bize ~/.vimrc dosyanızı gösterirseniz ve hangi vim eklentilerini yüklediyseniz bize yardımcı olabilir. – gpojd

cevap

3

:set indentexpr="" deneyin ve görmek eğer yardımcı olur. Filetype eklentileriyle ilgilenen bölüm için bkz. :help filetype-indent-off (muhtemelen bu indentexpr'in nereden geldiği).

+0

Hiçbir şey değişmiyormuş gibi gözükmüyordu, çünkü bu açıkça benim. Anladığım kadarıyla, diğer "akıllı" girinti kurallarını kaybedersem de. –

+0

Tried ': set indentexpr =" ', ama şimdi hiç otomatik girintim var. –

+0

Hiç yok, daha doğrusu. –

0

Normal modda "o" kullanımı sorunu engelliyor gibi görünüyor. Ekleme modundan <esc>o değerine vurmak en uygun seçenektir, ancak zor yoldan daha iyidir (yukarıda açıklandığı gibi).

0

bu deneyin:

:let g:PHP_default_indenting=1 

:h php-indent bakınız.

+0

Hiçbir şey değişmiş gibi görünmüyordu, –

+0

Komutu çalıştırdıktan sonra: setf php Bunu yapmak için yine bir şey yapın.Ayrıca yukarıdakileri ~/.vimrc 'ye koyun ve Vim'i yeniden başlatın. –

+0

Ah, Anladım. Bu problemi çözmüyor, ama yine de yapmak istediğim bir şey. –

3

Girintiliğiniz, PHP indent komut dosyası (.vimrc'nizde "filetype girintisi") tarafından denetlenir.

setlocal autoindent 
setlocal cindent 
setlocal cinwords=if,else,elseif,do,while,foreach,for,case,default,function,class,interface,abstract,private,public,protected,final 
setlocal cinkeys=0{,0},0),!^F,o,O,e 

setlocal nosmartindent " don't use smart indent option 

vim wiki page for source indenting bu konuda fazlası var: Sana ~/.vim/after/ftplugin koymak benim PHP girintili için bu seçenekleri kullanın.

0

Ayrıca # Char için

set cindkeys=-0# 

yapabilirsiniz. Ben de sola kaydırılır alma

width: 100% 

gibi css açıklamalarla vardı gibi aynı sorunu yaşıyorsanız, ne cindent vidalar her şey düşünmek ve smartindent istediğini genellikle

set cindkeys-=: 
0

ekleyebilir .

~/.vim/filetype.vim bu koyarak deneyin:

au BufNewFile,BufRead *.html,*.css setlocal nocindent smartindent 
0

muhtemelen indentkeys

örneğin varsayılan bugünlerde bakmak istiyorum geçerli:

indentkeys = 0 {0},:, 0 #,!^F, o, O, e, *, < >> ,, uç ,:

0

php.vim indent dosyanızı bulun. Örneğin./Usr/share/vim/vim73/girinti/php.

elseif lastline =~ '^\s*?>.*<?\%(php\)\=\s*$' 
    let lnum = lnum - 1 

Ve böyle, tırnak işareti ekleyerek bu bunları açıklama: Vim

Sonra bu satırların aramaya

"elseif lastline =~ '^\s*?>.*<?\%(php\)\=\s*$' 
" let lnum = lnum - 1 

İşte bunu düzeltmek olacak! PHP etiketlerini açmaya daha fazla girme yok <?