---
title: "#조직모드: #바인더 - #스크리브너 활용법"
url: "https://notes.junghanacs.com/notes/20230930T155200"
author: "Junghan Kim"
date: "2023-09-30T15:52:00+09:00"
lastmod: "2024-12-01T06:30:00+09:00"
tags: ["orgmode"]
description: "Scrivener의 바인더 개념을 Emacs에서 구현하는 binder 모드의 구조와 사용법을 정리한 자료."
---

> [!abstract] 이 노트에 대하여
> 
> binder 모드가 여러 파일로 이루어진 글쓰기 프로젝트를 어떻게 관리하는지 문서 번역과 함께 정리한다. Scrivener의 바인더 개념을 Emacs에서 재현하려는 흐름을 이해하기 좋은 자료다.

## BIBLIOGRAPHY

- “Rnkn/Binder: Emacs Global Minor Mode Facilitating Multi-File Writing Projects.” n.d. Accessed September 23, 2024. <https://github.com/rnkn/binder/tree/master>.

## 관련노트

[@최은광 #스크리브너](https://notes.junghanacs.com/bib/20250108T105154) 다시 만남.

소개하는 포인트와 난이도를 파악해보면 좋을 것 같다.

## rnkn/binder: Emacs global minor mode facilitating multi-file writing projects

([“Rnkn/Binder: Emacs Global Minor Mode Facilitating Multi-File Writing Projects” n.d.](https://notes.junghanacs.com/notes/20230930T155200#citeproc_bib_item_1))

## Binder

[2023-09-30 Sat 15:52]

Binder is global minor mode to facilitate working on a writing project in multiple files. It is heavily inspired by the binder feature in the [macOS writing app Scrivener][3].

바인더는 여러 파일로 구성된 글쓰기 프로젝트에서 쉽게 작업할 수 있는 글로벌 마이너 모드입니다. 바인더는 [macOS 글쓰기 앱 Scrivener][3]의 바인더 기능에서 크게 영감을 받았습니다.

The rationale behind working this way is to split a large writing project into smaller pieces.

이런 방식으로 작업하는 이유는 큰 글쓰기 프로젝트를 작은 조각으로 나누기 위해서입니다.

-   Features

Primarily, Binder provides a global minor mode binder-mode. This allows working with files in the current binder-project-directory. Data concerning these files is saved in a .binder.el file in the project directory.

기본적으로 바인더는 글로벌 마이너 모드인 바인더 모드를 제공합니다. 이를 통해 현재 바인더 프로젝트 디렉터리에 있는 파일로 작업할 수 있습니다. 이러한 파일과 관련된 데이터는 프로젝트 디렉터리에 있는 .binder.el 파일에 저장됩니다.

A project can be thought of an ordered list of files with associated notes and tags.

프로젝트는 노트와 태그가 연결된 파일들의 정렬된 목록이라고 생각하시면 됩니다.

-   Navigation

---

At the most basic level, you can navigate back and forth through the files in a project:

가장 기본적인 수준에서는 프로젝트의 파일을 앞뒤로 탐색할 수 있습니다:

-   binder-next (C-c ]) visits the next file in the project
-   binder-previous (C-c [) visits the previous

Calling these commands activates a transient map so that each command can be repeated without the prefix key.

이러한 명령을 호출하면 일시적인 맵이 활성화되어 접두사 키 없이도 각 명령을 반복할 수 있습니다.

-   Sidebar

---

You'll mostly interact with the project structure via the sidebar.

대부분 사이드바를 통해 프로젝트 구조와 상호작용하게 됩니다.

-   binder-toggle-sidebar (C-c ') toggles the visibility of the binder sidebar
-   binder-reveal-in-sidebar (C-c ;) finds the current file in the sidebar

Each project item is a file reference relative to the project directory.

각 프로젝트 항목은 프로젝트 디렉터리를 기준으로 한 파일 참조입니다.

Project items are displayed in a linear ordered list. Calling binder-sidebar-find-file (RET) or binder-sidebar-find-file-other-window (o) will visit the corresponding file.

프로젝트 항목은 선형 정렬 목록으로 표시됩니다. 바인더-사이드바-파일 찾기(RET) 또는 바인더-사이드바-파일 찾기-다른 창(O)을 호출하면 해당 파일로 이동합니다.

Each item in the sidebar displays the following information:

사이드바의 각 항목에는 다음 정보가 표시됩니다:

1.  \* denotes that this item has some notes (see **Notes** below), or...
2.  ? denotes that the item's corresponding file cannot be found
3.  either the file relative to the project directory, or an arbitrary display name
4.  #tag1 #tag2 ... arbitrary item tags (see **Tags** below)

An item's display name can be changed with binder-sidebar-rename (r). If a file cannot be found, relocate with binder-sidebar-relocate (R).

Calling binder-sidebar-find-file (RET) will visit the corresponding file.

To add an existing file, call binder-sidebar-add-file (a) or add all files in directory with binder-sidebar-add-all-files (A).

Add a new file with binder-sidebar-new-file (M-RET). This prompts for a file-name and adds this (possibly non-existent) file to the project after the current file's index. If no file-name extension is provided, use binder-default-file-extension.

&gt; Hint: you can use an alternate default file extension for different &gt; projects by setting a directory local variable.

Files can also be added to a project from outside the sidebar with binder-add-file (C-c :).

Items can be reordered with binder-sidebar-shift-up (M-p | M-up) and binder-sidebar-shift-down (M-n | M-down).

Remove items with binder-sidebar-remove (d) -- this **does not delete the files**, only removes them from the project, but it **does** delete the corresponding notes and tags.

Hide item file extensions by setting the binder-sidebar-hide-file-extensions option. This can be toggled with binder-sidebar-toggle-file-extensions (E).

The sidebar can be resized with binder-sidebar-shrink-window ({) and binder-sidebar-enlarge-window (}). The window size is changed by the number of columns specified in option binder-sidebar-resize-window-step.

You can customize how the sidebar window is displayed by setting binder-sidebar-display-alist option.

-   Notes

---

To open the notes buffer from the sidebar, call either binder-sidebar-open-notes (z) to open and select the notes window, or binder-sidebar-toggle-notes (i) to toggle the window.

To open a project file's notes from outside the sidebar, call binder-toggle-notes (C-c ").

You need to call either binder-notes-save (C-x C-s) or binder-notes-save-and-quit-window (C-c C-c) to save notes to the project file.

Calling quit-window (C-c C-q | C-c C-k) or binder-toggle-sidebar does not save notes.

You can embiggen the notes window, to pop it out from the sidebar and edit like a regular buffer window, with binder-notes-expand-window (C-c C-l).

You can customize how the notes window is displayed by setting binder-notes-display-alist option.

-   Tags

----

Tags can help organize a project. An item can have any number of tags.

Add a tag to an item with binder-sidebar-add-tag (t). Remove a tag from an item with binder-sidebar-remove-tag (T). You can tag/untag multiple items at once by using marks (see **Marking** below).

Items in the sidebar can be narrowed to only show items with a certain tag with binder-sidebar-narrow-by-tag (/) and/or only show items without a certain tag with binder-sidebar-exclude-by-tag (\\). Each of these commands can be called multiple times with additional tags.

Clear the sidebar filters with binder-sidebar-clear-filters (|).

-   Marking

---

Multiple items can be marked to add tags, toggle include state or delete. Call binder-sidebar-mark (m) to mark an item or binder-sidebar-unmark (u) to unmark an item.

To unmark all sidebar items, call binder-sidebar-unmark-all (U).

Requirements

---

-   Emacs 24.4
-   seq 2.20 (part of Emacs 25 and later)



-   Installation

---

The latest stable release of Binder is available via [MELPA-stable][1]. First, add MELPA-stable to your package archives:

M-x customize-option RET package-archives RET

Insert an entry named melpa-stable with URL: <https://stable.melpa.org/packages/>

You can then find the latest stable version of binder in the list returned by:

M-x list-packages RET

If you prefer the latest but perhaps unstable version, do the above using [MELPA][2].

-   Advanced Installation

---

Download the latest tagged release, move this file into your load-path and add to your init.el file:

(require 'binder) (require 'binder-tutorial) ;; optional

If you wish to contribute to or alter Binder's code, clone the repository into your load-path and require as above:

git clone <https://github.com/rnkn/binder.git>

-   Bugs and Feature Requests

---

Send me an email (address in the package header). For bugs, please ensure you can reproduce with:

$ emacs -Q -l binder.el

Known issues are tracked with FIXME comments in the source.

Tutorial

---

Binder comes with a tutorial. Calling M-x binder-tutorial will prompt for an empty directory in which to generate the tutorial files.

[1]: <https://stable.melpa.org/#/binder> [2]: <https://melpa.org/#/binder> [3]: <https://www.literatureandlatte.com/scrivener/>
