如何在vim中扩大空间?

如何在vim中扩大空间?,vim,xterm,Vim,Xterm,我最近安装了窗口管理器,并开始使用xterm。在配置字体时,我浏览了以下网页: 这就说明了一个非常好的观点,那就是你不必为了获得更容易阅读的代码而使字体变大,而只是为了使单词之间的空格变宽 如何在vim中实现这一点?这是不可能的。Vim对每个字符使用一个固定的大小(因为它在终端中运行),因此改变它的唯一方法是改变字体或字体大小。要获得不同的字符/字母间距,您需要编辑字体或选择另一种字体。我能想到的唯一方法是将每个空格字符替换为其双倍宽度的对应字符,U+3000表意空格: :%s/ /\=nr2c

我最近安装了窗口管理器,并开始使用xterm。在配置字体时,我浏览了以下网页: 这就说明了一个非常好的观点,那就是你不必为了获得更容易阅读的代码而使字体变大,而只是为了使单词之间的空格变宽


如何在vim中实现这一点?

这是不可能的。Vim对每个字符使用一个固定的大小(因为它在终端中运行),因此改变它的唯一方法是改变字体或字体大小。要获得不同的字符/字母间距,您需要编辑字体或选择另一种字体。

我能想到的唯一方法是将每个空格字符替换为其双倍宽度的对应字符,U+3000表意空格:

:%s/ /\=nr2char(0x3000)/g
您可以在保存之前使用
:autocmd
s撤消此操作,并在保存后重新执行,但我不建议这样做


不幸的是,到目前为止隐藏功能只处理单宽字符。这将是一个更好的解决方案。

@Ingo这是我添加到我的.vimrc中的内容:

"doubles space in insert mode    
inoremap <space> <space><space>

if !exists("autocommands_loaded")
        let autocommands_loaded = 1

        "doubles spaces when reading file
        au bufRead *.cpp        silent %s/ /  /g

        "for :w
        au bufWritePre *.cpp    silent %s/  / /g
        au bufWritePost *.cpp   silent %s/ /  /g

        "for :wq
        au quitPre *.cpp        silent %s/  / /g
endif
“在插入模式下将空间加倍
inoremap
如果!存在(“自动命令加载”)
让自动命令_加载=1
“读取文件时将空格加倍
au bufRead*.cpp静默%s///g
“对于:w
au bufWritePre*.cpp静默%s///g
au bufWritePost*.cpp静默%s///g
“适用于:wq
au quitPre*.cpp静默%s///g
恩迪夫

我想指出,该链接的第一个xterm屏幕截图中的字体看起来是9px或10px X11
固定的
字体。这种特殊的(著名的)字体的形状发生了戏剧性的变化,只是变小了一点,降低到8px,所有的东西突然变短了,看起来更分散了一点。很好看。一些终端支持比例字体;具体地说,我碰巧知道
mlterm
和Emacs
M-x term
确实。。。不确定在Emacs的M-x期限内运行Vim是否合法,但有一个问题是,它会弄乱错误代码等;例如,您的编译器或解释器将显示“第42行,第100列”,但在您的编辑器中它将显示为“第42行,第112列”……我使用\=nr2char(0x3000)和\u3000尝试了这一技巧,但我总是使用由正方形和空格组成的双宽度字符,而不是双宽度空格。我在my.vimrc中添加了set encoding=utf-8和set fileencodings=utf-8。语言环境显示LANG=en_US.UTF-8,我的字体是DejaVu Sans Mono。使用-u8标志启动xterm不会改变任何内容。你知道这里出了什么问题吗?