2

I have an alias jp for looking up Japanese words in the terminal via myougiden. Often I will be typing in Japanese in another application and will switch to bash to use the dictionary. However, when I have the Japanese keyboard turned on and try to input jp 言葉, OSX inputs jp 言葉, with full-width letters and spaces. This line then gets interpreted as a single command, which of course is not found. It is not convenient to switch back and forth between half-width romaji input, so I would rather bash interpreted the full-width input.

I can certainly add another alias for jp, but if bash can't interpret the full-width space then the command makes no sense. Is there any combination of aliases or settings that I can use to make bash interpret full-width spaces as regular half-width spaces?

6
  • I'm not familiar with this sort of problem, but can you just add the full-width space character to bash's IFS variable, which determines what separates fields. Commented Jul 17, 2017 at 19:39
  • That sounds promising! However, when I do IFS=" "; jp foo it tells me: -bash: jp foo: command not found. My $LANG is set to en_US.UTF-8. Commented Jul 18, 2017 at 9:56
  • You probably need to set IFS on a line of its own, and preserve its original settings IFS="<your space>$IFS". Is it possible to rewrite your jp as a simple shell script that reads one line from the input, then calls myougiden with that as parameter? It means 1 more <enter> to type. Commented Jul 18, 2017 at 12:20
  • I actually did set it on it's own line (I shortened it for the comment here). I could rewrite the script, but then the problem would come up again for other commands that take Japanese input. Maybe IFS doesn't allow general unicode characters? Commented Jul 18, 2017 at 16:08
  • You could try using the unicode code (U+3000 it seems for space): x=$(printf '\u3000'); IFS="$x$IFS". I tried b="echo$x/foo" after this and then $b got correctly executed as echo /foo. Commented Jul 18, 2017 at 18:01

1 Answer 1

2

A possible solution is to add a binding in your ~/.inputrc to replace the character by a space:

"\343\200\200": " " 

You need to start a new bash shell to get the file reread. Or you type the equivalent command to the shell:

bind '"\343\200\200":" "' 

The left-hand string is the utf-8 encoding of unicode u+3000 character which seems to be full-width space. If not you need to determine what the character code is your keyboard is generating.

0

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.