Vim

在 Vim 中,如何自動確定是使用空格還是製表符進行縮進?

  • October 29, 2018

有時我會編輯其他流行樣式是使用選項卡的原始碼。在這種情況下,我想保留使用文字製表符的現有約定。

對於我自己創建的文件,以及使用空格作為主要縮進樣式的文件,我希望改用它。

我怎樣才能在 vim 中做到這一點?

您可以在您的中使用類似的東西~/.vimrc來調整以酌情使用空格/製表符:

" By default, use spaced tabs.
set expandtab

" Display tabs as 4 spaces wide. When expandtab is set, use 4 spaces.
set shiftwidth=4
set tabstop=4

function TabsOrSpaces()
   " Determines whether to use spaces or tabs on the current buffer.
   if getfsize(bufname("%")) > 256000
       " File is very large, just use the default.
       return
   endif

   let numTabs=len(filter(getbufline(bufname("%"), 1, 250), 'v:val =~ "^\\t"'))
   let numSpaces=len(filter(getbufline(bufname("%"), 1, 250), 'v:val =~ "^ "'))

   if numTabs > numSpaces
       setlocal noexpandtab
   endif
endfunction

" Call the function after opening a buffer
autocmd BufReadPost * call TabsOrSpaces()

引用自:https://unix.stackexchange.com/questions/63196