0

非 Slimv 行为

首先,让我展示一下未启用 Slimv 时的正常 Vim 行为。

  1. 创建一个新文件:vim foo.c.
  2. 进入插入模式:i
  3. 输入此代码:void f()
  4. enter

光标现在位于位置 2,1(第 2 行,第 1 列)。

苗条的行为

安装 Slimv 后,如果我执行上述步骤,最后,我会在位置 2,5(第 2 行,第 5 列)找到光标,并在第 5 列之前自动插入四个空格作为缩进。

如何为非 Lisp 文件(例如.c文件)禁用此 Slimv 行为?

4

2 回答 2

2

该问题是由 paredit.vim 中的这一行引起的:

filetype indent on

我在g:paredit_disable_ftindentparedit.vim 中添加了禁用缩进文件加载的选项,请.vimrc在使用 paredit.vim(或同样包含 paredit.vim 的 slimv)时将此行添加到您的:

let g:paredit_disable_ftindent=1
于 2019-06-15T16:21:27.620 回答
0

首先,将vimrc以下两行添加到您的文件中:

filetype indent off
filetype plugin indent off

那么你必须希望它会起作用!但大概率不会……</p>

如果解决方案不起作用,您可能必须采取相当复杂的操作来解决问题。

问题是您的许多 vim 选项不断被许多触发器和自动命令更改。我发现的唯一方法是用特殊符号标记重要的选项(我不想更改的选项),然后在任何可能的影响后强制恢复它们。所以,我在我的vimrc

augroup MyVimrc
    autocmd!
augroup END

"The options I want to keep unchanged, I mark with the “❗” symbol.
"The usual exclamation sign “!” will work as well.
"Of course, you’re free using any other symbol you like, 
"but don’t forget the lambda-function in the hack below.

"These are the options that may influence on the indent.
set formatoptions=j    "❗
set autoindent    "❗
set nosmartindent    "❗
set indentexpr=    "❗
set copyindent      "❗
set preserveindent     "❗

"And I marked with the same way a number of other 
"important (for me) options… (not shown here)

"At the bottom of the vimrc file, I wrote this dirty hack.

function! s:keep_options()
    for line in filter(readfile($MYVIMRC), 'v:val =~ ''\v\".*(!|❗)\s*$''')
        exe line
    endfor
endfunction

command! KeepOptions call <SID>keep_options()

"Note, the “OptionSet” trigger doesn’t work always, so that I preferred “BufEnter”.
autocmd MyVimrc BufEnter * KeepOptions

最后,我的设置中不可预测的变化带来的所有麻烦都消失了。

于 2019-06-07T22:21:57.680 回答