Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(g) Vim->;显示4个空格,但保存2个空格(选项卡)_Vim_Spaces - Fatal编程技术网

(g) Vim->;显示4个空格,但保存2个空格(选项卡)

(g) Vim->;显示4个空格,但保存2个空格(选项卡),vim,spaces,Vim,Spaces,是否可以打开缩进2个空格的文件,但显示4个空格缩进,当我生成4个空格时,它会以2个空格的格式保存 编辑 事实证明,如果文件混合了制表符、2个空格和4个空格,我还需要确保它能够工作 编辑2 这是我目前的解决方案。我必须重新映射我的(最初映射到:w),以便我可以将光标放回原来的位置(并在保存时给我一个“历史回溯”,直到光标位置为止。有没有一种方法可以做到这一点而不影响光标位置(也不向历史添加替换) 函数!s:ShimSpaces() 修女图 nmap ms``mt:w`t`s 奥格鲁普塞奥塔布斯酒店

是否可以打开缩进2个空格的文件,但显示4个空格缩进,当我生成4个空格时,它会以2个空格的格式保存

编辑

事实证明,如果文件混合了制表符、2个空格和4个空格,我还需要确保它能够工作

编辑2

这是我目前的解决方案。我必须重新映射我的(最初映射到:w),以便我可以将光标放回原来的位置(并在保存时给我一个“历史回溯”,直到光标位置为止。有没有一种方法可以做到这一点而不影响光标位置(也不向历史添加替换)

函数!s:ShimSpaces()
修女图
nmap ms``mt:w`t`s
奥格鲁普塞奥塔布斯酒店
自动驾驶!
autocmd BufReadPost,BufWritePost*设置tabstop=4
autocmd BufReadPost,BufWritePost*%substitute/^\+/&&/e
autocmd BufReadPost*%substitute/\+$//e
autocmd BufWritePre*%substitute/^\(\+\)\1/\1/e
autocmd BufWritePre*设置tabstop=2
autocmd BufWritePre*retab
螺旋端
端功能
命令!-n=0-bar ShimSpaces:调用s:ShimSpaces()
这与要求相反

该帮助提供了不同选项卡宽度的类似用例的示例,请参见
:help retab example

使其适应倍增/减半空间:

:augroup AdaptIndent
    :autocmd!
    :autocmd BufReadPost,BufWritePost  * %substitute/^ \+/&&/e
    :autocmd BufWritePre               * %substitute/^\( \+\)\1/\1/e
:augroup END
对于
*
,这将影响所有打开的文件。若要将此限制为某些文件,请参阅
:help autocmd patterns

编辑:使用
:augroup
包装,可以通过
:autocmd!AdaptIndent
再次关闭此功能。这样,您可以轻松地打开/关闭此功能。为了便于使用,我将此功能放入函数中,并定义一个自定义命令调用它。

这与要求的相反

该帮助提供了不同选项卡宽度的类似用例的示例,请参见
:help retab example

使其适应倍增/减半空间:

:augroup AdaptIndent
    :autocmd!
    :autocmd BufReadPost,BufWritePost  * %substitute/^ \+/&&/e
    :autocmd BufWritePre               * %substitute/^\( \+\)\1/\1/e
:augroup END
对于
*
,这将影响所有打开的文件。若要将此限制为某些文件,请参阅
:help autocmd patterns


编辑:使用
:augroup
包装,可以通过
:autocmd!AdaptIndent
再次关闭此功能。这样,您可以轻松地打开/关闭此功能。为了便于使用,我将此功能放入函数中,并定义一个自定义命令调用它。

我希望这是一个可能的解决方案。谢谢您的尝试,Sudip。不太好。我很瘦king,Ingo可能在下面有正确的想法。(只需要尝试一下。)谢谢你的回复!我希望这对你来说是一个可能的解决方案。谢谢你的尝试,Sudip。不完全是。我想Ingo可能在下面有正确的想法。(只需要尝试一下。)谢谢你的回答!我喜欢这个主意。我还没有尝试过,但我会让你知道的。谢谢!事实上,有一个问题。我该怎么做才能在会议期间打开或关闭它?这里有另一个问题:如果我不确定是否有其他人使用过混合标签、2个空格和4个空格?全部(当前和未来)文件?!我在答案中添加了说明。你要求空格,你得到了空格。制表符使这变得更复杂,但可以解决。看看
:retab
。我喜欢这个主意。我还没有尝试过,但我会让你知道的。谢谢!事实上-一个问题。我该如何设置才能在会话期间打开或关闭它?下面是另一个问题r问题:如果我不确定其他使用过它的人是否混合了制表符、2个空格和4个空格,我该怎么做?对于所有(当前和未来)文件?!我已经在答案中添加了说明。你要求了空格,你就得到了空格。制表符使这更复杂,但可以解决。看看
:retab