其实在cygwin下不能输入中文的原因是中文字符的最高位都是1,所以被当作控制符处理了。ok,我们现看下怎么做,然后再看看为什么这么做。
怎么做:如果你的用户目录(/home/XXX)下有了: .inputrc , .bashrc/.bash-profile这两个或三个文件,那么恭喜你,你不用建立了,只要做修改就可以了。如果没有,那么麻烦你要建立这三个文件。在Linux下,我们有多种建立文件的方法,可是如果你没有在cygwin下装有vi等编辑器,那么您可以按如下提供的方式建立这三个文件:
(1)从/ect/skel中将这三个文件拷贝到你的用户主目录下。
(2)使用notepad来建立这三个文件,但是很重要的一点是,请您在保存时一定要存成ANSI编码的.txt文件,这一点请一定要记住。
ok,文件现在是建立了,那么就剩下如何修改文件了:(请按ANSI编码格式编写)
(1)请在.inputrc文件中添加:
set meta-flag on
set convert-meta off
set output-meta on
set input-meta on
set completion-ignore-case on
(2)请在.bashrc 或.bash-profile文件中添加:
alias ls='ls --show-control-chars --color=auto'
export LESSCHARSET=latin1
修改后请保存成ANSI编码的格式。
ok,大功告成了。
现在就看看为什么要这么做,cygwin下不能输入中文的原因是中文字符的最高位都是1,所以被当作控制符处理了,meta-flag,convert-meta等选项的意思可以参考man bash。简单的说,设置meta-flag on允许从终端输入中文,否则的话终端会过滤掉每个字节的最高位;convert-meta off是设置不将中文字符转化为转义序列,因为中文是两个字节表示的,第一字节的最高位是1开头的,可以能同于某个转义字符;output-meta on就是允许向终端直接输出中文;input-meta on就是允许向终端直接输入中文;set completion-ignore-case on这个可以在 echo A的时候按了