Nasıl düzenleme piton dosyalarının ise hatların başında yorumlar koymak değil vim yapılandırmak için

oy
47

piton dosyalarını düzenlerken ben Vim boş satıra ekleme modunda bir # eklediğinizde, vim satırın başına kadar # taşır, ama ben # bunu girilen sekme düzeyinde eklenecek istiyorum.

Örneğin, vim bu yazarken

for i in range(10):
    #

Ben girdiğim # orada kalmaz.

Bu vim tarafından, şöyle taşınır.

for i in range(10):
#

kimse bu değiştirecek vim bir yapılandırma öğesinin biliyor mu?

Eğer yardımı olacaksa, ben Ubuntu 8.10 kullanıyorum.

Oluştur 09/12/2008 saat 21:21
kaynak kullanıcı
Diğer dillerde...                            


8 cevaplar

oy
31

Burada bir cevap buldu http://vim.wikia.com/wiki/Restoring_indent_after_typing_hash

Vim smartindent seçenek sorunun nedeni olduğu görülmektedir. Başvurulan sayfa Yukarıdaki iş-a-mermi anlatır fakat vim kendisinde smartindent yardıma okuduktan sonra (: Yardım smartindent), yerine smartindent ait cindent denemeye karar verdi.

Ben yerini

set smartindent

ile

set cindent

Benim .vimrc dosyasında

ve şimdiye kadar mükemmel çalışıyor.

Bu aynı zamanda piton yorumları içerir görsel blokları girinti için '<<' ve '>>' davranışını sabit değişti.

(: Help smartindent ve: Yardım cindent) smartindent ve cindent için vim yardım girinti üzerinde daha fazla yapılandırma seçenekleri ve bilgi vardır.

Cevap 09/12/2008 saat 23:07
kaynak kullanıcı

oy
19

@PolyThinker rağmen ben Bence bu iyi bir çözüm değil, bu soruya bu yanıtı görüyorum. Bir karma ile başlayan bir çizgi üzerinde == iterek veya içinde yorumlarla kod bloğu reindent vurgulanırken = iterek Bunu kontrol - editör hala sola tüm yol girintili gerektiğini düşünüyor.

Şiddetle tavsiye ediyorum filetype indent onve kaldırmak set smartindentve set autoindent(ya set cindentda vimrc itibaren) satırları. Bir başkası (appparently David Bustos) bizim için tam bir girinti ayrıştırıcı yazmak için nezaketini; o $ VIMDIRECTORY / girinti / python.vim kısmında bulunur.

(Paul cindentçözüm muhtemelen piton için çalışır, ancak filetype indent onçok daha genel olarak yararlıdır.)

Cevap 22/04/2009 saat 15:07
kaynak kullanıcı

oy
10

Benim .vimrc aşağıdaki satırları, benim Ubuntu 8.10 ile varsayılan olarak yüklü gibi görünüyor

set smartindent
inoremap # X^H#
set autoindent

Ve sorunu gözlemlemek yok. Belki bu deneyebilirsiniz. (^ H Ctrl-V Ctrl + H tarafından girilen gerektiğine dikkat ediniz)

Cevap 22/12/2008 saat 08:27
kaynak kullanıcı

oy
4

no unindenting Benim çözüm:

Eğer cindent kullanırsanız, C ve C için tasarlandığını ++ kodlama tanır. Burada, bir # bir #define oluştururken veya #MACRO (), bu yüzden davranış doğrudur anlamına gelir. Ama # bir yorumdur diğer diller için, bu sinir bozucu.

şu benim için çalıştı:

" cindent       enable specific indenting for C code
" set cin       nocin
set cin

" cinkeys       The default cinkeys causes leading # to unindent to column 0.
"               To prevent this, remove the 0# from the definition.
" set cinkeys=0{,0},0),:,0#,!^F,o,O,e - default
set cinkeys=0{,0},0),:,!^F,o,O,e
Cevap 15/05/2014 saat 16:57
kaynak kullanıcı

oy
2

Diğer cevapların bazı yararlı, ama hiçbiri '#' ilk karakter olduğunda bir çizgi reindenting gelen Vim önlemek için yeterli idi. PolyThinker cevabı benim için işe yaramadı, ama '#' "O, bir karakter, o zaman # eklemek ekstra karakteri silip olması gerektiği imleci koymak" remapped olabileceğini bir ipucu verdi. Bu bunu yapmaz haritalama geçerli:

inoremap # X#<left><backspace><right>

Vim sözdizimi paketleri olursa olsun seçenekleri nasıl ayarlandığını, özel karakter olarak '#' tedavi gibi görünüyor, çünkü bu gereklidir. Satır başka bir karakterle başladı bir çizgi ile aynı olacak şekilde '#' ile başladı istiyorum. Bulduğum en güvenilir çözüm aslında hattın ilk karakteri değişir mi yukarıdaki haritalama vardır.

Not: Bu eşleme çalıştırdıktan sonra sorunlara neden olmaktadır buldum I#<esc>sonra basarak "" Önceki ekleme yeniden yapmak. Henüz bir çözüm bulamadı.

Cevap 20/09/2017 saat 05:07
kaynak kullanıcı

oy
2

Bu 'smartindent' özelliği mü sebep oldu. Eğer varsa :set smartindentsizin .vimrc içinde bunu kaldırmak gerekir.

Cevap 22/12/2008 saat 03:13
kaynak kullanıcı

oy
1

Benim Vim yapılandırma bunu yapmaz. : Bu bağlantısından kullanılabilen python.vim komut deneyebilirsiniz http://www.vim.org/scripts/script.php?script_id=790

Cevap 09/12/2008 saat 22:18
kaynak kullanıcı

oy
0

Ben kaldırıldı set smartindentgelen ~/.vimrcama yine de smartindent devre dışı vermedi. Ben .py dosyası açılmış ve bitince :set smartindent?görüntülendiği smartindent.

Daha da aşağı o çıkıyor ~/.vimrcbu çizgi oldu:

autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
                         ^^^^^^^^^^^

O hattan "smartindent", silindikten sonra o smartindent nihayet devre dışı bırakıldı ve yorumlar düzgün tekrar girintili idi.

Cevap 04/06/2014 saat 19:38
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more