这里完全缺乏直觉。 首先,我以为我只会在从编辑器复制和粘贴代码时发生。不幸的是,它更常见。我唯一要做的就是尝试在当前输入的中间某处插入更多代码或对其进行修改。
预期的行为:
实际发生的情况:
重要笔记:
在终端中将编码设置为UTF-8
问题在不同的仿真器(Terminator,gnome-terminal)上仍然存在
使用其他Ruby运行时控制台(IRB,Pry)时问题仍然存在
问题似乎与Ruby运行时有关,而不与Linux shell有关(我想...)
出现此问题的原因是:
系统:
如何复制(为我工作):
图片:
现在,我将首先导航至where语句,以将“ som”更改为大写的“ SOM”
我基本上导航了光标,然后按了SHIFT + S,SHIFT + O,SHIFT + M
希望很清楚:-) 谢谢!
编辑1:
尝试使用zsh代替bash,但没有帮助
禁用了春季宝石,没有帮助
编辑2:
关于reddit的建议我应该检查是否有任何Ruby readline警告。 “未安装Readline”。它们都没有出现在任何地方。还重新安装了ruby 2.4.1,看来这不是我的问题。
编辑3:
我无法在其他Rails项目中重现该问题。 问题出现在Rails 5.1.1 上,同时 5.0.3 正常运行。 可能是Rails本身(或更确切地说是它的瑰宝之一)?
答案 0 :(得分:0)
我遇到了一个非常相似的问题,并将其归结为我的着色。
我在IRBRC中拥有以下内容:
class String
def _colorize(color_code)
"\e[#{color_code}m#{self}\e[0m"
end
def red
_colorize(31)
end
def yellow
_colorize(33)
end
end
IRB.conf[:PROMPT][:MY_PROMPT] = {
:AUTO_INDENT => true, # enables auto-indent mode
:PROMPT_I => "[ME]".red + " > ".yellow, # normal prompt
:PROMPT_S => "[ME]".red + " ".yellow, # prompt for continuated strings
:PROMPT_C => "[ME]".red + " * ".yellow, # prompt for continuated statement
:RETURN => "[ME]".red + "=> ".yellow + "%s\n".red # format to return value
}
IRB.conf[:PROMPT_MODE] = :MY_PROMPT
当我删除.red
和.yellow
时,一切都很好。
我认为是因为我的着色字符(如\e[31m
被算作长度为5个字符而不是0个字符。
我的解决方案是暂时删除我的颜色。希望有人会提出比这更好的解决方案。