許多人使用空格而不是製表符。我使用他們兩個。從第一個非空白字符開始的行和空格標籤。沒有問題開始新的文件,並在我不得不修改一個更好地適應使用格式。有時候我仍然需要修復空間問題。按照Search and replace我可以做:%s/spaces_for_tab/tab/g
。這很簡單,它可以用於很多情況。無論如何,我只想在行首開始重構空格。如何將前導空格轉換爲製表符?
回答
我寫了一個簡單的func。無論如何,它只能用於4-space選項卡。
fu! Fixspaces()
while search('^\t* \{4}') != 0
execute ':%s/^\t*\zs \{4}/\t/g'
endwhile
endfu
如果存在,您可以提出更好的解決方案,我會樂於使用它。 問題是這個func也替換了字符串中的空格。
這是我第一次標記我的答案。無論如何,這是一個很大的任務(防止改變多行字符串中的空格,html預標籤等),我的實現有點幼稚。 – 2012-07-23 06:28:20
這不是一個好的解決方案,而是使用vim的內置命令,而不是''retab'與'noexpandtab'結合使用 – 2016-09-08 19:16:10
@sg如果我理解正確,Martin的抱怨是'retab'不能像預期的那樣工作,'retab! '把空格轉換爲製表符*任何地方*(甚至在字符串內部)。只有前導空白纔會轉換爲製表符更合適。 – 2017-06-14 01:37:53
這是更多的正則表達式問題。爲了在線的起始處錨定,使用插入符號,例如,
s/^ /\t/
或者使用vim的內建功能它:
:set tabstop=4 "four spaces will make up for one tab
:set noexpandtab "tell vim to keep tabs instead of inserting spaces
:retab "let vim handle your case
順便說一句,我也更喜歡縮進製表和空格的排列。不幸的是,vim doesn't handle this well(我不知道其他編輯器在做什麼),所以我大多使用:set expandtab
(也許參見:set softtabstop
)。
你通常需要'retab!'而不是'retab'。 – 2012-07-22 14:47:09
問題是,正如你所寫的,VIM不能很好地處理這個問題(更可能是我錯過了VIM的一些功能,VIM總是讓我感到驚喜),因爲retab替代了所有的空間,不僅是領先的。 – 2012-07-22 14:51:06
我把馬丁的答案,就可以提高一點,如果任何人的興趣:
function Fixspaces()
let ts = &tabstop
let pos = getpos('.')
if &expandtab
while search('^ *\t') != 0
silent execute ':%s/^ *\zs\t/'.repeat(' ', ts).'/g'
endwhile
echo 'Changed tabs to spaces'
else
while search('^\t* \{'.ts.'}') != 0
silent execute ':%s/^\t*\zs \{'.ts.'}/\t/g'
endwhile
echo 'Changed spaces to tabs'
endif
call setpos('.', pos)
endfunction
這個函數根據的expandtab
和tabstop
設置的值適當的事情,還記得光標所在。
- 1. 將製表符轉換爲空格
- 2. 將製表符轉換爲空格
- 3. 轉換前導空格爲製表符紅寶石
- 4. Python:如何將製表符轉換爲空格?
- 5. FTP文件轉換將製表符轉換爲空格
- 6. 將前導空格中的製表符轉換爲Visual Studio宏中的雙重空格
- 7. 將製表符轉換爲.NET字符串中的空格
- 8. 如何將無空格數據轉換爲R中的製表符分隔符?
- 9. 將製表符轉換爲空格:優缺點
- 10. 將製表符/空格分隔行轉換爲嵌套數組
- 11. 將製表符轉換爲記事本++中的空格
- 12. 將製表符轉換爲RichTextBox中的空格
- 13. 將文件的縮進從製表符轉換爲空格
- 14. Internet Explorer 8&7正在將製表符轉換爲空格
- 15. Maven插件將製表符轉換爲空格
- 16. Git pull - 將空格轉換爲製表符
- 17. OSX sed換行符 - 爲什麼將空格轉換爲換行符,但換行符不會轉換爲空格
- 18. 如果沒有空間,操作欄將製表符轉換爲列表導航
- 19. 如何將空格轉換爲 ?
- 20. 我可以將IDLE配置爲自動將製表符轉換爲空格嗎?
- 21. 如何防止製表符和換行符成爲空格?
- 22. 如何直接覆蓋'unexpand'(空格到製表符轉換)?
- 23. 忽略現有空格將CamelCase轉換爲空格字符串
- 24. 如何將空格轉換爲http url的加號(+)字符?
- 25. 如何將字符串轉換爲Bash中的所有空格?
- 26. 如何將表格轉換爲矩陣?
- 27. 如何將表格轉換爲子類?
- 28. 如何將mdf轉換爲Excel表格
- 29. 如何將表格轉換爲多列
- 30. 將列表轉換爲具有python空格的字符串
':設置noet',選擇要轉換的塊,':retab!' – ninjalj 2012-07-22 09:07:09
@ninjalj是的,但選擇塊轉換有時很難。 – 2012-07-22 14:57:28
[如何將空格轉換爲Vim或Linux中的選項卡?](http://stackoverflow.com/questions/9104706/how-can-i-convert-spaces-to-tabs-in-vim-or -linux) – 2012-07-22 20:07:45