zsh はじめました 3

前回:zsh はじめました 2 - (EE) Unknown Device

Try

う〜ん?
LANGをexportする例があるけど、こういった基本的な設定って、/etc/profileとかに書いておいたほうが良くない?・・・そうか!/etc/profileに書かずに、.zshrcに書いておくことによってzshを使ったときだけその設定が有効になるような、そういったテクニックなのかもしれん。ということで.zshrcに書いておく。(それか、こういった他のshellでも通用する基本的な設定は.zprofileに書いておいたほうがいいのかもしれない)
端末エミュレーターはckなので、UTF-8で。

export LANG=ja_JP.UTF-8

それで以下を試してみた。

%ほげ

すると

zsh: command not found: \u00e3\u0081\u00bb\u00e3\u0081\u0092

となる。たしかにUTF-8だ。・・・でもなんか違う。

やっときたゼ!プロンプト!
ということで、まず基本的なプロンプトの設定を。

PROMPT="%/%% "
PROMPT2="%_%\> "
SPROMPT="%r is correct? [n,y,a,e]: "

PROMPTが通常のプロンプトで設定例では、

%/
Present working directory ($PWD). If an integer follows the `%', it specifies a number of trailing components of $PWD to show; zero means the whole path. A negative integer specifies leading components, i.e. %-1d specifies the first component.

http://zsh.sourceforge.net/Doc/Release/zsh_12.html#SEC40

%%
A `%'.

http://zsh.sourceforge.net/Doc/Release/zsh_12.html#SEC40

を使っている。
次のPROMPT2は"\"等の複数入力時に表示されるプロンプト。(bashでは">"になってるアレ)
設定例では、

%_
The status of the parser, i.e. the shell constructs (like `if' and `for') that have been started on the command line. If given an integer number that many strings will be printed; zero or negative or no integer means print as many as there are. This is most useful in prompts PS2 for continuation lines and PS4 for debugging with the XTRACE option; in the latter case it will also work non-interactively.

http://zsh.sourceforge.net/Doc/Release/zsh_12.html#SEC40

を使っている。
SPROMPTはtypo等の時に表示されるプロンプト・・・のハズ。
設定例は

SPROMPT
The prompt used for spelling correction. The sequence `%R' expands to the string which presumably needs spelling correction, and `%r' expands to the proposed correction. All other prompt escapes are also allowed.

http://zsh.sourceforge.net/Doc/Release/zsh_14.html#IDX344

を使っている。
でも、何故かddateなどのtypoでSPROMPTが現れない。

Now problem

  • プロンプトがおかしい。
    • 解決:PROMPTをちゃんと設定したので解決した。
  • UTF-8がちゃんと通ってるが、シーケンスされた文字列で見える。
  • ddate等のtypoでSPROMPTが表示されない。

Why?

  • 原因は"^["自体がエスケープだから、それが原因でそのまま表示されていた。
  • ???
  • 多分、そういったデータベースかなんかがあって、それが無い。またはcygwinが対応してない?

Self

自分の使っている端末エミュレーターはckです。[関連:ck and GNU screen - (EE) Unknown Device]