Add Japanese translations and implement I18N support

- Add Japanese translations for documentation
- Implement I18N framework
- Update mkdocs.yml for multi-language support

This commit significantly enhances the project's internationalization.
This commit is contained in:
Toshiyuki Yoshida 2024-09-26 10:36:54 +09:00
parent 4d84c491f1
commit a50566472f
No known key found for this signature in database
GPG key ID: 94EEDC12CA884526
89 changed files with 20420 additions and 681 deletions

108
docs/ja/advanced.md Normal file
View file

@ -0,0 +1,108 @@
<!--
Copyright © 2012-2023 jrnl contributors
License: https://www.gnu.org/licenses/gpl-3.0.html
-->
# 高度な使用方法
## 設定ファイル
`jrnl`には、テンプレート、フォーマット、複数のジャーナルなど、設定ファイルを通
してカスタマイズできる多様なオプションがあります。詳細については[設定ファイルリ
ファレンス](./reference-config-file.md)を参照するか、以下の一般的な使用例をお読
みください。
### 複数のジャーナルファイル
[設定ファイル](./reference-config-file.md)でより多くのジャーナルを定義することで、`jrnl`を複数のジャーナル(例:`private``work`)で使用するように設定できます。例えば:
```yaml
journals:
default: ~/journal.txt
work: ~/work.txt
```
`default`ジャーナルは`jrnl`を初めて起動したときに作成されます。
これで、`jrnl`の代わりに`jrnl work`を使用して`work`ジャーナルにアクセスできます。例えば:
```sh
jrnl work at 10am: @Steveとのミーティング
jrnl work -n 3
```
これらはどちらも`~/work.txt`を使用しますが、`jrnl -n 3``~/journal.txt`から最後の3つのエントリーを表示します`jrnl default -n 3`も同様です)。
各ジャーナルのデフォルトオプションを個別にオーバーライドすることもできます。
`jrnl.yaml`が以下のようになっている場合:
```yaml
encrypt: false
journals:
default: ~/journal.txt
work:
journal: ~/work.txt
encrypt: true
food: ~/my_recipes.txt
```
`default``food`ジャーナルは暗号化されませんが、`work`ジャーナルは暗号化されます!
`jrnl.yaml`のトップレベルにあるすべてのオプションをオーバーライドできますが、少なくともそのジャーナルのジャーナルファイルを指す`journal: ...`キーを指定してください。
以下の設定例を考えてみましょう:
```yaml
editor: vi -c startinsert
journals:
default: ~/journal.txt
work:
journal: ~/work.txt
encrypt: true
display_format: json
editor: code -rw
food:
display_format: markdown
journal: ~/recipes.txt
```
`work`ジャーナルは暗号化され、デフォルトで`json`形式で出力され、VSCodeの既存のウィンドウで編集されます。同様に、`food`ジャーナルはデフォルトでmarkdown形式で出力されますが、他のすべてのデフォルト設定を使用します。
### コマンドラインから設定を変更する
現在の`jrnl`インスタンスの設定フィールドを`--config-override CONFIG_KEY CONFIG_VALUE`を使用してオーバーライドできます。ここで、`CONFIG_KEY`は有効な設定フィールドをドット表記で指定し、`CONFIG_VALUE`は希望する(有効な)オーバーライド値です。ドット表記を使用して、`colors.title`のような他のキー内のキーを変更することもできます。
複数のオーバーライドを指定するには、`--config-override`を複数回呼び出します。
!!! note
これらのオーバーライドにより、jrnl設定の**_任意の_**フィールドを変更できます。自己責任で使用してください。
#### 例
```sh
# 高速ログ記録のために`stdin`プロンプトを使用してエントリーを作成する
jrnl --config-override editor ""
# プロジェクトのログを記録する
jrnl --config-override journals.todo "$(git rev-parse --show-toplevel)/todo.txt" todo タオルを見つける
# 複数のオーバーライドを渡す
jrnl --config-override display_format fancy --config-override linewrap 20 \
--config-override colors.title green
```
### 代替設定の使用
現在の`jrnl`インスタンスに対して、`--config-file CONFIG_FILE_PATH`を使用して代替設定ファイルを指定できます。ここで`CONFIG_FILE_PATH`は代替`jrnl`設定ファイルへのパスです。
#### 例
```sh
# 個人的なジャーナルエントリーに個人用設定ファイルを使用する
jrnl --config-file ~/foo/jrnl/personal-config.yaml
# 仕事関連のエントリーに代替設定ファイルを使用する
jrnl --config-file ~/foo/jrnl/work-config.yaml
# デフォルトの設定ファイルを使用する(初回実行時に作成される)
jrnl
```

132
docs/ja/contributing.md Normal file
View file

