即使使用 `set expandtab` 在 vim 中获取制表符而不是空格
Getting tabs in vim instead of spaces even with `set expandtab`
我通过 vi tabtest
创建文件“tabtest”,然后键入:
a
tab
b
newline
c
tab
d
CTRL-C
:
wq
我的 `.vimrc 中有 set expandtab
。但是我仍然在文件中获取制表符而不是空格。
(base) balter@ab-rstudio:~$ cat -A tabtest
a^Ib$
^Ic^Id$
(base) balter@ab-rstudio:~$ cat .vimrc
let python_highlight_all = 1
set undodir=${HOME}/.vim/undo/
set backupdir=${HOME}/.vim/backup/
set directory=~/.vim/swp/
set writebackup
set noswapfile
set autoindent
set showmatch
set mouse=a
syntax on
set tabstop=4
set softtabstop=0
set shiftwidth=4
set textwidth=79
set expandtab
set smarttab
set autoindent
set fileformat=unix
set backspace=indent,eol,start
set whichwrap+=<,>,h,l,[,]
set laststatus=2
set statusline+=%F
colorscheme murphy
set paste
工具定制的黄金法则之一是只将您理解的内容放入您的配置中。了解这一点的第一步是阅读(不是略读)您计划添加的任何选项或命令的文档,然后,利用新发现的知识,思考这样做的利弊。
:help 'paste'
是一个非常强大的选项,具有 许多 明确记录的副作用,例如:
When the 'paste' option is switched on (also when it was already on):
[...]
- 'expandtab' is reset
[...]
永远不要在 vimrc
中设置该选项,因为所有这些令人讨厌的副作用都是可取的 仅当使用 terminal/system 的粘贴工具时 但非常不受欢迎 其余时间 。删除它。
通常情况如下:
- 用户尝试使用终端的“粘贴”功能粘贴内容,结果出现乱码,
- 用户在 Internet 上查找它,了解
paste
选项,并且从不费心阅读其文档,
- 用户很快就厌倦了那种
:set paste<CR><whatever>:set nopaste<CR>
舞蹈,并决定将 set paste
添加到他们的 vimrc
中,这样它就一直开着,
- 用户注意到缩进或插入模式映射的问题,但无法将它们与他们将
set paste
添加到他们的 vimrc
的绝妙想法联系起来......因为他们不知道该选项的实际作用,
- 用户再次 上网,这提醒他们及时阅读文档会让他们意识到
set paste
[=33] 的陷阱=]and 将他们引导到 :help 'pastetoggle'
,这很好地解决了重复性问题,而无需将 set paste
添加到他们的 vimrc
、
- 希望用户开悟。
但是,当然,真正的解决方案是获得一个适当的 Vim 和剪贴板支持,但那是另一个被打死的故事。
我通过 vi tabtest
创建文件“tabtest”,然后键入:
a
tab
b
newline
c
tab
d
CTRL-C
:
wq
我的 `.vimrc 中有 set expandtab
。但是我仍然在文件中获取制表符而不是空格。
(base) balter@ab-rstudio:~$ cat -A tabtest
a^Ib$
^Ic^Id$
(base) balter@ab-rstudio:~$ cat .vimrc
let python_highlight_all = 1
set undodir=${HOME}/.vim/undo/
set backupdir=${HOME}/.vim/backup/
set directory=~/.vim/swp/
set writebackup
set noswapfile
set autoindent
set showmatch
set mouse=a
syntax on
set tabstop=4
set softtabstop=0
set shiftwidth=4
set textwidth=79
set expandtab
set smarttab
set autoindent
set fileformat=unix
set backspace=indent,eol,start
set whichwrap+=<,>,h,l,[,]
set laststatus=2
set statusline+=%F
colorscheme murphy
set paste
工具定制的黄金法则之一是只将您理解的内容放入您的配置中。了解这一点的第一步是阅读(不是略读)您计划添加的任何选项或命令的文档,然后,利用新发现的知识,思考这样做的利弊。
:help 'paste'
是一个非常强大的选项,具有 许多 明确记录的副作用,例如:
When the 'paste' option is switched on (also when it was already on):
[...]
- 'expandtab' is reset
[...]
永远不要在 vimrc
中设置该选项,因为所有这些令人讨厌的副作用都是可取的 仅当使用 terminal/system 的粘贴工具时 但非常不受欢迎 其余时间 。删除它。
通常情况如下:
- 用户尝试使用终端的“粘贴”功能粘贴内容,结果出现乱码,
- 用户在 Internet 上查找它,了解
paste
选项,并且从不费心阅读其文档, - 用户很快就厌倦了那种
:set paste<CR><whatever>:set nopaste<CR>
舞蹈,并决定将set paste
添加到他们的vimrc
中,这样它就一直开着, - 用户注意到缩进或插入模式映射的问题,但无法将它们与他们将
set paste
添加到他们的vimrc
的绝妙想法联系起来......因为他们不知道该选项的实际作用, - 用户再次 上网,这提醒他们及时阅读文档会让他们意识到
set paste
[=33] 的陷阱=]and 将他们引导到:help 'pastetoggle'
,这很好地解决了重复性问题,而无需将set paste
添加到他们的vimrc
、 - 希望用户开悟。
但是,当然,真正的解决方案是获得一个适当的 Vim 和剪贴板支持,但那是另一个被打死的故事。