【问题标题】:stopping vim from removing indentation on empty lines阻止 vim 删除空行上的缩进
【发布时间】:2011-09-14 07:59:07
【问题描述】:

当光标放在只包含空格字符的行的末尾时,vim 将在我按 Enter 时删除该空格。我觉得这很烦人,因为它破坏了我选择缩进到同一级别的代码的脚本。如何防止 vim 这样做?

在我的 .vimrc (http://bjuhn.com/randomstuff/vimrc) 中,我有以下内容:

filetype plugin on
set copyindent

也就是说,我没有使用任何可识别语法的自动缩进,因为我还没有找到一个能满足我所有需求的自动缩进。

【问题讨论】:

    标签: vim indentation


    【解决方案1】:

    Vim wiki 建议这样做:

    inoremap <CR> <CR>x<BS>
    

    因为如果在该行中输入了一些文本,即使它已被删除,缩进也不会被删除。

    [编辑 - 军事]

    完整解决方案中仅缺少几部分。您还需要重新映射 o 和 O 以及用于添加行的任何其他内容:

    inoremap <CR> <CR>x<BS>
    nnoremap o ox<BS>
    nnoremap O Ox<BS>
    

    同样的想法,但刚接触 vim 的人可能不会很快明白。

    【讨论】:

    • 我同意,但似乎足够安全。
    • 如果您只想为某些文件类型(例如 Python 文件)启用此行为,请记住“autocmd FileType”命令。例如“autocmd FileType python inoremap x”做了我需要的。
    【解决方案2】:

    对我来说,这段代码有效:

    inoremap <silent> <Esc> <C-O>:stopinsert<CR>
    

    【讨论】:

    • 哪一部分是什么意思和作用?
    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多