@ -0,0 +1,132 @@
<!--
Copyright © 2012-2023 jrnl contributors
License: https://www.gnu.org/licenses/gpl-3.0.html
-->
# jrnlへの貢献
jrnlへの貢献を歓迎します。バグの報告、ドキュメントの改善、リリースのテスト、機能やバグに関する議論への参加、コードの作成など、さまざまな形での貢献が可能です。
## 目次
- [行動規範](#行動規範)
- [バグの報告](#バグの報告)
- [ドキュメントの編集](#ドキュメントの編集)
- [テスト](#テスト)
- [機能リクエストとアイデアの提出](#機能リクエストとアイデアの提出)
- [jrnlの開発](#開発)
## 行動規範
まず始めに、[行動規範](https://github.com/jrnl-org/jrnl/blob/develop/CODE_OF_CONDUCT.md)をお読みください。
## バグの報告
バグは[新しい問題を開く](https://github.com/jrnl-org/jrnl/issues/new/choose)ことで報告してください。できるだけ詳細に説明してください。多くのバグは特定のオペレーティングシステムやPythonのバージョンに固有のものなので、その情報も含めてください
## ドキュメントの編集
ドキュメントにタイプミスや間違いを見つけた場合は、すぐに修正してプルリクエストを送ってください。何を変更すべきか不確かだが問題を見つけた場合は、「ドキュメントの変更」タイプで[新しい問題を開く](https://github.com/jrnl-org/jrnl/issues/new/choose)ことができます。
ドキュメントを編集するには、**develop**ブランチの`docs/*.md`ファイルを編集します。プロジェクトのルートディレクトリで`poe docs-run`を実行し、ブラウザで[localhost:8000](http://localhost:8000)にアクセスすることで結果を確認できます。
### 外部エディタとヒントとコツ
便利だと思うjrnlのコマンドラインテクニックを共有したい場合は、["ヒントとコツ"セクション](tips-and-tricks.md)に追加するとよいでしょう。特定の外部エディタとの統合に関するアドバイスは、["外部エディタ"セクション](external-editors.md)に追加できます。
## テスト
jrnlの保守作業の多くは、コーディングよりもテストに関わるものです。
jrnlの性質上、非常に機密性の高いデータを扱うため、データ損失のリスクを冒すことはできません。jrnlには包括的な自動テストスイートがありますが、ユーザーテストはこのリスクを軽減する上で極めて重要です。
### プレリリース
[プレリリースは通常のリリースと同様にPyPiを通じてデプロイされます](https://pypi.org/project/jrnl/#history)。[pipx](https://pypi.org/project/pipx/)を使用してそれらを取得し、テストすることができます。各リリースで変更された内容については[チェンジログ](https://github.com/jrnl-org/jrnl/blob/develop/CHANGELOG.md)を参照してください。
### プルリクエスト
gitに慣れている場合は、特定の[プルリクエスト](https://github.com/jrnl-org/jrnl/pulls)をフェッチし、自分でテストして、結果を報告してください。新機能の動作をスクリーンキャストで示すとなおよいでしょう。
### バグ報告の確認
[GitHubの問題](https://github.com/jrnl-org/jrnl/issues?q=is%3Aissue+is%3Aopen+label%3Abug)には常にオープンなバグがあり、多くは特定のOS、Pythonバージョン、またはjrnlバージョンに固有のものです。「jrnl v2.2、MacOS 10.15、Python 3.8.1で確認」といった簡単なコメントでも、バグの追跡に非常に役立ちます。
### 自動テスト
新しい自動テストの追加方法については、以下の開発セクションを参照してください。
## 機能リクエストとアイデアの提出
jrnlに対する機能リクエストやアイデアがある場合は、[新しい問題を開いて](https://github.com/jrnl-org/jrnl/issues/new/choose)機能の目的と関連するユースケースを説明してください。私たちはあなたと議論し、それがプロジェクトに適しているかどうかを決定します。
新機能について議論する際は、私たちの設計目標を念頭に置いてください。jrnlは[一つのことをうまく行う](https://en.wikipedia.org/wiki/Unix_philosophy)ことを目指しています。私たちにとって、それは以下を意味します:
- *機敏*であること
- シンプルなインターフェースを持つこと
- 機能の重複を避けること
## 開発
### 環境のセットアップ
jrnlを開発するには[poetry](https://python-poetry.org/)をインストールする必要があります。poetryがプロジェクトの他のすべての依存関係を管理します。
### ブランチの理解
jrnlは主に2つのブランチを使用します
- `develop` - 継続的な開発用
- `release` - リリース用
一般的に、プルリクエストは`develop`ブランチに対して行われるべきです。
### 一般的な開発コマンド
`pyproject.toml`にコマンドの一覧があります。ユーザーは`poe`の後にコマンド名を入力することでコマンドを実行できます([Poe the Poet](https://github.com/nat-n/poethepoet)は単独で、または`poetry install`の一部としてインストールできます)。
典型的な開発ワークフローには以下が含まれます:
- 依存関係のインストール:
- `poetry install`
- 仮想環境の有効化:
- `poetry shell`
- 仮想環境でソースを実行:
- `jrnl`(必要に応じて引数を付けて)
- テストの実行:
- `poe test`
- コードのフォーマットをスタイルに標準化:
- `poe format`
### 自動テストの更新
バグの解決や新機能の追加時には、将来その機能が壊れるのを防ぐためにテストを追加してください。テストでカバーされていない機能に気づいた場合は、テストのみのプルリクエストを提出することもできます。
テストには、ユニットテスト用に[pytest](https://docs.pytest.org)を、統合テスト用に[pytest-bdd](https://pytest-bdd.readthedocs.io/)を使用しています。すべてのテストは`tests`フォルダーにあります。
多くのテストは、他のテストと同じフォーマットの`*.feature`ファイルを編集するだけで作成できます。より複雑な機能については、`tests/lib/`にステップを実装し、それを`feature`ファイルのテストで実行する必要があるかもしれません。
### プルリクエストの提出
準備ができたら、プルリクエストPRを提出してください。jrnlのメンテナーは通常2週間ごとにプルリクエストをレビューしますが、継続的統合パイプラインは数分以内にあなたのコードに対して自動テストを実行し、さまざまな環境で見つかった問題を報告します。
プルリクエストのテンプレートにはハウスキーピング項目のチェックリストが含まれています。提出時に必要に応じてそれらを記入してください。
プルリクエストにテスト失敗が含まれている場合、おそらくレビューされず、確実に承認されません。ただし、テスト失敗の解決に助けが必要な場合は、PRでその旨を言及してください。
### 作業対象を見つける
[jrnlのGitHub Issues](https://github.com/jrnl-org/jrnl/issues)を[ラベル](https://github.com/jrnl-org/jrnl/labels)で検索して、作業対象を見つけることができます。以下は検索する価値のあるラベルです:
- [critical](https://github.com/jrnl-org/jrnl/labels/critical)
- [help wanted](https://github.com/jrnl-org/jrnl/labels/help%20wanted)
- [bug](https://github.com/jrnl-org/jrnl/labels/bug)
- [enhancement](https://github.com/jrnl-org/jrnl/labels/enhancement)
[マイルストーン](https://github.com/jrnl-org/jrnl/milestones)をレビューして、プロジェクトの優先事項を把握することもできます。
### 新しいプログラマーとPythonを初めて使うプログラマーへの注意
jrnlは発足以来かなり成長しましたが、全体的な複雑さエンドユーザープログラムとしてはは比較的低く、コードを理解しやすいと思います。
質問がある場合は、遠慮なく聞いてくださいPythonは初心者プログラマーを歓迎し、オープンなコミュニティとして知られています。コードをフォークして自由に試してみてください私たちと共有したいものを作成した場合は、プルリクエストを作成してください。プルリクエストが完璧で、慣用的で、すぐにマージできるコードであることは期待していません。一緒に取り組んでいきましょう

150
docs/ja/encryption.md Normal file
View file

@ -0,0 +1,150 @@
<!--
Copyright © 2012-2023 jrnl contributors
License: https://www.gnu.org/licenses/gpl-3.0.html
-->
# 暗号化
## セキュリティに関する注意
`jrnl`はベストプラクティスに従っていますが、現実世界で完全なセキュリティを実現することは不可能です。あなたの`jrnl`データを少なくとも部分的に侵害する方法はいくつかあります。詳細については、[プライバシーとセキュリティ](./privacy-and-security.md)のページを参照してください。
## 暗号化と復号化
既存のプレーンテキストのジャーナルファイルは、`--encrypt`コマンドを使用して暗号化できます:
```sh
jrnl --encrypt [ファイル名]
```
その後、新しいパスワードを入力すると、暗号化されていないファイルが新しい暗号化されたファイルに置き換えられます。
このコマンドは、既に暗号化されているジャーナルファイルのパスワードを変更する際にも機能します。`jrnl`は現在のパスワードと新しいパスワードの入力を求めます。
逆に、
```sh
jrnl --decrypt [ファイル名]
```
は暗号化されたジャーナルファイルをプレーンテキストファイルに置き換えます。また、ファイル名を指定することもできます(例:`jrnl --decrypt plain_text_copy.txt`)。これにより、元の暗号化されたファイルはそのままで、その隣に新しいプレーンテキストファイルが作成されます。
!!! note
[設定ファイル](./reference-config-file.md)の`encrypt`を別の値に変更しても、
ジャーナルファイルの暗号化や復号化は行われません。それはただ、あなたの
ジャーナルが暗号化されているかどうかを示すだけです。したがって、この
オプションを手動で変更すると、ほとんどの場合、ジャーナルファイルを
ロードできなくなります。そのため、上記のコマンドが必要になります。
## パスワードをキーチェーンに保存する
誰も`jrnl`のパスワードを回復またはリセットすることはできません。パスワードを失うと、
あなたのデータに永久にアクセスできなくなります。
このため、ジャーナルを暗号化する際、`jrnl`はパスワードをシステムのキーチェーンに
保存するかどうかを尋ねます。追加の利点として、ジャーナルファイルとやり取りする際に
パスワードを入力する必要がなくなります。
最初にパスワードをキーチェーンに保存しなかったが、後で保存することにした場合
(または、あるコンピューターのキーチェーンには保存したいが、別のコンピューターでは
保存したくない場合)、暗号化されたジャーナルに対して`jrnl --encrypt`を実行し、
同じパスワードを再度使用することができます。これによりキーチェーン保存のプロンプトが
トリガーされます。
## 手動復号化
ジャーナルを復号化する最も簡単な方法は`jrnl --decrypt`を使用することですが、
必要に応じてジャーナルを手動で復号化することもできます。これを行うには、
AESアルゴリズム特にAES-CBCをサポートする任意のプログラムを使用できます。
復号化には以下の関連情報が必要です:
- **キー:** 暗号化に使用されるキーは、パスワードの
[SHA-256](https://en.wikipedia.org/wiki/SHA-2)ハッシュです。
- **初期化ベクトルIV** IVは暗号化されたジャーナルファイルの最初の16バイトに
保存されています。
- **ジャーナルの実際のテキスト**暗号化されたジャーナルファイルの最初の16バイト
以降のすべて)は[UTF-8](https://en.wikipedia.org/wiki/UTF-8)でエンコードされ、
暗号化される前に[PKCS#7](https://en.wikipedia.org/wiki/PKCS_7)に従って
パディングされます。
スクリプト形式でどのように見えるかの例が必要な場合は、以下にジャーナルを手動で
復号化するのに使用できるPythonスクリプトの例をいくつか示します。
!!! note
これらは単なる例であり、`jrnl`が存在しなくなっても、ジャーナルファイルが
まだ復元可能であることを示すためにここにあります。可能な場合は
`jrnl --decrypt`を使用してください。
**jrnl v2ファイルの例**
```python
#!/usr/bin/env python3
"""
jrnl v2の暗号化されたジャーナルを復号化します。
注意:`cryptography`モジュールがインストールされている必要があります
`pip3 install crytography`のようなコマンドでインストールできます)
"""
import base64
import getpass
from pathlib import Path
from cryptography.fernet import Fernet
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
filepath = input("ジャーナルファイルのパス: ")
password = getpass.getpass("パスワード: ")
with open(Path(filepath), "rb") as f:
ciphertext = f.read()
password = password.encode("utf-8")
kdf = PBKDF2HMAC(
algorithm=hashes.SHA256(),
length=32,
salt=b"\xf2\xd5q\x0e\xc1\x8d.\xde\xdc\x8e6t\x89\x04\xce\xf8",
iterations=100_000,
backend=default_backend(),
)
key = base64.urlsafe_b64encode(kdf.derive(password))
print(Fernet(key).decrypt(ciphertext).decode("utf-8"))
```
**jrnl v1ファイルの例**
```python
#!/usr/bin/env python3
"""
jrnl v1の暗号化されたジャーナルを復号化します。
注意:`pycrypto`モジュールがインストールされている必要があります
`pip3 install pycrypto`のようなコマンドでインストールできます)
"""
import argparse
import getpass
import hashlib
from Crypto.Cipher import AES
parser = argparse.ArgumentParser()
parser.add_argument("filepath", help="復号化するジャーナルファイル")
args = parser.parse_args()
pwd = getpass.getpass()
key = hashlib.sha256(pwd.encode("utf-8")).digest()
with open(args.filepath, "rb") as f:
ciphertext = f.read()
crypto = AES.new(key, AES.MODE_CBC, ciphertext[:16])
plain = crypto.decrypt(ciphertext[16:])
plain = plain.strip(plain[-1:])
plain = plain.decode("utf-8")
print(plain)
```

113
docs/ja/external-editors.md Normal file
View file

@ -0,0 +1,113 @@
<!--
Copyright © 2012-2023 jrnl contributors
License: https://www.gnu.org/licenses/gpl-3.0.html
-->
# 外部エディタ
お好みの外部エディタを設定するには、[設定ファイル](./reference-config-file.md#editor)の`editor`オプションを更新してください。エディタがオペレーティングシステムの`PATH`環境変数に含まれていない場合は、エディタのフルパスを入力する必要があります。
設定が完了したら、`jrnl`コマンドを単独で使用して、エディタで新しいドキュメントとしてエントリーを作成できます:
```text
jrnl
```
ドキュメントの最初の行に、通常通りエントリーの時間とタイトルを指定できます。
クイックエントリーを含めることで、エディタをスキップすることもできます:
```text
jrnl yesterday: All my troubles seemed so far away.
```
コマンドラインでエントリーを開始し、選択したエディタで書き続けたい場合は、`--edit`フラグを使用します。例:
```text
jrnl yesterday: All my troubles seemed so far away. --edit
```
!!! note
エントリーの編集を保存してログに記録するには、ファイルを保存して閉じてください。
jrnlで動作するには、すべてのエディタが[ブロッキングプロセス](<https://en.wikipedia.org/wiki/Blocking_(computing)>)である必要があります。[micro](https://micro-editor.github.io/)のような一部のエディタはデフォルトでブロッキングですが、他のエディタは以下に記載されているような追加の引数でブロッキングにすることができます。jrnlがエディタを開いても即座に実行が終了する場合、そのエディタはブロッキングプロセスではありません。以下の提案のいずれかで修正できる可能性があります。
エディタが機密情報を漏洩する可能性とそのリスクを軽減する方法については、[このセクション](./privacy-and-security.md#editor-history)を参照してください。
## Sublime Text
[Sublime Text](https://www.sublimetext.com/)を使用するには、Sublime Textのコマンドラインツールをインストールし、`jrnl.yaml`を以下のように設定します:
```yaml
editor: "subl -w"
```
`-w`フラグは、jrnlがSublime Textがファイルを閉じるのを待ってからジャーナルに書き込むようにするためのものです。
## Visual Studio Code
[Visual Studio Code](https://code.visualstudio.com)も、プロセスがファイルを閉じるまで待機するように指示するフラグが必要です:
```yaml
editor: "code --wait"
```
Windowsでは、`code`はデフォルトでパスに追加されていないので、`code.exe`ファイルのフルパスを入力するか、`PATH`変数に追加する必要があります。
## MacVim
Sublime Textと同様に、MacVimもプロセスがファイルを閉じるまで待機してからジャーナルに制御を戻すように指示するフラグで起動する必要があります。MacVimの場合、このフラグは`-f`です:
```yaml
editor: "mvim -f"
```
## Vim/Neovim
Linuxでエディタとしてvimの派生版を使用するには、単純に`editor`を実行ファイルに設定します:
```yaml
editor: "vim"
# または
editor: "nvim"
```
## iA Writer
OS Xでは、素晴らしい[iA Writer](http://www.iawriter.com/mac)を使用してエントリーを書くことができます。`jrnl.yaml`を以下のように設定してください:
```yaml
editor: "open -b pro.writer.mac -Wn"
```
これは何をしているのでしょうか?`open -b ...`は、バンドル識別子(すべてのアプリに固有の文字列)で識別されるアプリケーションを使用してファイルを開きます。`-Wn`は、制御を戻す前にアプリケーションが閉じるまで待つこと、およびアプリケーションの新しいインスタンスを使用することをアプリケーションに指示します。
システムで`pro.writer.mac`バンドル識別子が見つからない場合は、シェルでiA Writerの`Info.plist`ファイルを調べることで、使用する正しい文字列を見つけることができます:
```sh
grep -A 1 CFBundleIdentifier /Applications/iA\ Writer.app/Contents/Info.plist
```
## Windows上のNotepad++
[Notepad++](http://notepad-plus-plus.org/)をエディタとして設定するには、`jrnl`の設定ファイル(`jrnl.yaml`)を以下のように編集します:
```yaml
editor: "C:\\Program Files (x86)\\Notepad++\\notepad++.exe -multiInst -nosession"
```
二重のバックスラッシュは、`jrnl`がファイルパスを正しく読み取るために必要です。`-multiInst -nosession`オプションにより、`jrnl`は独自のNotepad++ウィンドウを開きます。
## emacs
`emacs`をエディタとして使用するには、`jrnl`の設定ファイル(`jrnl.yaml`)を以下のように編集します:
```yaml
editor: emacsclient -a "" -c
```
メッセージの編集が終わったら、保存して`C-x #`でバッファを閉じ、emacsclientプロセスを停止します。
## その他のエディタ
他のエディタを使用していて、共有したい場合は、[ドキュメントの貢献](./contributing.md#editing-documentation)を自由に行ってください。

328
docs/ja/formats.md Normal file
View file

@ -0,0 +1,328 @@
<!--
Copyright © 2012-2023 jrnl contributors
License: https://www.gnu.org/licenses/gpl-3.0.html
-->
# フォーマット
`jrnl`は様々な代替フォーマットをサポートしています。これらは、ジャーナルを`jrnl`のデフォルトとは異なる方法で表示したり、ジャーナルからのデータを他のプログラムにパイプして報告書を作成したり、`jrnl`のデータを好きなように使用したりするのに利用できます。
これらのフォーマットはいずれも検索と組み合わせて使用でき(例:`jrnl -contains "lorem ipsum" --format json`)、検索結果を指定されたフォーマットで表示したり、単独で使用して(例:`jrnl --format json`)選択されたジャーナルのすべてのエントリーを表示したりできます。
このページでは、すべての組み込みフォーマットの例を示していますが、`jrnl`はプラグインを通じてさらにフォーマットを追加することをサポートしているため、システムによってはさらに多くのフォーマットが利用可能な場合があります。システムで利用可能なフォーマットのリストについては、`jrnl --help`を参照してください。
これらのフォーマットはどれも互換性があり、以下では便宜上「表示」、「データ」、「レポート」フォーマットにグループ分けしているだけです。
## 表示フォーマット
これらのフォーマットは主にターミナルでジャーナルを表示することを目的としています。それでも、他のフォーマットと同じように使用できます(選択すればファイルに書き込むこともできます)。
### Pretty
```sh
jrnl --format pretty
# または
jrnl -1 # 任意の検索
```
これは`jrnl`のデフォルトフォーマットです。`--format`が指定されていない場合、`pretty`が使用されます。
各エントリーのタイムスタンプをユーザー設定に従ってフォーマットし、同じ行にタイトルを表示します。その後、エントリーの本文が下に表示されます。
このフォーマットは、設定ファイルの以下の値を通じて設定可能です(詳細は[Advanced Usage](./advanced.md)を参照):
- `colors`
- `body`
- `date`
- `tags`
- `title`
- `indent_character`
- `linewrap`
- `timeformat`
**出力例**:
```sh
2020-06-28 18:22 これは最初のサンプルエントリーです
| これは最初のサンプルエントリーの本文テキストです。
2020-07-01 20:00 これは2番目のサンプルエントリーです
| これは2番目のサンプルエントリーの本文テキストですが、
| これには@tagがあります
2020-07-02 09:00 これは3番目のサンプルエントリーです
| これは3番目のサンプルエントリーの本文テキストです。
```
### Short
```sh
jrnl --format short
# または
jrnl --short
```
これはエントリーを短縮して、日付とタイトルのみを表示します。本質的には`pretty`フォーマットから各エントリーの本文を除いたものです。長いジャーナルエントリーがあり、検索に一致するエントリーのリストのみを表示したい場合に便利です。
**出力例**:
```sh
2020-06-28 18:22 これは最初のサンプルエントリーです
2020-07-01 20:00 これは2番目のサンプルエントリーです
2020-07-02 09:00 これは3番目のサンプルエントリーです
```
### Fancy (または Boxed)
```sh
jrnl --format fancy
# または
jrnl --format boxed
```
このフォーマットは各エントリーを枠線で囲みます。これにより、各エントリーの開始と終了がわかりやすくなります。フォーマットがいかに自由形式であるかを示す例であり、また、そういったものが好きな人にとっては~_~ファンシー~_~に見えるかもしれません。
!!! note
日本語の場合、文字幅の問題でボックスが崩れてしまうようです。
**出力例**:
```sh
┎──────────────────────────────────────────────────────────────────────╮2020-06-28 18:22
┃ これは最初のサンプルエントリーです ╘═══════════════╕
┠╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
┃ これは最初のサンプルエントリーの本文テキストです。 │
┖──────────────────────────────────────────────────────────────────────────────────────┘
┎──────────────────────────────────────────────────────────────────────╮2020-07-01 20:00
┃ これは2番目のサンプルエントリーです ╘═══════════════╕
┠╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
┃ これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。 │
┖──────────────────────────────────────────────────────────────────────────────────────┘
┎──────────────────────────────────────────────────────────────────────╮2020-07-02 09:00
┃ これは3番目のサンプルエントリーです ╘═══════════════╕
┠╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
┃ これは3番目のサンプルエントリーの本文テキストです。 │
┖──────────────────────────────────────────────────────────────────────────────────────┘
```
## データフォーマット
これらのフォーマットは主に、ジャーナルを他のプログラムにパイプしたりエクスポートしたりすることを目的としています。それでも、他のフォーマットと同じように使用できます(必要に応じてファイルに書き込んだり、ターミナルに表示したりできます)。
!!! note
これらのフォーマットを使用する際に「2つのエントリーが見つかりました」のようなメッセージボックスが表示されることがありますが、これらのメッセージは`stdout`ではなく`stderr`に書き込まれるため、`|`演算子を使用してパイプする際には含まれません。
### JSON
```sh
jrnl --format json
```
JSONは多くのプログラムで使用される非常に便利なフォーマットで、ほぼすべてのプログラミング言語でサポートされています。JSONデータでできることは多岐にわたります。例えば、`jq`[プロジェクトページ](https://github.com/stedolan/jq))を使用してジャーナルのフィールドをフィルタリングすることができます。
以下のように:
```sh
$ j -3 --format json | jq '.entries[].date' jrnl-GFqVlfgP-py3.8
"2020-06-28"
"2020-07-01"
"2020-07-02"
```
あるいは、ジャーナルの[美しいタイムライン](http://timeline.knightlab.com/)を作成するのはどうでしょうか?
**出力例**:
```json
{
"tags": {
"@tag": 1
},
"entries": [
{
"title": "これは最初のサンプルエントリーです",
"body": "これは最初のサンプルエントリーの本文テキストです。",
"date": "2020-06-28",
"time": "18:22",
"tags": [],
"starred": false
},
{
"title": "これは2番目のサンプルエントリーです",
"body": "これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります。",
"date": "2020-07-01",
"time": "20:00",
"tags": ["@tag"],
"starred": false
},
{
"title": "これは3番目のサンプルエントリーです",
"body": "これは3番目のサンプルエントリーの本文テキストです。",
"date": "2020-07-02",
"time": "09:00",
"tags": [],
"starred": false
}
]
}
```
### Markdown
```sh
jrnl --format markdown
# または
jrnl --format md
```
Markdownは人間が読みやすく、他のフォーマットhtml、pdfにレンダリングできるシンプルなマークアップ言語です。例えば、`jrnl`の[README](https://github.com/jrnl-org/jrnl/blob/develop/README.md)はmarkdownでフォーマットされており、Githubが一部のフォーマットを追加して見栄えを良くしています。
markdownフォーマットはエントリーを日付でグループ化しまず年、次に月、必要に応じてヘッダーマーキング`#``##`などを追加します。すでにジャーナルにmarkdownのヘッダーマーキングがある場合、これらの新しいヘッダーの下に適合するように必要に応じて増加しますつまり、`#``##`になります)。
このフォーマットは、例えば、ジャーナルをmarkdownからhtmlに変換するプログラムにエクスポートして、ジャーナルからウェブサイトやブログを作成するのに非常に便利です。
**出力例**:
```markdown
# 2020
## 6月
### 2020-06-28 18:22 これは最初のサンプルエントリーです
これは最初のサンプルエントリーの本文テキストです。
## 7月
### 2020-07-01 20:00 これは2番目のサンプルエントリーです
これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります
### 2020-07-02 09:00 これは3番目のサンプルエントリーです
これは3番目のサンプルエントリーの本文テキストです。
```
### プレーンテキスト
```sh
jrnl --format text
# または
jrnl --format txt
```
これは、`jrnl`がジャーナルをディスクに保存するのに使用するのと同じプレーンテキストフォーマットでジャーナルを出力します。このフォーマットは特に`jrnl`内でのジャーナルのインポートとエクスポートに便利です。
例えば、あるジャーナルから別のジャーナルにエントリーを移動したり、別のジャーナルからの検索結果で新しいジャーナルを作成したりするのに使用できます。
**出力例**:
```sh
[2020-06-28 18:22] これは最初のサンプルエントリーです
これは最初のサンプルエントリーの本文テキストです。
[2020-07-01 20:00] これは2番目のサンプルエントリーです
これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります
[2020-07-02 09:00] これは3番目のサンプルエントリーです
これは3番目のサンプルエントリーの本文テキストです。
```
### XML
```sh
jrnl --format xml
```
これはジャーナルをXML形式で出力します。XMLは一般的に使用されるデータ形式で、多くのプログラムやプログラミング言語でサポートされています。
**出力例**:
```xml
<?xml version="1.0" ?>
<journal>
<entries>
<entry date="2020-06-28T18:22:00" starred="">これは最初のサンプルエントリーです これは最初のサンプルエントリーの本文テキストです。</entry>
<entry date="2020-07-01T20:00:00" starred="">これは2番目のサンプルエントリーです これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります</entry>
<entry date="2020-07-02T09:00:00" starred="">これは3番目のサンプルエントリーです これは3番目のサンプルエントリーの本文テキストです。</entry>
</entries>
<tags>
<tag name="@tag">1</tag>
</tags>
</journal>
```
### YAML
```sh
jrnl --format yaml --file 'my_directory/'
```
これはジャーナルをYAML形式で出力します。YAMLは一般的に使用されるデータ形式で、多くのプログラムやプログラミング言語でサポートされています。[ディレクトリへのエクスポート](#ディレクトリへのエクスポート)は唯一サポートされているYAMLエクスポートオプションであり、各エントリーは別々のファイルに書き込まれます。
**ファイル例**:
```yaml
title: これは2番目のサンプルエントリーです
date: 2020-07-01 20:00
starred: False
tags: tag
これは2番目のサンプルエントリーの本文テキストですが、これには@tagがあります
```
## レポートフォーマット
フォーマットはジャーナルデータを使用して異なる方法で表示するため、レポートの作成にも使用できます。
### タグ
```sh
jrnl --format tags
# または
jrnl --tags
```
このフォーマットは、フォーマットがどのようにレポート作成に使用できるかの簡単な例です。ジャーナル内(または検索結果内)の各タグと、そのタグが出現するエントリーの数を表示し、頻度順にソートします。
出力例:
```sh
@one : 32
@two : 17
@three : 4
```
## オプション
### `--file`を使用したエクスポート
例: `jrnl --format json --file /some/path/to/a/file.txt`
デフォルトでは、`jrnl`はエントリーをターミナルに出力します。しかし、`--file`とファイル名を一緒に指定すると、ターミナルに出力されるはずだった同じ出力がファイルに書き込まれます。これは出力をファイルにパイプするのと同じです。
したがって、bashの場合、以下の2つの文は同等です
```sh
jrnl --format json --file myjournal.json
```
```sh
jrnl --format json > myjournal.json
```
#### ディレクトリへのエクスポート
`--file`引数がディレクトリの場合、jrnlは各エントリーを個別のファイルにエクスポートします
```sh
jrnl --format yaml --file my_entries/
```
`my_entries/`の内容は次のようになります:
```output
my_entries/
|- 2013_06_03_a-beautiful-day.yaml
|- 2013_06_07_dinner-with-gabriel.yaml
|- ...
```

37
docs/ja/installation.md Normal file
View file

@ -0,0 +1,37 @@
<!--
Copyright © 2012-2023 jrnl contributors
License: https://www.gnu.org/licenses/gpl-3.0.html
-->
# はじめに
## インストール
`jrnl`をインストールする最も簡単な方法は、[Python](https://www.python.org/) 3.10以上で[pipx](https://pipx.pypa.io/stable/installation/)を使用することです:
```sh
pipx install jrnl
```
!!! tip
`jrnl`のインストール時に`sudo`を使用しないでください。パスの問題が発生する可能性があります。
`jrnl`を初めて実行すると、ジャーナルファイルをどこに作成するか、そして暗号化するかどうかを尋ねられます。
## クイックスタート
新しいエントリーを作成するには、以下のように入力します
```text
jrnl yesterday: 病欠した。時間を使って掃除をし、本の執筆に4時間費やした。
```
そしてリターンキーを押します。`yesterday:`はタイムスタンプとして解釈されます。
最初の文章の区切り(`.?!:`)までがタイトルとして、残りが本文として解釈されます。ジャーナルファイルでは、結果は次のようになります:
```output
2012-03-29 09:00 病欠した。
時間を使って家の掃除をし、本の執筆に4時間費やした。
```
単に`jrnl`と入力すると、エントリーの作成を促されますが、外部エディタを使用するように*jrnl*を[設定する](advanced.md)こともできます。

68
docs/ja/journal-types.md Normal file
View file

@ -0,0 +1,68 @@
<!--
Copyright © 2012-2023 jrnl contributors
License: https://www.gnu.org/licenses/gpl-3.0.html
-->
# ジャーナルタイプ
`jrnl`はいくつかの異なる方法でジャーナルを保存できます:
- 単一のテキストファイル(暗号化されているかどうかにかかわらず)
- 日付ごとに整理された暗号化されていないテキストファイルを含むフォルダ構造
- DayOne Classicフォーマット
使用したいジャーナルタイプを指定する必要はありません。代わりに、
`jrnl`は[設定ファイル](advanced.md)でファイルを参照しているかフォルダを参照しているか、
そしてそれがフォルダの場合、DayOne Classicのコンテンツがそこに存在するかどうかに基づいて、
自動的にジャーナルタイプを検出します。
## 単一ファイル
単一ファイルフォーマットは最も柔軟で、[暗号化](encryption.md)することができます。
使用するには、ファイルへのパス、または既に存在しないパスを入力します。任意の拡張子を
使用できます。最初のエントリーを保存すると、`jrnl`は自動的にファイルを作成します。
## フォルダ
フォルダジャーナルフォーマットは、エントリーを年と月のサブフォルダ、そして各日の`.txt`ファイルに
整理します。1日に複数のエントリーがある場合、それらはすべて同じ`.txt`ファイルに表示されます。
ディレクトリツリー構造は以下の形式です:`YYYY/MM/DD.txt`。例えば、
`~/folderjournal`にあるフォルダジャーナルに2021年5月5日のエントリーがある場合、
次の場所に配置されます:`~/folderjournal/2021/05/05.txt`
!!! note
新しいフォルダジャーナルの作成は2つの方法で行えます
- `jrnl`を実行する前に、ジャーナルの名前でフォルダを作成します。そうしないと、`jrnl`を初めて実行したとき、単一ファイルジャーナルを作成していると見なされ、そのパスにファイルが作成されます。
- [設定ファイル](advanced.md)で新しいジャーナルを作成し、パスの最後に`/`POSIXシステムのLinuxやMacOSXの場合または`\`Windowsシステムの場合を付けます。フォルダが存在しない場合は自動的に作成されます。
!!! note
フォルダジャーナルは暗号化できません。
## Day One Classic
`jrnl`はDayOneで使用されていた元のデータフォーマットをサポートしています。これはフォルダ
ジャーナルフォーマットに似ていますが、以下の特徴のいずれかで識別されます:
- フォルダに`.dayone`拡張子がある
- フォルダに`entries`という名前のサブフォルダがある
これはDayOne 2.0フォーマットとは混同しないでください。[それは非常に異なります](https://help.dayoneapp.com/en/articles/1187337-day-one-classic-is-retired)。
!!! note
DayOne Classicジャーナルは暗号化できません。
## ジャーナルタイプの変更
ジャーナルの設定を単に変更してタイプを変更することはできません。代わりに、
希望するタイプの新しいジャーナルを定義し、
[パイピング](<https://en.wikipedia.org/wiki/Redirection_(computing)#Piping>)
を使用して古いジャーナルを`txt`としてエクスポートし、新しいジャーナルにインポートコマンドを実行します。
例えば、`projects`ジャーナルを`new`ジャーナルにインポートしたい場合、
`new`ジャーナルの設定を行った後、次のように実行します:
```
jrnl projects --format txt | jrnl new --import
```

44
docs/ja/overview.md Normal file
View file

@ -0,0 +1,44 @@
<!--
Copyright © 2012-2023 jrnl contributors
License: https://www.gnu.org/licenses/gpl-3.0.html
-->
# 概要
`jrnl`はコマンドライン用のシンプルな日記アプリケーションです。
簡単に日記エントリーの作成、検索、閲覧ができます。日記は人間が読める形式のプレーンテキストで保存され、[AES暗号化](http://en.wikipedia.org/wiki/Advanced_Encryption_Standard)を使用して暗号化することもできます。
`jrnl`には必要な機能のほとんどが備わっており、不要な機能はほとんどありません。
## プレーンテキスト
`jrnl`は各日記をプレーンテキストで保存します。`jrnl`ファイルは任意の場所に保存でき、共有フォルダに保存してデバイス間で同期することもできます。日記ファイルはコンパクトで数千のエントリーでも1MiB未満、現在そして近い将来にわたってほぼすべての電子デバイスで読むことができます。
## タグ
後でエントリーを見つけやすくするために、`jrnl`はインラインタグをサポートしています(デフォルトのタグ記号は`@`です)。タグを他の検索条件と組み合わせて、エントリーを検索およびフィルタリングできます。
## 複数の日記のサポート
`jrnl`は複数の日記の作成をサポートしており、各日記は単一のファイルまたは一連のファイルとして保存できます。エントリーは人間が読める形式で自動的にタイムスタンプが付けられ、複数のエントリーを一度に簡単に閲覧できます。`jrnl`は必要なエントリーを簡単に見つけ出し、読んだり編集したりすることができます。
## 外部エディタのサポート
`jrnl`はお気に入りのテキストエディタと上手く連携します。エディタで日記エントリーを書くことを好む場合や、より包括的なアプリケーションを必要とする変更を加えたい場合があるかもしれません。`jrnl`は特定のエントリーをフィルタリングし、選択した[外部エディタ](./external-editors.md)に渡すことができます。
## 暗号化
`jrnl`は[AES暗号化](http://en.wikipedia.org/wiki/Advanced_Encryption_Standard)をサポートしています。詳細については[暗号化ページ](./encryption.md)をご覧ください。
## インポートとエクスポート
`jrnl`は他のソースからエントリーを簡単にインポートできます。既存のエントリーは様々な[フォーマット](./formats.md)でエクスポートできます。
## マルチプラットフォームサポート
`jrnl`はほとんどのオペレーティングシステムと互換性があります。様々なパッケージマネージャーを使用して[ダウンロード](./installation.md)するか、ソースからビルドすることができます。
## オープンソース
`jrnl`は[Python](https://www.python.org)で書かれており、オープンソースソフトウェア愛好家の[フレンドリーなコミュニティ](https://github.com/jrnl-org/jrnl)によって維持されています。

View file

@ -0,0 +1,223 @@
<!--
Copyright © 2012-2023 jrnl contributors
License: https://www.gnu.org/licenses/gpl-3.0.html
-->
# プライバシーとセキュリティ
`jrnl`はプライバシーとセキュリティを念頭に置いて設計されていますが、他のプログラムと同様に、
注意すべきいくつかの制限があります。
## パスワードの強度
`jrnl`はパスワードの強度要件を強制しません。短いまたは一般的に使用されるパスワードは、
基本的なセキュリティスキルを持つ人が暗号化された`jrnl`ファイルにアクセスするのを
簡単に回避できてしまいます。
## 合理的否認
ジャーナルの内容を暗号化の層の背後に隠すことはできますが、誰かがあなたの設定ファイルに
アクセスできる場合、ジャーナルの存在、そのジャーナルファイルの場所、最後に編集した
時期を知ることができます。十分な力の不均衡がある場合、誰かが非技術的な手段を通じて
あなたに暗号化を解除させることができるかもしれません。
## スパイ行為
`jrnl`は開かれていない間のジャーナルエントリーへの不正アクセスから保護できますが、
安全でないコンピューター/場所からは保護できません。例えば:
- 誰かがキーロガーをインストールし、ジャーナルに入力する内容を追跡する。
- 誰かがエントリーを書いている間にあなたの画面を見ている。
- 誰かが`jrnl`にバックドアをインストールしたり、ジャーナルを毒して
エントリーを明らかにするよう仕向けたりする。
## 保存されたパスワード
暗号化されたジャーナルを作成する際、「パスワードをキーチェーンに保存するか」と
尋ねられます。このキーチェーンは[Python keyringライブラリ](https://pypi.org/project/keyring/)を
使用してアクセスされ、オペレーティングシステムによって動作が異なります。
Windowsでは、キーチェーンはWindows Credential ManagerWCMで、ロックできず、
あなたのユーザー名で実行されている他のアプリケーションからアクセスできます。
これが心配な場合は、パスワードを保存しないほうがよいかもしれません。
## シェル履歴
コマンドラインからエントリーを入力できるため、コマンドライン操作をログに記録する
ツールは潜在的なセキュリティリスクとなります。以下に、様々なシェルでこの問題に
対処する方法を示します。
### bash
`~/.bashrc`ファイルに以下の行を追加することで、jrnlの履歴ログを無効にできます
```sh
HISTIGNORE="$HISTIGNORE:jrnl *"
```
`bash`履歴から既存の`jrnl`コマンドを削除するには、bashの履歴ファイルから
単純に削除します。このファイルのデフォルトの場所は`~/.bash_history`ですが、
必要に応じて`echo "$HISTFILE"`を実行して見つけることができます。また、
`history -c`を実行して履歴からすべてのコマンドを削除することもできます。
### zsh
`~/.zshrc`ファイルに以下を追加することで、jrnlの履歴ログを無効にできます
```sh
setopt HIST_IGNORE_SPACE
alias jrnl=" jrnl"
```
`zsh`履歴から既存の`jrnl`コマンドを削除するには、zshの履歴ファイルから
単純に削除します。このファイルのデフォルトの場所は`~/.zsh_history`ですが、
必要に応じて`echo "$HISTFILE"`を実行して見つけることができます。また、
`history -c`を実行して履歴からすべてのコマンドを削除することもできます。
### fish
デフォルトでは、`fish`はスペースで始まるコマンドをログに記録しません。
常にjrnlの前にスペースを付けて実行したい場合は、`~/.config/fish/config.fish`
ファイルに以下を追加できます:
```sh
abbr --add jrnl " jrnl"
```
`fish`履歴から既存のjrnlコマンドを削除するには、`history delete --prefix 'jrnl '`を実行します。
### Windowsコマンドプロンプト
Windowsは履歴をディスクにログ記録しませんが、コマンドプロンプトセッションには
保持されます。ジャーナリング後、コマンドプロンプトを閉じるか`Alt`+`F7`
押して履歴をクリアしてください。
## エディターからjrnlへの転送中のファイル
エントリーの作成や編集時、`jrnl`はエディターがジャーナルにアクセスできるよう
ディスク上に暗号化されていない一時ファイルを使用します。エディターを閉じた後、
`jrnl`はこの一時ファイルを削除します。
つまり、ジャーナルエントリーを保存したがまだエディターを閉じていない場合、
暗号化されていない一時ファイルがディスク上に残ります。この間にコンピューターが
シャットダウンしたり、`jrnl`プロセスが予期せず終了したりすると、暗号化されて
いない一時ファイルがディスク上に残ります。この問題を軽減するには、エディターを
閉じる直前にのみ保存するようにしてください。また、一時フォルダからこれらの
ファイルを手動で削除することもできます。デフォルトでは、これらは`jrnl*.jrnl`
という名前ですが、[テンプレート](reference-config-file.md#template)を使用して
いる場合は、テンプレートと同じ拡張子になります。
## エディター履歴
一部のエディターは、将来の使用のためにディスク上に使用履歴を保存します。
これは、最近の検索パターンやエディターコマンドを通じて機密情報が漏洩する
可能性があるという意味でセキュリティリスクとなる可能性があります。
### Visual Studio Code
Visual Studio Codeは、後でコンテンツを復元またはレビューできるように、
保存されたファイルの内容を保存します。すべてのファイルに対してこの機能を
無効にするには、[設定エディター](https://code.visualstudio.com/docs/getstarted/settings#_settings-editor)で
`workbench.localHistory.enabled`設定のチェックを外します。
または、`workbench.localHistory.exclude`設定で[パターン](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options)を
設定することで、特定のファイルに対してこの機能を無効にできます。`jrnl`によって
生成される暗号化されていない一時ファイルを除外するには、[設定エディター](https://code.visualstudio.com/docs/getstarted/settings#_settings-editor)で
`workbench.localHistory.exclude`設定に`**/jrnl*.jrnl`パターンを設定できます
[テンプレート](reference-config-file.md#template)を使用していない場合)。
!!! note
Windowsでは、履歴の場所は通常`%APPDATA%\Code\User\History`にあります。
Visual Studio Codeは、開いているすべての未保存ファイルのコピーも作成します。
これらのコピーはバックアップ場所に保存され、ファイルを保存すると自動的に
クリーンアップされます。ただし、ファイルを保存する前にコンピューターが
シャットダウンしたり、Visual Studio Codeプロセスが予期せず停止したりすると、
暗号化されていない一時ファイルがディスク上に残る可能性があります。これらの
ファイルはバックアップ場所から手動で削除できます。
!!! note
Windowsでは、バックアップ場所は通常`%APPDATA%\Code\Backups`にあります。
### Vim
Vimは`~/.viminfo`にある所謂Viminfoファイルに進捗データを保存します。
これにはコマンドライン履歴、検索文字列履歴、検索/置換パターン、レジスタの
内容など、あらゆる種類のユーザーデータが含まれています。また、予期せぬ
アプリケーションの終了後に開いていたファイルを復元できるよう、Vimはスワップ
ファイルを使用します。
これらのオプションや他の情報漏洩の可能性のある機能は、Jrnl設定の`editor`キーを
以下のように設定することで無効にできます:
```yaml
editor: "vim -c 'set viminfo= noswapfile noundofile nobackup nowritebackup noshelltemp history=0 nomodeline secure'"
```
すべてのプラグインとカスタム設定を無効にし、デフォルト設定でVimを起動するには、
コマンドラインで`-u NONE`を渡すこともできます。これにより、悪意のあるプラグインや
その他の検出が困難な情報漏洩が確実に排除されます。ただし、これによりエディター
の使用感が大幅に低下します。
代わりに、Jrnlファイルが編集されているときに自動的に検出するようVimに設定するには、
autocommandを使用できます。これを`~/.vimrc`に配置します:
```vim
autocmd BufNewFile,BufReadPre *.jrnl setlocal viminfo= noswapfile noundofile nobackup nowritebackup noshelltemp history=0 nomodeline secure
```
!!! note
[テンプレート](reference-config-file.md#template)を使用している場合は、
`.jrnl`の代わりにテンプレートのファイル拡張子を使用する必要があります。
言及したオプションの詳細については、Vimで`:h <option>`を参照してください。
### Neovim
Neovimは主にVimと互換性があるよう努めており、そのためVimと同様の機能を
持っています。Neovimの1つの違いは、Viminfoファイルの代わりにShaDa
"shared data")ファイルと呼ばれるものが`~/.local/state/nvim`
Neovim v0.8.0以前は`~/.local/share/nvim`にあることです。ShaDaファイルは
Vimと同じ方法で無効にできます。
```yaml
editor: "nvim -c 'set shada= noswapfile noundofile nobackup nowritebackup noshelltemp history=0 nomodeline secure'"
```
ここでも`-u NONE`を渡して、デフォルト設定でセッションを開始できます。
上記のVimと同様に、Vimscriptでautocommandを作成できます
```vim
autocmd BufNewFile,BufReadPre *.jrnl setlocal shada= noswapfile noundofile nobackup nowritebackup noshelltemp history=0 nomodeline secure
```
または、同じことをLuaで
```lua
vim.api.nvim_create_autocmd( {"BufNewFile","BufReadPre" }, {
group = vim.api.nvim_create_augroup("PrivateJrnl", {}),
pattern = "*.jrnl",
callback = function()
vim.o.shada = ""
vim.o.swapfile = false
vim.o.undofile = false
vim.o.backup = false
vim.o.writebackup = false
vim.o.shelltemp = false
vim.o.history = 0
vim.o.modeline = false
vim.o.secure = true
end,
})
```
!!! note
[テンプレート](reference-config-file.md#template)を使用している場合は、
`.jrnl`の代わりにテンプレートのファイル拡張子を使用する必要があります。
言及したオプションの詳細については、Neovimで`:h <option>`を参照してください。
## 他のリスクに気づいた場合
[GitHubで問題を提出](https://github.com/jrnl-org/jrnl/issues)して、メンテナーに知らせてください。

View file

@ -0,0 +1,162 @@
<!--
Copyright © 2012-2023 jrnl contributors
License: https://www.gnu.org/licenses/gpl-3.0.html
-->
# コマンドライン参照
## 概要
```
使用法: jrnl [--debug] [--help] [--version] [--list] [--encrypt] [--decrypt]
[--import] [-on DATE] [-today-in-history] [-month DATE]
[-day DATE] [-year DATE] [-from DATE] [-to DATE] [-contains TEXT]
[-and] [-starred] [-n [NUMBER]] [-not [TAG]] [--edit] [--delete]
[--format TYPE] [--tags] [--short]
[--config-override CONFIG_KEY CONFIG_VALUE]
[--config-file CONFIG_FILE_PATH]
[[...]]
```
## スタンドアロンコマンド
これらのコマンドは完了後に終了します。一度に1つだけ実行できます。
### --help
ヘルプメッセージを表示します。
### --version
バージョンとライセンス情報を表示します。
### --list
設定ファイルの場所、設定されているすべてのジャーナル、およびそれらの場所を一覧表示します。
### --encrypt
ジャーナルを暗号化します。詳細は[暗号化](encryption.md)を参照してください。
### --decrypt
ジャーナルを復号化します。詳細は[暗号化](encryption.md)を参照してください。
### --import
他のジャーナルからエントリーをインポートします。同じ内容とタイムスタンプを持つエントリーがある場合、重複は排除されます。
オプションパラメータ:
```sh
--file FILENAME
```
インポートするファイルを指定します。指定されない場合、`jrnl`はSTDINをデータソースとして使用します。
```sh
--format TYPE
```
インポートされるファイルのフォーマットを指定します。デフォルトはjrnlが使用するのと同じデータ保存方法です。詳細は[フォーマット](formats.md)を参照してください。
## 新しいエントリーの書き込み
[基本的な使用方法](usage.md)を参照してください。
## 検索
ジャーナルからエントリーを見つけるには、以下のフィルターの任意の組み合わせを使用します。
すべてのフィルターに一致するエントリーのみが表示されます。
日付を指定する際は、新しいエントリーで使用するのと同じ種類の日付を使用できます。
例えば、`yesterday``today``Tuesday`、または`2021-08-01`などです。
| 検索引数 | 説明 |
| ----------------- | --------------------------------------------------------------------------------------------------------------- |
| -on DATE | この日付のエントリーを表示 |
| -today-in-history | 年をまたいで今日の日付のエントリーを表示 |
| -month DATE | 任意の年のこの月のエントリーを表示 |
| -day DATE | 任意の月のこの日のエントリーを表示 |
| -year DATE | 特定の年のエントリーを表示 |
| -from DATE | この日付以降(この日を含む)のエントリーを表示 |
| -to DATE | この日付以前(この日を含む)のエントリーを表示(別名: -until |
| -contains TEXT | 特定のテキストを含むエントリーを表示(スペースを含むテキストは引用符で囲む) |
| -and | すべての条件に一致するエントリーのみを表示、"x AND y"と言うのと同じ(デフォルト: OR |
| -starred | スター付きのエントリーのみを表示(\*でマークされたもの) |
| -tagged | タグ付きのエントリーのみを表示([設定されたtagsymbols](reference-config-file.md#tagsymbols)でマークされたもの) |
| -n [NUMBER] | 最大NUMBER個のエントリーを表示注: '-n 3'と'-3'は同じ効果) |
| -not [TAG] | このタグを持つエントリーを除外 |
| -not -starred | スター付きのエントリーを除外 |
| -not -tagged | タグ付きのエントリーを除外 |
## 検索オプション
これらは検索で選択されたエントリーでさまざまなタスクを実行するのに役立ちます。
単独で使用した場合(検索なし)、ジャーナル全体に対して動作します。
### --edit
選択されたエントリーを設定されたエディタで開きます。設定ファイルに`editor`キーが
設定されていない場合は失敗します。
編集を開始すると、エディタでテキストを修正することで複数のエントリーを追加したり
削除したりできます。エディタを閉じると、jrnlは編集していた一時ファイルを読み取り、
ジャーナルに変更を加えます。
### --delete
選択されたエントリーを対話的に削除します。各エントリーの削除を確認するよう求められます。
### --change-time DATE
選択されたエントリーの時間を指定された日付に、または日付が指定されていない場合は
現在の時刻に対話的に変更します。各エントリーの確認を求められますが、単一のエントリーに
対して`--edit`と一緒に使用している場合は除きます。
### --format TYPE
選択されたエントリーを別のフォーマットで表示します。[フォーマット](formats.md)を参照してください。
#### オプションパラメータ
```sh
--file FILENAME
```
出力をSTDOUTの代わりにファイルに書き込みます。ほとんどのシェルでは、
`>`を使用して同じ効果を得ることができます。
### --tags
'--format tags'のエイリアスです。検索されたエントリー内のすべてのタグとその出現回数の
リストを返します。タグが見つからない場合、`jrnl`はその旨のメッセージを出力します。
### --short
検索されたエントリーの日付とタイトルのみを表示します。
## 設定引数
### --config-override CONFIG_KEY CONFIG_VALUE
このコマンド呼び出しのみ、設定されたキーと値のペアをCONFIG_KV_PAIRで上書きします。
トップレベルにないconfig keyにアクセスするには、キーをドットで区切ります。
例えば、`colors`キー内の`title`キーにアクセスするには`colors.title`を使用します。
例については[高度な使用方法](./advanced.md)を参照してください。
### --config-file CONFIG_FILE_PATH
このコマンド呼び出しのみ、CONFIG_FILE_PATHにある設定ファイルを使用します。
例については[高度な使用方法](./advanced.md)を参照してください。
## その他の引数
### --debug
`jrnl`の実行中にトラブルシューティングに役立つ情報を出力します。
### --diagnostic
[問題を報告する](https://github.com/jrnl-org/jrnl/issues)際に役立つ診断情報を出力します。

View file

@ -0,0 +1,127 @@
<!--
Copyright © 2012-2023 jrnl contributors
License: https://www.gnu.org/licenses/gpl-3.0.html
-->
# 設定ファイル参照
`jrnl`はYAML形式の設定ファイルに情報を保存します。
!!! note
編集前にジャーナルと設定ファイルをバックアップしてください。設定ファイルの
変更はジャーナルに破壊的な影響を与える可能性があります!
## 設定ファイルの場所
以下のコマンドを実行すると、設定ファイルの場所を確認できます:
`jrnl --list`
デフォルトでは、設定ファイルは`~/.config/jrnl/jrnl.yaml`にあります。
`XDG_CONFIG_HOME`変数が設定されている場合、設定ファイルは
`$XDG_CONFIG_HOME/jrnl/jrnl.yaml`として保存されます。
!!! note
Windowsでは、設定ファイルは通常
`%USERPROFILE%\.config\jrnl\jrnl.yaml`にあります。
## 設定フォーマット
設定ファイルは[YAML](https://yaml.org/)形式で、テキストエディタで編集できます。
## 設定キー
### journals
`jrnl`が使用する各ジャーナルを記述します。このキーの後の各インデントされたキーは
ジャーナルの名前です。
ジャーナルキーに値がある場合、その値はジャーナルへのパスとして解釈されます。
そうでない場合、ジャーナルはパスを指定するための追加のインデントされた
`journal`キーが必要です。
以下のすべてのキーは、`journal`キーと同じレベルで各ジャーナルに対して指定できます。
キーがトップレベルのキーと競合する場合、ジャーナル固有のキーが代わりに使用されます。
### editor
設定されている場合、このコマンドを実行して外部エディタを起動し、
エントリーの作成と編集を行います。一時ファイルへのパスがその後に
渡され、エディタが制御を`jrnl`に戻すと、`jrnl`がファイルを処理します。
一部のエディタは`jrnl`で動作するためにブロッキングプロセスである必要があるため、
特別なオプションが必要です。詳細は[外部エディタ](external-editors.md)を参照してください。
### encrypt
`true`の場合、AESを使用してジャーナルを暗号化します。既にデータがある
ジャーナルでは、この値を変更しないでください。
### template
新しいエントリーのテンプレートとして使用するテキストファイルへのパス。`editor`フィールドが
設定されている場合のみ機能します。テンプレートを使用する場合、エディタの
[一時ファイル](privacy-and-security.md#files-in-transit-from-editor-to-jrnl)は
テンプレートと同じ拡張子を持ちます。
### tagsymbols
タグとして解釈されるシンボル。
!!! note
タグに`#`文字を使用するのが直感的に思えますが、欠点があります:ほとんどの
シェルでは、これはコメントを開始するメタ文字として解釈されます。つまり、
以下のように入力すると:
> `jrnl Implemented endless scrolling on the #frontend of our website.`
bashは`#`以降をすべて切り捨てて`jrnl`に渡します。これを避けるには、
入力を次のように引用符で囲みます:
> `jrnl "Implemented endless scrolling on the #frontend of our website."`
または、組み込みのプロンプトや外部エディタを使用してエントリーを
作成してください。
### default_hour と default_minute
日付を指定しても具体的な時間を指定しない場合(例:`last thursday`)、エントリーはこの時間に作成されます。
### timeformat
ジャーナルに保存されるタイムスタンプの形式を定義します。
参照は[pythonドキュメント](http://docs.python.org/library/time.html#time.strftime)を確認してください。
既存のジャーナルでは変更しないでください。データ損失につながる可能性があります。
!!! note
`jrnl``%z`または`%Z`タイムゾーン識別子をサポートしていません。
### highlight
`true`の場合、タグはシアン色で強調表示されます。
### linewrap
出力の幅を制御します。長い行を折り返したくない場合は`false`に設定します。
`jrnl`に自動的に端末幅を決定させる場合は`auto`に設定します。
### colors
ジャーナルエントリーの表示に使用される色を制御する辞書です。
4つのサブキーがあります`body``date``tags``title`
現在有効な値は:`BLACK``RED``GREEN``YELLOW``BLUE`
`MAGENTA``CYAN``WHITE``NONE`です。
色付けには`colorama.Fore`が使用され、[ドキュメントはこちら](https://github.com/tartley/colorama#colored-output)で確認できます。
色付き出力を無効にするには、値を`NONE`に設定します。
### display_format
デフォルトで使用するフォーマッタを指定します。[フォーマット](formats.md)を参照してください。
### version
`jrnl`は自動的にこのフィールドを実行中のバージョンに更新します。
このフィールドを手動で変更する必要はありません。

214
docs/ja/tips-and-tricks.md Normal file
View file

@ -0,0 +1,214 @@
<!--
Copyright © 2012-2023 jrnl contributors
License: https://www.gnu.org/licenses/gpl-3.0.html
-->
# ヒントとコツ
このページでは、他のツールや外部エディタと組み合わせて
jrnlを使用するためのヒントとコツを紹介します。
## Co-occurrence of tags
ルームメイトの AlbertoとMeloを同じエントリーでどれくらい一緒に言及したか調べたい場合、
次のコマンドを使います。
```sh
jrnl @alberto --tags | grep @melo
```
これにより、`@melo: 9`と言った結果が表示されます。これは`@alberto`
`@melo`の両方がタグ付けされたエントリーが9件あることを意味しています。
仕組みを説明すると、まず`jrnl @alberto``@alberto`タグの有るエントリーだけを
抽出します。次に `--tags`オプションを使うと、その抽出されたエントリー内で
各タグがどれくらい使われているかが表示されます。最後に、`grep``@melo`
含み行だけを示しています。
## フィルターの組み合わせ
次のようにコマンドを使うことが出来ます。
```sh
jrnl @fixed -starred -n 10 -to "jan 2013" --short
```
これで2013年1月1日以前に`@fixed`タグが付けられた最近のお気に入りの10件の
エントリーの要約を取得できます。
## 統計
昨年どれくらい書いたか知りたい場合は?
```sh
jrnl -from "jan 1 2013" -to "dec 31 2013" | wc -w
```
このコマンドを実行すると、2013年に書いた単語数が表示されます。
エントリーの平均の長さを知りたい場合は?
```sh
expr $(jrnl --export text | wc -w) / $(jrnl --short | wc -l)
```
このコマンドは、まずジャーナル全体の単語数を取得し、それをエントリーの数で
割ります(`jrnl --short`は各エントリーごとに1行だけ出力するため、この方法が機能
します)。
## 古いファイルのインポート
ファイルを `jrnl` のエントリとしてインポートしたい場合は、
単に `jrnl < entry.ext` と実行するだけです。
しかし、ファイルの最終更新日時を `jrnl` のエントリの日付として設定したい場合はどうでしょうか?
次のコマンドを試してみてください。
```sh
echo `stat -f %Sm -t '%d %b %Y at %H:%M: ' entry.txt` `cat entry.txt` | jrnl
```
このコマンドの前半部分は `entry.txt` の最終更新日時をフォーマットし、ファイルの内容と結合してからそれを `jrnl` にパイプします。これを頻繁に行う場合は、`.bashrc``.bash_profile` に関数を作成することを検討してください。
```sh
jrnlimport () {
echo `stat -f %Sm -t '%d %b %Y at %H:%M: ' $1` `cat $1` | jrnl
}
```
## テンプレートの使用
!!! 注意
テンプレートを使用するには、[外部エディタ](./advanced.md) の設定が必要です。
テンプレートは、構造化されたジャーナルを作成するために使うテキストファイルです。テンプレートを使用する方法は3つあります。
### 1. `--template` コマンドライン引数とデフォルトの `$XDG_DATA_HOME/jrnl/templates` ディレクトリを使用
`$XDG_DATA_HOME/jrnl/templates` は、テンプレートを保存するためにデフォルトで作成されます!このディレクトリにテンプレート(例えば `default.md`)を作成し、`--template FILE_IN_DIR` として指定します。
```sh
jrnl --template default.md
```
### 2. `--template` コマンドライン引数とローカル/絶対パスを使用
任意のテキストでテンプレートファイルを作成できます。例は以下の通りです:
```sh
# /tmp/template.txt
私の個人ジャーナル
タイトル:
本文:
```
その後、テンプレートファイルの絶対パスまたは相対パスを引数として指定すると、外部エディタが開き、テンプレートが事前に入力された状態になります。
```sh
jrnl --template /tmp/template.md
```
### 3. `jrnl.yaml` にデフォルトのテンプレートファイルを設定
デフォルトでテンプレートを使用したい場合は、[設定ファイル](./reference-config-file.md) 内の `template` の値を `false` からダブルクオーテーションで囲まれたテンプレートファイルのパスに変更します。
```sh
...
template: "/path/to/template.txt"
...
```
!!! ヒント
ジャーナルエントリを確認したり、保存されたエントリを確認したい場合は、以下のコマンドを使用します:`jrnl -n 1` (他のオプションについては[フォーマット](./formats.md) を確認してください)。
```sh
jrnl -n 1
```
## シェルのリロード時にプロンプトを表示
シェルをリフレッシュするたびにプロンプトを表示させたい場合は、以下を `.bash_profile` に追加できます:
```sh
function log_question()
{
echo $1
read
jrnl today: ${1}. $REPLY
}
log_question '今日達成したことは何ですか?'
log_question 'どんな進展がありましたか?'
```
シェルがリロードされるたびに、上記の質問に回答するように促されます。各回答は、`jrnl.yaml``default_hour` および `default_minute` にリストされている時刻で別々のジャーナルエントリとして記録されます。
## ランダムエントリの表示
ランダムに1つのタイトルを選択し、エントリ全体を表示することができます。タイムスタンプのフォーマットに合わせて `cut` の呼び出しを調整します。日時要素の間にスペースがあるタイムスタンプでは、以下のようにフィールド1と2を選択します。スペースがないタイムスタンプの場合は、フィールド1のみを選択します。
```sh
jrnl -on "$(jrnl --short | shuf -n 1 | cut -d' ' -f1,2)"
```
## 高速記録用の端末を起動
`jrnl` の stdin プロンプトを持つ端末を起動し、すぐに入力を開始できるようにすることができます。
```bash
jrnl --config-override editor ""
```
これをキーボードショートカットに割り当てます。
`Super+Alt+J``jrnl` プロンプトを持つ端末を起動するようにマップする
- **xbindkeys**
あなたの `.xbindkeysrc` に以下を追加します
```ini
Mod4+Mod1+j
alacritty -t floating-jrnl -e jrnl --config-override editor "",
```
- **I3 WM** `jrnl` プロンプトを持つフローティング端末を起動します
```ini
bindsym Mod4+Mod1+j exec --no-startup-id alacritty -t floating-jrnl -e jrnl --config-override editor ""
for_window[title="floating *"] floating enable
```
## CLI でフォーマットされた Markdown を視覚化
`jrnl` はデフォルトでジャーナルエントリをMarkdown形式で出力できます。これを視覚化するには、[mdless](https://github.com/ttscoff/mdless) にパイプします。`mdless` は、Markdownテキストをフォーマットおよびシンタックスハイライト付きでCLIで表示できる、[less](<https://en.wikipedia.org/wiki/Less_(Unix)>) のようなツールです。この機能は、パイプをサポートする任意のシェルで使用できます。
Markdown出力を `mdless` で視覚化する最も簡単な方法は次の通りです:
```sh
jrnl --export md | mdless
```
これにより、画面全体にMarkdown出力がレンダリングされます。
幸いなことに、`mdless` には画面幅を調整するための `-w` オプションがあります。以下のように使用します:
```sh
jrnl --export md | mdless -w 70
```
Markdownをデフォルトの表示形式にしたい場合は、設定ファイルで次のように定義できます
```yaml
display_format: md
# または
display_format: markdown
```
`jrnl` がエントリをMarkdown形式で出力する方法についての詳細は、[フォーマット](./formats.md) セクションを参照してください。
## バッファの末尾にジャンプvi使用時
viを使用して編集する際に、エントリの最後の行にジャンプさせるには、設定ファイルで次のように設定します
```yaml
editor: vi + -c "call cursor('.',strwidth(getline('.')))"
```

254
docs/ja/usage.md Normal file
View file

@ -0,0 +1,254 @@
<!--
Copyright © 2012-2023 jrnl contributors
License: https://www.gnu.org/licenses/gpl-3.0.html
-->
# 基本的な使い方
`jrnl`には2つのモードがあります**作成モード**と**閲覧モード**です。ダッシュ(`-`
やダブルダッシュ(`--`)で始まる引数を入力しない場合は作成モードになり、
コマンドラインでエントリーを書くことができます。
私たちは意図的にコマンドライン引数の慣例を破っています_一重のダッシュ_`-`)で
始まるすべての引数は、閲覧前にジャーナルを*フィルタリング*します。フィルタ引数は
任意に組み合わせることができます。_二重のダッシュ_`--`)で始まる引数は、
ジャーナルの表示やエクスポートの方法を*制御*します。制御引数は相互に排他的です
(つまり、一度に一つの方法でのみジャーナルの表示やエクスポートを指定できます)。
コマンドのリストを表示するには、`jrnl --help`と入力してください。
## エントリーの作成
作成モードは、引数なしで`jrnl`を起動する(外部エディタが起動します)か、
コマンドラインに直接エントリーを書くことで入ります:
```text
jrnl today at 3am: バーでスティーブ・ブシェミに会った!とても良い人だった。
```
!!! note
ほとんどのシェルには`#``*`などの予約文字があります。これらの文字や、
バランスの取れていない単一または二重引用符、括弧などは、おそらく問題を
引き起こします。予約文字は`\`を使ってエスケープできますが、長文の
書き込みには理想的ではありません。解決策:まず`jrnl`と入力してリターンキーを
押します。その後、ジャーナルエントリーのテキストを入力できます。
または、[外部エディタを使用する](./advanced.md)こともできます。
ファイルから直接エントリーをインポートすることもできます:
```sh
jrnl < my_entry.txt
```
### 日付と時間の指定
日付と時間を指定しない場合(例:`jrnl 弟への手紙を書き終えた`)、`jrnl`は現在の日付と時間を使用してエントリーを作成します。過去のエントリーの場合、タイムスタンプを使用して`jrnl`にエントリーの配置場所を指示できます。タイムスタンプは様々な形式で入力できます。以下は機能する例です:
- at 6am
- yesterday
- last monday
- sunday at noon
- 2 march 2012
- 7 apr
- 5/20/1998 at 23:42
- 2020-05-22T15:55-04:00
タイムスタンプを使用しない場合、`jrnl`は現在の時刻を使用してエントリーを作成します。
日付のみを使用する場合(時刻なし)、`jrnl`は[設定ファイル](./reference-config-file.md#default_hour-and-default_minute)で
指定されたデフォルトの時刻を使用します。
内部的には、`jrnl`はエントリーを年代順に並べ替えます。
### タグの使用
`jrnl`はタグをサポートしています。デフォルトのタグシンボルは`@`です(主に`#`
予約文字であるため)。[設定ファイル](./reference-config-file.md#tagsymbols)で
独自のタグシンボルを指定できます。タグを使用するには、目的のタグの前にシンボルを
付けます:
```sh
jrnl @ビーチで@トムと@アンナと素晴らしい一日を過ごした
```
エントリーにタグを付ける際に大文字を使用できますが、タグによる検索は
大文字小文字を区別しません。
1つのエントリーで使用できるタグの数に制限はありません。
### エントリーにスターを付ける
エントリーをお気に入りとしてマークするには、単にアスタリスク(`*`)を使って
「スター」を付けます:
```sh
jrnl last sunday *: 人生最高の日。
```
日付を追加したくない場合(つまり、日付を*now*として入力したい場合)、
以下のオプションは同等です:
- `jrnl *: 人生最高の日。`
- `jrnl *人生最高の日。`
- `jrnl 人生最高の日。*`
!!! note
アスタリスク(`*`)の前後に空白がないことを確認してください。
`jrnl 人生最高の日! *`は機能しません。なぜなら、`*`文字はほとんどの
シェルで特別な意味を持つからです。
## エントリーの閲覧と検索
`jrnl`は様々な方法でエントリーを表示できます。
すべてのエントリーを表示するには、次のように入力します:
```sh
jrnl -to today
```
`jrnl`はいくつかのフィルタリングコマンドを提供しており、一重のダッシュ(`-`)で
始まり、より具体的な範囲のエントリーを見つけることができます。例えば、
```sh
jrnl -n 10
```
は最新の10件のエントリーを表示します。`jrnl -10`はさらに簡潔で、同じように機能します。
昨年の初めから今年の3月末までに書いたすべてのエントリーを見たい場合は、
次のように入力します:
```sh
jrnl -from "last year" -to march
```
複数の単語を使用するフィルタ条件は、引用符(`""`)で囲む必要があります。
特定の日のエントリーを見るには、`-on`を使用します:
```sh
jrnl -on yesterday
```
### テキスト検索
`-contains`コマンドは、その後に入力したテキストを含むすべてのエントリーを表示します。
これは、エントリーを検索する際に、書いた時にタグを付けたかどうか覚えていない場合に
役立つかもしれません。
ある単語をよく使っていることに気づき、過去のすべてのエントリーでそれをタグに
変えたいと思うかもしれません。
```sh
jrnl -contains "犬" --edit
```
外部エディタを開き、"犬"という単語のすべてのインスタンスにタグシンボル
(デフォルトでは`@`)を追加できます。
### タグによるフィルタリング
ジャーナルエントリーをタグでフィルタリングできます。例えば、
```sh
jrnl @ピンキー @世界征服
```
`@ピンキー`または`@世界征服`のいずれかが出現するすべてのエントリーを表示します。
タグフィルタは他のフィルタと組み合わせることができます:
```sh
jrnl -n 5 @ピンキー -and @世界征服
```
`@ピンキー`_と_`@世界征服`の*両方*を含む最新の5つのエントリーを表示します。
[設定ファイル](./reference-config-file.md#tagsymbols)でタグに使用したいシンボルを
変更できます。
!!! note
`jrnl @ピンキー @世界征服`と入力すると、両方のタグが存在するエントリーが
表示されます。これは、コマンドライン引数が与えられていないにもかかわらず、
すべての入力文字列がタグのように見えるためです。`jrnl`は、タグのみで
構成される新しいエントリーを作成するのではなく、タグでフィルタリング
したいと想定します。
ジャーナル内のすべてのタグのリストを表示するには、次のように入力します:
```sh
jrnl --tags
```
### スター付きエントリーの表示
お気に入り(スター付き)のエントリーのみを表示するには、次のように入力します:
```sh
jrnl -starred
```
## エントリーの編集
エントリーを書いた後で編集することができます。これは特に、ジャーナルファイルが
暗号化されている場合に便利です。この機能を使用するには、[設定ファイル](./reference-config-file.md#editor)で
外部エディタを設定する必要があります。また、特定の検索条件に一致するエントリー
のみを編集することもできます。例えば、
```sh
jrnl -to 1950 @テキサス -and @歴史 --edit
```
は外部エディタを開き、1950年以前に書かれた`@テキサス``@歴史`のタグが付いた
すべてのエントリーを表示します。変更を加えてファイルを保存して閉じると、
それらのエントリーのみが変更されます(該当する場合は暗号化されます)。
複数のジャーナルを使用している場合、特定のジャーナルから特定のエントリーを
簡単に編集できます。フィルタ文字列の前にジャーナルの名前を付けるだけです。
例えば、
```sh
jrnl work -n 1 --edit
```
は'work'ジャーナルの最新のエントリーを外部エディタで開きます。
## エントリーの削除
`--delete`コマンドは、エントリーを削除するための対話型インターフェースを開きます。
ジャーナル内の各エントリーの日付とタイトルが一つずつ表示され、各エントリーを
保持するか削除するかを選択できます。
フィルタが指定されていない場合、`jrnl`はジャーナル全体の各エントリーを一つずつ
保持するか削除するかを尋ねます。ジャーナルに多くのエントリーがある場合は、
`--delete`コマンドを渡す前にエントリーをフィルタリングする方が効率的かもしれません。
例を挙げます。過去12年間のブログ投稿をインポートしたジャーナルがあるとします。
`@本`タグを頻繁に使用しており、何らかの理由で、そのタグを使用したエントリーの
一部全部ではないを削除したいのですが、2004年以前に書いたものだけです。
どのエントリーを保持したいかわからず、決定する前に確認したいとします。
次のように入力するかもしれません:
```sh
jrnl -to 2004 @本 --delete
```
`jrnl`は関連するエントリーのみを表示し、削除したいものを選択できます。
2004年以前に書いた`@本`を含むすべてのエントリーを削除したい場合もあるでしょう。
数十または数百ある場合、最も簡単な方法は外部エディタを使用することです。
削除したいエントリーをエディタで開きます...
```sh
jrnl -to 2004 @本 --edit
```
...すべてを選択し、削除して保存して閉じると、それらのエントリーすべてが
ジャーナルから削除されます。
## ジャーナルのリスト表示
すべてのジャーナルをリスト表示するには:
```sh
jrnl --list
```
表示されるジャーナルは、`jrnl`の[設定ファイル](./reference-config-file.md#journals)で
指定されたものに対応します。