blob: 8753cac186eabf33cd7f61db1992002650a27d38 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
[](https://melpa.org/#/vterm)
# Introduction
This emacs module implements a bridge to libvterm to display a terminal in a
emacs buffer.
## Warning
This is a **alpha-release**, so it will crash your emacs. If it does, please
report a bug!
# Installation
Clone the repository:
```
git clone https://github.com/akermu/emacs-libvterm.git
```
Before install emacs-libvterm,you need make sure you have
installed
1. cmake (>=3.11)
2. libtool-bin related issues: [#66](https://github.com/akermu/emacs-libvterm/issues/66) [#85](https://github.com/akermu/emacs-libvterm/issues/85#issuecomment-491845136)
Run the build:
```
mkdir -p build
cd build
cmake ..
make
```
And add this to your `init.el`:
```
(add-to-list 'load-path "path/to/emacs-libvterm")
(require 'vterm)
```
# Debugging and testing
If you have successfully build the module, you can test the module by executing
the following command in the `build` directory:
```
make run
```
# Usage
## `vterm`
Open a terminal in the current window.
## `vterm-other-window`
Open a terminal in another window.
## `vterm-copy-mode`
When you enable `vterm-copy-mode`,the terminal buffer would behave like a normal
`read-only` text buffer. Then you can search in the output terminal, copy text,
etc. the default keybinding is `C-c C-t`.
# Customization
## `vterm-shell`
Shell to run in a new vterm. Defaults to `$SHELL`.
## Keybindings
If you want a key to be send to the terminal bind it to `vterm--self-insert`,
otherwise remove it from `vterm-mode-map`. By default vterm.el binds most of the
`C-<char>` and `M-<char>` keys, `<f1>` through `<f12>` and some special keys
like `<backspace>` and `<return>`. Sending a keyboard interrupt is by default
bound to `C-c C-c`.
## Colors
Set the `:foreground` and `:background` attributes of the following faces to a
color you like:
- vterm-color-default
- vterm-color-black
- vterm-color-black
- vterm-color-red
- vterm-color-green
- vterm-color-yellow
- vterm-color-blue
- vterm-color-magenta
- vterm-color-cyan
- vterm-color-white
## Directory tracking
For `zsh` put this in your `.zshrc`:
```zsh
function chpwd() {
echo -e "\e]51;$(pwd)\e\\"
}
```
For bash there's no real change directory hook, so you have to rewrite the cd
command (please als have a look the answers [here](https://unix.stackexchange.com/q/170279)):
```bash
cd() {
builtin cd "$@" || return
[ "$OLDPWD" = "$PWD" ] || echo -e "\e]51;$(pwd)\e\\"
}
```
## Related packages
- [vterm-toggle](https://github.com/jixiuf/vterm-toggle): Toggles between a vterm and the current buffer
- [multi-libvterm](https://github.com/suonlight/multi-libvterm): Multiterm for emacs-libvterm
|