我使用的是 Neo 键盘布局,它使用各种修饰键来输入各种字符(例如希腊字母和数学符号)。它还将 shift+Mod3+space 映射到 Unicode 0A,无间断空格。有时我会错误地按下这些按钮(在使用相同修饰键输入其他符号之间的空格时)。
不幸的是,[Lua|Xe]TeX 将这些空格视为不可中断的空格,无论是在普通文本中还是在数学模式中(使用fontspec
和unicode-math
)。但是我的编辑器(vim)将该符号显示为普通空格,因此无法看到我犯了什么错误。
有没有简单的方法可以告诉 [Lua|Xe]TeX 将不间断空格视为普通空格?
答案1
\usepackage{newunicodechar}
\newunicodechar{ }{ }
在第一个参数中,你输入一个不间断空格 (U+00A0),在第二个参数中输入一个普通空格。更好的定义是
\newunicodechar{ }{~}
(再次强调,这个空格是不可中断空格),因此这个不可中断空格将随行中其他空格一起拉伸或收缩。当然,如果您想要一个普通空格,请使用第一个,无所畏惧。 :)
答案2
另一个解决方案是更改 vim 设置,以便您可以看到不可破坏的空间。
set listchars=nbsp:¬
set list
您可以设置适当的语法高亮来NonText
突出显示不可破坏的空格。
答案3
有时您可能想使用实际的不间断空格。因此将它们全部变成普通空格可能不是最好的主意。在这种情况下,Aditya 的解决方案是一个好的开始。但我不喜欢我的缩进显示为^I
。
以下颜色表示不间断空格格维姆:
hi NoBreakSpace guibg=LightGoldenrod1 guifg=black
syn match NoBreakSpace / / containedin=ALL
syn match NoBreakSpace / / containedin=ALL
您还可以使用隐藏功能执行类似操作set list
,并将正常模式下显示的字符替换为
hi Conceal guibg=LightGoldenrod1 guifg=black
syn match WhiteSpace / / containedin=ALL conceal cchar=⍽
syn match WhiteSpace / / containedin=ALL conceal cchar=¦
setl conceallevel=2 concealcursor=nv
在.vim/after/ftplugin/tex/<某个名称>.vim。
这也会显示$\alpha^{+1}$
为α⁺¹
。如果你不喜欢这些其他隐藏功能,你可以使用以下方法禁用它们
let g:tex_conceal = ""
在你的.vimrc。 比较:help tex-conceal
。
答案4
您还可以执行以下操作:
进入命令模式在 vim 中点击ESC
,这样您输入的内容就会出现在屏幕底部的特殊命令行中。
搜索:
直接输入/
您要搜索的内容,然后按回车键向前搜索。
要向后搜索,请使用?
而不是/
。
要向前重复搜索,只需按n
,要向后重复搜索,按N
。
要突出显示搜索结果,请使用:set hls
(突出显示搜索)或添加set hls
到您的vimrc
以永久打开它。
代替:
再次命令模式语法是::[where] s/Searchpattern/Substitution/[Flags]
:22,150 s/a/z/ c
a
这将用z
从行22
到行150
以及末尾的替换(第一次出现的)c
意味着 vim 每次在应用替换之前都会询问你。
:1,$ s/a/z/ a
将从文档的第一行到最后一行进行相同的替换,并且a
末尾的 表示无需询问即可进行替换。
:% s/a/z/ g
%
1,$
是and的快捷方式,g
表示 vim 将应用替换全球— 替换它在一行中找到的所有出现的位置,否则它可能只替换第一次出现的位置。
这些regular expressions
非常强大。
要了解有关此内容的更多信息尝试一下:help substitute
(您可以通过 留下帮助:q
)。
:set hls
:%s/ / /gc