web-dev-qa-db-ja.com

hunspell:コマンドラインから辞書にWordを追加する

から hunspellのmanページ

...
    When in the -a mode, hunspell will also accept lines  of  single
    words  prefixed  with  any of '*', '&', '@', '+', '-', '~', '#',
    '!', '%', '`', or '^'.  A line starting with '*' tells  hunspell
    to  insert the Word into the user's dictionary (similar to the I
    command).
...

私は次のようなことを試みました:echo "* my_Word" | hunspell -aしかし、サンプルファイルを解析すると、スペルが間違っているWordとして再び表示されるため、Wordは辞書にありません。

これはどのように機能しますか、カスタム単語を追加するにはどうすればよいですか?
またはAspell、またはHunspell/Aspellによって読み取られた互換性のある辞書に書き込む「一般的な」プログラムを使用しますか?

5
zetah

(similar to the I command)の代わりに(similar to the A command)にする必要があると思います。

A

Accept the Word for the rest of this hunspell session. 

manページをもう一度確認してみましょう。

The -a option is intended to be used from other programs through a pipe.
In this mode, hunspell prints a one-line version identification message,
and then begins reading lines of input.

したがって、-a modeにある場合、hunspellセッションは、入力の最後の行を読み取って処理した後に終了します。さらに、

When in the -a mode, hunspell will also accept lines of single words prefixed
with any of '*', '&', '@', '+', '-', '~', '#', '!', '%', ''', or '^'. A line
starting with '*' tells hunspell to insert the Word into the user's dictionary
(similar to the I command)[........] A line prefixed with '#' will cause the
personal dictionary to be saved.

単一のWord行の前に*を付けると(Wordとプレフィックスの間にスペースを入れないでください)、そのWordがユーザーの辞書に追加されますが、現在のhunspellセッションの場合のみです。これは、manページのとおり1行のみであるためです。プレフィックスが#の場合、個人辞書が保存されます(つまり、ディスク上のファイル)。したがって、実行中

echo "*goosfraba" | hunspell -a

絶対に何もしません。 hunspellは、このセッションのディクショナリにgoosfrabaを追加して終了します(他の行は処理されません)。最近追加された単語を保存するには、接頭辞#の2行目を追加する必要があります。

echo -e "*goosfraba\n#" | hunspell -a

どれどれ:

::スペルチェックgoosfraba

echo -e "goosfraba" | hunspell -a
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)
& goosfraba 1 0: goofball

&= Wordは辞書にありません。ニアミスが1つあります:goofball

:: goosfrabaを辞書に追加してから、同じhunspellセッション(2行)でスペルチェックを行います。

echo -e "*goosfraba\ngoosfraba" | hunspell -a
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)
*

* = Wordは辞書にあります。

::スペルチェックgoosfrabaもう一度(新しいhunspellセッション):

echo -e "goosfraba" | hunspell -a
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)
& goosfraba 1 0: goofball

&=繰り返しますが、Wordは辞書にありません(前のセッションでは何も保存されませんでした)

:: goosfrabaを辞書に追加し、同じhunspellセッション中に保存します(2行):

echo -e "*goosfraba\n#" | hunspell -a
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)

::スペルチェックgoosfrabaもう一度(新しいhunspellセッション):

echo "goosfraba" | hunspell -a
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)
*

* = Wordは辞書にあります。

5
don_crissti

最も簡単な解決策は、Aspellを使用して、ホームフォルダーに 。aspell.lang.pws という名前のカスタムファイルを作成することです。内容は次のとおりです。

personal_ws-1.1 en 0
my_Word

「ポータブル辞書」を共有するのに最適な方法のように思われる言語「en」の場合、ところで

2
zetah