summaryrefslogtreecommitdiffstats
path: root/website/docs/conf_file.md
diff options
context:
space:
mode:
Diffstat (limited to 'website/docs/conf_file.md')
-rw-r--r--website/docs/conf_file.md300
1 files changed, 15 insertions, 285 deletions
diff --git a/website/docs/conf_file.md b/website/docs/conf_file.md
index cbb6cf4..44a0231 100644
--- a/website/docs/conf_file.md
+++ b/website/docs/conf_file.md
@@ -71,299 +71,29 @@ It's possible to redefine the mode mappings, for example if you usually prefer t
Note: I'd insist on you not overwriting default mode mappings before you master how broot is used and what those modes exactly work.
-# Verbs, Shortcuts, and keys
+# Columns order
-## Verb Definition Attributes
+You may change the order of file attributes in file lists.
-You can define a new verb in the TOML configuration file with a `[[verbs]]` section similar to this one:
+The `cols_order` property, if specified, must be a permutation of `"gbpdscn"` where every char denotes a column:
-```toml
-[[verbs]]
-invocation = "edit"
-key = "F2"
-shortcut = "e"
-apply_to = "file"
-execution = "/usr/bin/nvim {file}"
-leave_broot = false
-```
-
-The possible attributes are:
-
-name | mandatory | role
--|-|-
-invocation | no | how the verb is called by the user, with placeholders for arguments
-execution | yes | how the verb is executed
-key | no | a keyboard key triggerring execution
-shorcut | no | an alternate way to call the verb (without the arguments part)
-leave_broot | no | whether to quit broot on execution (default: `true`)
-from_shell | no | whether the verb must be executed from the parent shell (needs `br`, default: `false`). As this is executed after broot closed, this isn't compatiple with `leave_broot = false`
-apply_to | no | the type of selection this verb applies to, may be `"file"`, `"directory"` or `"any"`. You may declare two verbs with the same key if the first one applies to only files or only directories
-
-!!! Note
- The `from_shell` attribute exists because some actions can't possibly be useful from a subshell. For example `cd` is a shell builtin which must be executed in the parent shell.
-
-## Shortcuts and Verb search
-
-**broot** looks for the first token following a space or `:` and tries to find the verb you want.
-
-* If what you typed is exactly the shorcut or name of a verb, then this verb is selected: broot explains you what it would do if you were to type `enter`
-* If there's exactly one verb whose name or shortcut starts with the characters you typed, then it's selected
-* if there are several verbs whose name or shortcut start with the characters you typed, then broot waits for more
-* if no verb has a name or shortcut starting with those characters, broot tells you there's a problem
-
-Knowing this algorithm, you may understand the point in the following definition:
-
-```toml
-[[verbs]]
-invocation = "p"
-execution = ":parent"
-```
-
-This verb is an alias to the internal builtin already available if you type `:parent`.
-
-Its interest is that if you do `:p`, then `enter`, it is executed even while there are other verbs whose invocation pattern starts with a `p`.
-
-Use shortcuts for verbs you frequently use.
-
-## Keyboard key
-
-The main keys you can use are
-
-* The function keys (for example <kbd>F3</kbd>)
-* Ctrl and Alt keys (for example <kbd>ctrl</kbd><kbd>T</kbd> or <kbd>alt</kbd><kbd>a</kbd>)
-
-It's possible to define a verb just to add a trigger key to an internal verb.
-
-For example you could add those mappings:
-
-```toml
-[[verbs]]
-invocation = "root"
-key = "F9"
-execution = ":focus_root"
-
-[[verbs]]
-invocation = "home"
-key = "ctrl-H"
-execution = ":focus_user_home"
-
-[[verbs]]
-key = "alt-j"
-execution = ":line_down"
-
-[[verbs]]
-invocation = "top"
-key = "F6"
-execution = ":select_first"
-
-[[verbs]]
-invocation = "bottom"
-key = "F7"
-execution = ":select_last"
-
-[[verbs]]
-invocation = "open"
-key = "crtl-O"
-execution = ":open_stay"
-
-[[verbs]]
-invocation = "edit"
-key = "F2"
-shortcut = "e"
-execution = "$EDITOR {file}"
-from_shell = true
-```
-
-Then,
-
-* when doing <kbd>alt</kbd><kbd>J</kbd>, you would move the selection down (notice we don't need an invocation)
-* when doing <kbd>Ctrl-H</kbd>, you would go to you user home (`~` when on linux),
-* you would open files (without closing broot) with <kbd>ctrl-O</kbd>,
-* <kbd>F7</kbd> would select the last line of the tree,
-* and you'd switch to your favorite editor with <kbd>F2</kbd>
-
-Beware that consoles intercept some possible keys. Many keyboard shortcuts aren't available, depending on your configuration. Some keys are also reserved in broot for some uses, for example the <kbd>enter</kbd> key always validate an input command if there's some. The <kbd>Tab</kbd>, <kbd>delete</kbd>, <kbd>backspace</kbd>, <kbd>esc</kbd> keys are reserved too.
-
-### Verbs not leaving broot
-
-If you set `leave_broot = false`, broot won't quit when executing your command, but it will update the tree.
-
-This is useful for commands modifying the tree (like creating or moving files).
-
-## Verb Arguments
-
-The execution of a verb can take one or several arguments.
-
-For example it may be defined as `/usr/bin/vi {file}̀`.
-
-Some arguments are predefined in broot and depends on the current selection:
+* g : Git file info
+* b : branch (shows the depth and parent in the tree)
+* p : permissions (mode, user, group)
+* d : last modification date
+* s : size (with size bar when sorting)
+* c : count, number of files in directories
+* n : file name
-name | expanded to
--|-
-`{file}` | the complete path of the current selection
-`{parent}` | the complete path of the current selection's parent
-`{directory}` | the closest directory, either `{file}` or `{parent}`
-`{other-panel-file}` | the complete path of the current selection in the other panel
-`{other-panel-parent}` | the complete path of the current selection's parent in the other panel
-`{other-panel-directory}` | the closest directory, either `{file}` or `{parent}` in the other panel
-
-!!! Note
- when you're in the help screen, `{file}` is the configuration file, while `{directory}` is the configuration directory.
-
-But you may also define some arguments in the invocation pattern. For example:
+The default value is
```toml
-[[verbs]]
-invocation = "mkdir {subpath}"
-execution = "/bin/mkdir -p {directory}/{subpath}"
+cols_order = "gscpdbn"
```
-
-(this one has now been made standard so you don't have to write it in the configuration file)
-
-In this case the subpath is read from what you type:
-
-![md sub](img/20190306-md.png)
-
-As you see, there's a space in this path, but it works. **broot** tries to determine when to wrap path in quotes and when to escape so that such a command correctly works.
-
-It also normalizes the paths it finds which eases the use of relative paths:
-
-![mv](img/20190306-mv.png)
-
-Here's another example, where the invocation pattern defines two arguments by destructuring:
+If you prefer to have the branchs left of the tree (as was the default in broot prior 0.18.1) you can use
```toml
-[[verbs]]
-invocation = "blop {name}\\.{type}"
-execution = "/bin/mkdir {parent}/{type} && /usr/bin/nvim {parent}/{type}/{name}.{type}"
-from_shell = true
-```
-
-And here's how it would look like:
-
-![blop](img/20190306-blop.png)
-
-Notice the `\\.` ? That's because the invocation pattern is interpreted as a regular expression
-(with just a shortcut for the easy case, enabling `{name}`).
-The whole regular expression syntax may be useful for more complex rules.
-Let's say we don't want the type to contain dots, then we do this:
-
-```toml
-[[verbs]]
-invocation = "blop {name}\\.(?P<type>[^.]+)"
-execution = "/bin/mkdir {parent}/{type} && /usr/bin/nvim {parent}/{type}/{name}.{type}"
-from_shell = true
-```
-
-You can override the default behavior of broot by giving your verb the same shortcut or invocation than a default one.
-
-## Built In Verbs
-
-Here's a list of actions you can add an alternate shortcut or keyboard key for:
-
-invocation | default key | default shortcut | behavior / details
--|-|-|-
-:back | <kbd>Esc</kbd> | - | back to previous app state (see Usage page) |
-:cd | <kbd>alt</kbd><kbd>enter</kbd> | - | leave broot and cd to the selected directory (needs the br shell function)
-:chmod {args} | - | - | execute a chmod
-:cp {newpath} | - | - | copy the file or directory to the provided name
-:help | <kbd>F1</kbd> | - | open the help page. Help page can also be open with <kbd>?</kbd>
-:focus | <kbd>enter</kbd> | - | set the selected directory the root of the displayed tree |
-:line_down | <kbd>↓</kbd> | - | scroll one line down or select the next line
-:line_up | <kbd>↑</kbd> | - | scroll one line up or select the previous line
-:mkdir {subpath} | - | md | create a directory
-:mv {newpath} | - | - | move the file or directory to the provided path
-:open_stay | <kbd>enter</kbd> | - | open the selected file in the default OS opener, or focus the directory
-:open_stay_filter | - | - | focus the directory but keeping the current filtering pattern
-:open_leave | <kbd>alt</kbd><kbd>enter</kbd> | - | open the selected file in the default OS opener and leave broot
-:page_down | <kbd>⇟</kbd> | - | scroll one page down
-:page_up | <kbd>⇞</kbd> | - | scroll one page up
-:parent | - | - | focus the parent directory
-:print_path | - | pp | print path and leave broot
-:print_relative_path | - | pp | print relative path and leave broot
-:print_tree | - | pt | print tree and leave broot
-:quit | <kbd>ctrl</kbd><kbd>q</kbd> | q | quit broot
-:refresh | <kbd>F5</kbd> | - | refresh the displayed tree and clears the directory sizes cache
-:rm | - | - | remove the selected file or directory. To stay safe, don't define a keyboard key for this action
-:select_first | - | - | select the first line
-:select_last | - | - | select the last line
-:sort_by_count | - | - | sort by count (only one level of the tree is displayed)
-:sort_by_date | - | - | sort by date
-:sort_by_size | - | - | sort by size
-:toggle_counts | - | - | toggle display of total counts of files per directory
-:toggle_dates | - | - | toggle display of last modified dates (looking for the most recently changed file, even deep)
-:toggle_files | - | - | toggle showing files (or just folders)
-:toggle_git_ignore | - | - | toggle git hignore handling (auto, no or yes)
-:toggle_git_file_info | - | - | toggle display of git file information
-:toggle_git_status | - | - | toggle showing only the file which would show up on `git status`
-:toggle_hidden | - | - | toggle display of hidden files (the ones whose name starts with a dot on linux)
-:toggle_perm | - | - | toggle display of permissions (not available on Windows)
-:toggle_sizes | - | - | toggle the size mode
-:toggle_trim_root | - | - | toggle trimming of top level files in tree display
-:up_tree | - | - | focus the parent of the current root
-
-Note that
-
-- you can always call a verb with its default invocation, you don't *have* to define a shortcut
-- verbs whose invocation needs an argument (like `{newpath}`) can't be triggered with just a keyboard key.
-
-## Input related verbs
-
-Some internal actions can be bound to a key shortcut but can't be called explicitely because they directly act on the input field:
-
-name | default binding | behavior
--|-|-
-:input_del_char_left | <kbd>del</kbd> | "delete the char left of the cursor",
-:input_del_char_below | <kbd>suppr</kbd> | "delete the char left at the cursor's position",
-:input_del_word_left | - | "delete the word left of the cursor",
-:input_del_word_right | - | "delete the word right of the cursor",
-:input_go_to_end | <kbd>end</kbd> | "move the cursor to the end of input",
-:input_go_left | <kbd>←</kbd> | "move the cursor to the left",
-:input_go_right | <kbd>→</kbd> | "move the cursor to the right",
-:input_go_to_start | <kbd>home</kbd> | "move the cursor to the start of input",
-:input_go_word_left | - | "move the cursor one word to the left",
-:input_go_word_right | - | "move the cursor one word to the right",
-
-You may add this kind of shortcuts:
-
-```toml
-[[verbs]]
-key = "alt-b"
-execution = ":input_go_word_left"
-
-[[verbs]]
-key = "alt-f"
-execution = ":input_go_word_right"
-
-[[verbs]]
-key = "alt-l"
-execution = ":input_del_word_left"
-
-[[verbs]]
-key = "alt-r"
-execution = ":input_del_word_right"
-```
-
-
-## Focus
-
-The `:focus` internal has many uses.
-
-It can be used without explicit argument in which case it takes the selection (for example `:!focus` is equivalent to <kbd>ctrl</kbd><kbd>→</kbd>).
-
-It can be used with an argument, for example you can go to a specific place without leaving broot by typing ` fo /usr/bin` then <kbd>enter</kbd>.
-
-It serves as base for several built-in commands, like `:home` whose execution is `:focus ~` (`~` is interpreted in broot as the user home even on Windows).
-
-And you can add your own ones:
-
-```toml
-[[verbs]]
-key = "ctrl-up"
-execution = ":focus .."
-
-[[verbs]]
-key = "ctrl-d"
-execution = ":focus ~/dev"
+cols_order = "gbpdscn"
```
+The `n` column should be kept at end as it's the only one with a variable size.