Geçerli ayarımda 8 boşluk var; nasıl yeniden tanımlayabilirim?
Geçerli ayarımda 8 boşluk var; nasıl yeniden tanımlayabilirim?
Yanıtlar:
Ne demek istediğine bağlı. Dosyanızdaki gerçek sekme karakterlerinin 4 boşluk genişliğinde görünmesini istiyor musunuz , yoksa "sekme" ile gerçekten sekme tuşuna basılarak oluşturulan ve tam anlamıyla 4 boşluk karakteri içeren (en çok) karakter içeren bir girinti yazdığınız her "sekme"?
Yanıtınıza bağlı olarak, aşağıdaki ayar gruplarından birinin sizin için çalışması gerekir:
4 boşluk genişliğinde görünen sekme karakterleri için :
set tabstop=4
Kaynak kodunuzda gerçek sekme karakteri kullanıyorsanız, muhtemelen bu ayarları da istersiniz (bunlar aslında varsayılanlardır, ancak bunları defansif olarak ayarlamak isteyebilirsiniz):
set softtabstop=0 noexpandtab
Son olarak, bir girintinin tek bir sekmeye karşılık gelmesini istiyorsanız, şunları da kullanmalısınız:
set shiftwidth=4
4 boşluk karakteri içeren ancak sekme tuşuyla girilen girintiler için :
set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab
Yukarıdaki ayarları kalıcı yapmak için bu satırları vimrc'nize ekleyin .
Ayarlamalar yapmanız veya yalnızca bu seçeneklerin ne anlama geldiğini anlamak istiyorsanız, her seçeneğin ne anlama geldiğinin bir dökümü:
tabstop
"Boşluklarda" ölçülen sert sekmenin genişliği - gerçek bir sekme karakterinin etkin (maksimum) genişliği.
shiftwidth
"Girintinin" boyutu. Boşluklarda da ölçülür, bu nedenle kod tabanınız sekme karakterleriyle girintiliyorsa, sekme karakteri
shiftwidth
sayısına eşittirtabstop
. Bu=
,>
ve<
komutları gibi şeyler tarafından da kullanılır .
softtabstop
Bunu sıfır dışında bir değere ayarlamak
tabstop
, sekme tuşunun (ekleme modunda) , bu genişlikte sekme duraklarını simüle etmek için boşlukların (ve muhtemelen sekmelerin) bir kombinasyonunu eklemesini sağlar .
expandtab
Bunu etkinleştirdiğinizde, sekme tuşu (ekleme modunda) sekme karakterleri yerine boşluk eklenir. Bu aynı zamanda
retab
komutun davranışını da etkiler .
smarttab
Bunu etkinleştirmek, sekme tuşunun (ekleme modunda), imleç bir satırın başındayken bir sonraki sekmenin bir sonraki girintisine gitmek için boşluklar veya sekmeler ekleyecektir (yani yalnızca önceki karakterler boşluktur).
Bunlardan birini daha fazla detay için bkz (örn vim ):help 'optionname'
:help 'tabstop'
~/.vimrc
kullanıcının vim ayarlarıdır. Çoğu kişi sistem ayarlarını yalnız bırakır ve yalnızca kullanıcı ayarlarını düzenler. ~/.vimrc
Çoğu sistemde oluşturulana kadar var olmayacağını unutmayın .
set softtabstop=4
özelliği not ediyor ! (Sistemin geri kalanı aksini düşünmesine rağmen) sekmeyi rasgele sayıda boşluk olarak yeniden tanımladığınız için kodunuzu less
veya dışında başka bir düzenleyiciyle okumaya çalışmaktan bıktım vim
! :-)
tabstop=8
boşluktan oluşan girintiler için kullanıldığını söylediğini anlamama yardımcı olabilir mi? Çeşitli ayarların açıklamalarını okuduktan sonra sebebini anlayamadım. Başka bir cevap kullanmak benim için biraz daha mantıklı olduğunu söylüyor. tabstop=4
tabstop
Seçenek, sabit sekme karakterinin genişliğini denetler. Girintilerinizin 4 genişlikteki tek sekme karakterleri yerine 4 boşluk karakterinden oluşmasını istiyorsanız, sekme karakterinizin genişliği önemli değildir - bir çeşit . Pratikte, sekme karakterlerinin uygun girintiler gibi görünme olasılığını azaltmak için muhtemelen sekme karakteri genişliğinizin girintilerinizin genişliğinden farklı olmasını istersiniz . ( list
+ expandtab
burada da yardımcı olabilir) Ayrıca, 8 karakter genişliğinde sekmeler "standart" dır - terminaliniz, Python ve diğer birçok araç varsayılan olarak 8 karakter genişliğinde sekmelerdir.
Bunu geçerli kullanıcı için kalıcı olarak tanımlamak üzere .vimrc
dosyayı oluşturun (veya düzenleyin) :
$ vim ~/.vimrc
Ardından, aşağıdaki yapılandırmayı dosyaya yapıştırın. Vim yeniden başlatıldığında, sekme ayarları uygulanır.
set tabstop=4 " The width of a TAB is set to 4.
" Still it is a \t. It is just that
" Vim will interpret it to be having
" a width of 4.
set shiftwidth=4 " Indents will have a width of 4
set softtabstop=4 " Sets the number of columns for a TAB
set expandtab " Expand TABs to spaces
:retab
olan dönüştürmek tab
için kullanın spaces
. vim.wikia.com/wiki/Converting_tabs_to_spaces
Boşluk veya sekme kullanılıp kullanılmayacağını tanımlayan birkaç ayar vardır.
İşte ~/.vimrc
dosyanızda tanımlanabilecek kullanışlı işlevler :
function! UseTabs()
set tabstop=4 " Size of a hard tabstop (ts).
set shiftwidth=4 " Size of an indentation (sw).
set noexpandtab " Always uses tabs instead of space characters (noet).
set autoindent " Copy indent from current line when starting a new line (ai).
endfunction
function! UseSpaces()
set tabstop=2 " Size of a hard tabstop (ts).
set shiftwidth=2 " Size of an indentation (sw).
set expandtab " Always uses spaces instead of tab characters (et).
set softtabstop=0 " Number of spaces a <Tab> counts for. When 0, featuer is off (sts).
set autoindent " Copy indent from current line when starting a new line.
set smarttab " Inserts blanks on a <Tab> key (as per sw, ts and sts).
endfunction
Kullanımı:
:call UseTabs()
:call UseSpaces()
Dosya uzantıları başına kullanmak için aşağıdaki sözdizimi kullanılabilir (eklenebilir .vimrc
):
au! BufWrite,FileWritePre *.module,*.install call UseSpaces()
Ayrıca bkz: Sekmeleri boşluklara dönüştürme .
Wikia'dan sekmeler ve boşluklar arasında geçiş yapmak için kullanılabilecek başka bir snippet :
" virtual tabstops using spaces
set shiftwidth=4
set softtabstop=4
set expandtab
" allow toggling between local and default mode
function TabToggle()
if &expandtab
set shiftwidth=8
set softtabstop=0
set noexpandtab
else
set shiftwidth=4
set softtabstop=4
set expandtab
endif
endfunction
nmap <F9> mz:execute TabToggle()<CR>'z
Her sekme için 4 boşluk F9ve ayarları değiştirmek için bir eşleme kullanılmasını sağlar .
Bunu kopyalayıp .vimrc dosyama yapıştırdım:
" size of a hard tabstop
set tabstop=4
" always uses spaces instead of tab characters
set expandtab
" size of an "indent"
set shiftwidth=4
İlk 2 ayar Sekme tuşuna bastığımda 4 boşluk alacağım anlamına geliyor. Üçüncü ayar, yaptığım zaman V>
(yani görsel ve girinti) 4 boşluk elde ettiğim anlamına gelir .
Kabul edilen cevap kadar kapsamlı değil, ancak bir şey kopyalayıp yapıştırmak isteyen insanlara yardımcı olabilir.
İstediğiniz ayarları ~ / .vimrc dosyasına koyun - Bazı yönergeler ve en iyi uygulamalar için aşağıya bakın.
Vim'de sekmeleri kullanmanın dört ana yolu vardır:
Her zaman 'tabstop'u 8'de tutun,' softtabstop 've' shiftwidth'i 4 (veya 3 veya istediğinizi seçin) olarak ayarlayın ve 'noexpandtab'ı kullanın. Daha sonra Vim bir sekme ve boşluk karışımı kullanır, ancak yazmak ve her 4 (veya 3) karakterde bir sekme göründüğü gibi davranır.
Not: 'tabstop'u 8'den başka bir değere ayarlamak, dosyanızın birçok yerde yanlış görünmesine neden olabilir (örneğin, yazdırırken).
'Tabstop' ve 'shiftwidth' i istediğiniz gibi ayarlayın ve 'expandtab'ı kullanın. Bu şekilde her zaman boşluk ekleyeceksiniz. 'Tabstop' değiştirildiğinde biçimlendirme asla bozulmaz.
'Tabstop' ve 'shiftwidth' değerlerini istediğiniz gibi ayarlayın ve | modeline | dosyayı yeniden düzenlerken bu değerleri ayarlamak için. Yalnızca dosyayı düzenlemek için Vim kullanılırken çalışır.
Her zaman 'tabstop' ve 'shiftwidth' değerlerini aynı değere ve 'noexpandtab' değerine ayarlayın. Bu, kullanıcıların kullandığı sekme ayarı için (yalnızca ilk girintiler için) çalışmalıdır. Bunu yapmazsanız, ilk boş olmayan boşluktan sonra boşluk olarak eklenen sekmeler olması iyi olabilir. Aksi takdirde, 'tabstop' değiştirildiğinde 'hizalanmış yorumlar yanlış olur.
Kaynak:
:help tabstop
:help tabstop
.
Bir şey daha var,
:retab
mevcut olanı http://vim.wikia.com/wiki/Converting_tabs_to_spaces biçimine dönüştürmek tab
için kullanınspaces
:set sw=4
Satırı ekleyin
set ts=4
içinde
~/.vimrc
kullanıcı başına için dosyanın
veya
/etc/vimrc
sistem genişliğindeki için dosyanın
Benim temel ~ / .vimrc yorum ile:
set number " show line number
set tabstop=2 " set display width of tab; 1 tab = x space with
set expandtab " transform tab to x space (x is tabstop)
set autoindent " auto indent; new line with number of space at the beginning same as previous
set shiftwidth=2 " number of space append to lines when type >>
Tüm kullanıcılar için kalıcı (sunucuda yalnız olduğunuzda):
# echo "set tabstop=4" >> /etc/vim/vimrc
Normalde yeni sunucu apt-get purge nano mc
ve diğer tüm zaman kazanmak için. Aksi takdirde git
, crontab
vb. İçindeki düzenleyiciyi yeniden tanımlayacaksınız.
F10
içinde nano
ama her zaman tasarrufu ile numara yapıyorlar (belki F10
bir çözümdür). ya da çalışmıyor screen
? Hatırlayamıyorum, sadece nefret ediyorum)