美文网首页
macOS禁用NSTextView的引号替换

macOS禁用NSTextView的引号替换

作者: 捡书 | 来源:发表于2020-04-13 10:51 被阅读0次

问题描述

在NSTextView中输入json的双引号时,输入法为英文,但显示的是中文的引号。而且在输入过程中能感觉到英文引号替换成中文引号。再试了下单引号也存在该问题,而!,@,#等字符不存在该问题。

猜测:是系统对引号做了特殊处理,在输入引号的时候将输入法更改为中文输入法吗?

尝试1:实在是不知从何入手,查看了下NSTextView中的API,尝试了下重写-insertText,识别到输入中文引号,就重写成insertText:@”\”“,但是其实在输入英文引号的时候,insertText识别的也是英文的引号。所以这种思路其实是不可行的,是在显示时(insertText后)则切换成中文引号了。

尝试2: 在storyboard中,NSTextView属性smart Quotes,智能引号默认是开启的,尝试了下禁用,但仍然没有解决(其实就是这个原因,但这里是因为xcode的bug,导致属性失效)。


直引号与弯引号

弯引号:「typographic, or curly quotation marks」
直引号:「neutral, vertical, straight, typewriter, or dumb quotation marks」,又叫dumb quotes傻瓜引号

直引号本是打字机时代为了尽量节约键盘空间而制作出来的。

现代的键盘和 ASCII 字符集都继承了这个传统——ASCII 中只有一个单直引号(U+0027 ’ apostrophe)和一个双直引号(U+0022 ” quotation mark)。

一些文字处理软件(如 Word),能自动将直引号转换为弯引号。
许多编辑环境下(包括 OS X 的默认系统设置)会根据上下文将直引号转换为弯引号。
中文输入法也是普遍使用弯引号(主要其实是因为简中弯引号占一字宽并偏向内侧,和比例宽度的直引号差别过大)。

解决方案

这个解决方案在Stack Overflow上已经有了


将automaticQuoteSubstitutionEnabled设为NO,即可禁用引号的智能替换功能。
Storyboard中NSTextView的smart Quotes属性对应的应该就是这一属性,照理禁用后应该是不会智能替换,怀疑是Xcode的Bug

当然也可通过enabledTextCheckingTypes将所有自动转换类型禁用。

相关文章

  • macOS禁用NSTextView的引号替换

    问题描述 在NSTextView中输入json的双引号时,输入法为英文,但显示的是中文的引号。而且在输入过程中能感...

  • 关闭 macOS 文本编辑(TextEdit)自动转换中英文引号

    macOS:10.15 一、依次选择编辑 -> 替换 -> 显示替换。 二、取消 「智能引号」。

  • linux学习 Day6-bash特性

    bash支持的引号··(反引号):命令替换“”(双引号):弱引用,可以实现变量替换‘’(单引号):强引用,不完成变量替换

  • shell变量

    变量赋值 定义变量 =两边不能有空格 双引号可以替换变量 $username。单引号不能替换变量,单引号所见即所得...

  • PHP字符串

    1. 单双引号的使用效率说明 效率评测参考地址 使用双引号的时候要替换其中的变量和转义字符,而单引号不进行替换变量...

  • PHP基础笔记

    echo/print中单引号和双引号: "" :变量会被替换为所配置的值 '' :变量不会被替换为所配置的值 $_...

  • 04 - 变量的扩展应用

    多种引号的区别 区分三种定界符双引号 "":允许扩展,以$引用其他变量单引号 '':禁用扩展,即便$也视为普通字符...

  • Shell 命令替换扩展

    命令替换是用命令的输出替换命令本身,命令替换有如下两种形式: 或者 注意:后面这句使用的是反引号,而不是单引号,这...

  • js替换双引号

    工作中经常遇到字符串中含有"",由于js动态创建div元素,如果title中含有"",就会出现莫名的错误,由此记录...

  • sed替换单引号

    有时候需要使用sed快速替换文件/代码中的单引号 方法2: sed -i s#'file'#file#g calc...

网友评论

      本文标题:macOS禁用NSTextView的引号替换

      本文链接:https://www.haomeiwen.com/subject/kkfgmhtx.html