description_text: yellow # Text style for description
}
}
...
]
...
```
By modifying these parameters you can customize the layout of your menu to your
liking.
### History Menu
The history menu is a handy way to access the editor history. When activating
the menu (default `Ctrl+r`) the command history is presented in reverse
chronological order, making it extremely easy to select a previous command.
The history menu can be configured by modifying these values from the config object:
```nu
$env.config = {
...
menus = [
...
{
name: history_menu
only_buffer_difference: true # Search is done on the text written after activating the menu
marker: "? " # Indicator that appears with the menu is active
type: {
layout: list # Type of menu
page_size: 10 # Number of entries that will presented when activating the menu
}
style: {
text: green # Text style
selected_text: green_reverse # Text style for selected option
description_text: yellow # Text style for description
}
}
...
]
...
```
When the history menu is activated, it pulls `page_size` records from the
history and presents them in the menu. If there is space in the terminal, when
you press `Ctrl+x` again the menu will pull the same number of records and
append them to the current page. If it isn't possible to present all the pulled
records, the menu will create a new page. The pages can be navigated by
pressing `Ctrl+z` to go to previous page or `Ctrl+x` to go to next page.
#### Searching the History
To search in your history you can start typing key words for the command you
are looking for. Once the menu is activated, anything that you type will be
replaced by the selected command from your history. for example, say that you
have already typed this
```nu
let a = ()
```
you can place the cursor inside the `()` and activate the menu. You can filter
the history by typing key words and as soon as you select an entry, the typed
words will be replaced
```nu
let a = (ls | where size > 10MiB)
```
#### Menu Quick Selection
Another nice feature of the menu is the ability to quick select something from
it. Say you have activated your menu and it looks like this
```nu
>
0: ls | where size > 10MiB
1: ls | where size > 20MiB
2: ls | where size > 30MiB
3: ls | where size > 40MiB
```
Instead of pressing down to select the fourth entry, you can type `!3` and
press enter. This will insert the selected text in the prompt position, saving
you time scrolling down the menu.
History search and quick selection can be used together. You can activate the
menu, do a quick search, and then quick select using the quick selection
character.
### User Defined Menus
In case you find that the default menus are not enough for you and you have
the need to create your own menu, Nushell can help you with that.
In order to add a new menu that fulfills your needs, you can use one of the default
layouts as a template. The templates available in nushell are columnar, list or
description.
The columnar menu will show you data in a columnar fashion adjusting the column
number based on the size of the text displayed in your columns.
The list type of menu will always display suggestions as a list, giving you the
option to select values using `!` plus number combination.
The description type will give you more space to display a description for some
values, together with extra information that could be inserted into the buffer.
Let's say we want to create a menu that displays all the variables created
during your session, we are going to call it `vars_menu`. This menu will use a