28
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

zshで"autoload -Uz compinit && compinit -u"を実行すると"compinit:473: bad floating point constant"のエラーが出る

Posted at

発生箇所を見てみる。

$ locate compinit
    /usr/share/zsh/functions/Completion/bashcompinit
    /usr/share/zsh/functions/Completion/compinit

zsh
if [[ -f "$_comp_dumpfile" ]]; then
if [[ -n "$_i_check" ]]; then
read -rA _i_line < "$_comp_dumpfile"
if [[ _i_autodump -eq 1 && $_i_line[2] -eq $#_i_files &&
$ZSH_VERSION = $_i_line[4] ]]
then
builtin . "$_comp_dumpfile"
_i_done=yes
fi
else
builtin . "$_comp_dumpfile"
_i_done=yes
fi
fi


$_comp_dumpfile があやしい!

$ file ~/.zcompdump
/home/ore/.zcompdump: symbolic link to `/home/ore/Dropbox/dotfiles/.zcompdump'


ウッ 他の環境かなんかのゴミファイルが同期されてた……

unlink ~/.zcompdump
rm ~/Dropbox/dotfiles/.zcompdump
exec zsh


でOKになった。


## 実験

touch .zcompdump
dd if=/dev/zero of=.zcompdump bs=1024000 count=1
ln -s /dev/null ~/.zcompdump


あたりは ~/.zcompdump が正常なものに上書きされるので上記問題は出なかった。
であるので、zcompdumpとしては正常なんだけどzshバージョン差異などで解釈時にエラーが出ているということなんだと思った。

## .zcompdump とは?

compinit の実行を高速化するために、ダンプされた設定ファイルが生 成され、今後の起動ではこれが読まれる。これは初期設定であるが、 -D オプションをつけて compinit を呼べば無効にすることができ る。ダンプファイルは初期化ファイルと同じディレクトリ中(例えば $ZDOTDIR や $HOME)の .zcompdump である。あるいは、 `compinit -d dumpfile' で明示的にファイル名を与えることがで きる。次回の compinit 呼び出しでは、全初期化を行う代わりにダンプ ファイルを読む。

<a href="http://web.archive.org/web/20030620174341/http://dengaku.org/~naoki/zsh/Doc/zsh_19.html#SEC100">zsh: Completion System</a>

中身は補完コマンドの初期化設定。zshスクリプトとして読み込みできる。

source ~/.zcompdump


## よりゆるふわな結論

zshの補完で何かしらうまくいかないことがあったら~/.zcompdump を一旦消せ
28
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?