2012-12-12 52 views

回答

0

如果他使用真正的空格而不是製表符(它聽起來像),否則不能讓vim顯示2個空格,其中有4個空格。但是,您可以告訴vim以下命令,用以下命令替換所有4空間組製表符,然後將它們顯示爲2個空格。

:set tabstop=4 ! display a tab as 4 columns 
:set shiftwidth=4 
:set noexpandtab 
:gg=G ! convert the whole file to tabs 
:set tabstop=2 !display a tab as 2 columns 
:set shiftwidth=2 

當您準備提交您的作品,

:set tabstop=4 
:set shiftwidth=4 
:set expandtab 
:%retab 

應該把它轉換回來。

4

該幫助有一個類似不同標籤寬度用例的示例,請參閱:help retab-example

適應,要減半/加倍空間:

:autocmd BufReadPost,BufWritePost * %substitute/^\(\+\)\1/\1/e 
:autocmd BufWritePre    * %substitute/^ \+/&&/e 
+0

這是偉大的下擴大!它運行在所有文件上,還是僅運行在當前的文件上? –

+0

用'*',全部。請參閱':help autocmd-patterns'來了解如何影響它。 –

6

這是什麼問here相反。

是的,你可以!如果你有「隱藏」選項,你可以嘗試一下。

:syntax match spaces// conceal cchar= "Don't forget the space after cchar! 
:set concealcursor=nvi 
:set conceallevel=1 

下面列舉一下這些命令:

  • 集合的隱蔽正常,視力爲2位至1空間
  • 保持文本光標下的替換字符,並插入模式
  • 啓用用一個字符隱藏文字

您還必須設置您的tabstopsofttabstopshiftwidth4,但它看起來感覺就像它是2!但是,當你寫這個文件時,它確實是4

如果你想關閉隱蔽掉,你可以做兩件事情之一:

  1. 刪除隱藏規則:syntax clear spaces
  2. 允許隱藏文本光標:set concealcursor=
+2

我還需要添加:在此工作之前設置conceallevel = 1 – timmow

+0

有沒有相反的方法?將2個空格設置爲4個空格? – Uri

+0

@Uri請參閱https://stackoverflow.com/questions/14514336/gvim-show-4-spaces-but-save-2-spaces-tabs。請注意,我還沒有嘗試過。 – Balthamos