From 23ce2b34fa1287af4e8db0663444ad5ce5b5b193 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Sun, 2 Jan 2022 02:08:13 -0500 Subject: Fix transcript link --- 2020/info/30.md | 2 +- ...f-vterm--gabriele-bozzola-sbozzola-sbozzolo.vtt | 526 --------------------- ...-a-tour-of-vterm--gabriele-bozzola-sbozzolo.vtt | 526 +++++++++++++++++++++ 3 files changed, 527 insertions(+), 527 deletions(-) delete mode 100644 2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzola-sbozzolo.vtt create mode 100644 2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo.vtt diff --git a/2020/info/30.md b/2020/info/30.md index 4e55cecf..422e26c8 100644 --- a/2020/info/30.md +++ b/2020/info/30.md @@ -3,7 +3,7 @@ Gabriele Bozzola (@sbozzolo) [[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo.webm" subtitles="/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo.vtt"]] [Download compressed .webm video (17.7M)](https://media.emacsconf.org/2020/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo--compressed32.webm) -[Download compressed .webm video (10.9M, highly compressed)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo--vp9-q56-video-original-audio.webm) +[Download compressed .webm video (10.9M, highly compressed)](https://mirror.csclub.uwaterloo.ca/emacsconf/2020/smaller/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo--vp9-q56-video-original-audio.webm) g [View transcript](#transcript) [[!template id=vid src="https://mirror.csclub.uwaterloo.ca/emacsconf/2020/emacsconf-2020--30-a-tour-of-vterm--questions--gabriele-bozzola-sbozzolo.webm" download="Download Q&A video"]] diff --git a/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzola-sbozzolo.vtt b/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzola-sbozzolo.vtt deleted file mode 100644 index 183ea9f6..00000000 --- a/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzola-sbozzolo.vtt +++ /dev/null @@ -1,526 +0,0 @@ -WEBVTT - -00:00:00.880 --> 00:00:03.760 -Hello and welcome to this talk. - -00:00:03.760 --> 00:00:06.080 -The title of this talk is a tour of vterm, - -00:00:06.080 --> 00:00:08.559 -a fast and fully featured terminal emulator - -00:00:08.559 --> 00:00:10.800 -inside GNU Emacs. - -00:00:10.801 --> 00:00:12.719 -So let's try to understand what we mean - -00:00:12.720 --> 00:00:14.559 -with "fast and fully featured." - -00:00:14.559 --> 00:00:16.800 -To do that we'll compare vterm - -00:00:16.801 --> 00:00:20.400 -with the packages which are built in Emacs, - -00:00:20.401 --> 00:00:22.400 -mainly, term. - -00:00:22.400 --> 00:00:25.039 -So let's jump into the vterm. - -00:00:25.040 --> 00:00:26.720 -So this is a vterm buffer - -00:00:26.720 --> 00:00:29.439 -and this is a ansi-term buffer. - -00:00:29.440 --> 00:00:30.720 -What I'm going to do now is - -00:00:30.721 --> 00:00:32.160 -first I'm going to prove to you - -00:00:32.160 --> 00:00:34.160 -what we mean by fast. - -00:00:34.161 --> 00:00:37.440 -To do that, let me open a large file display on screen-- - -00:00:37.441 --> 00:00:40.239 -a large file, this is about one megabyte of data-- - -00:00:40.239 --> 00:00:41.840 -and let me time that. - -00:00:41.841 --> 00:00:45.200 -It takes about 0.6 seconds with vterm. - -00:00:45.201 --> 00:00:48.320 -Let's do the same with with ansi-term. - -00:00:48.321 --> 00:00:51.520 -Well, we already see the difference. - -00:00:51.520 --> 00:00:53.039 -So I will use this time to tell you - -00:00:53.039 --> 00:00:56.320 -what's different, and what is vterm exactly. - -00:00:56.321 --> 00:00:58.399 -vterm is a terminal emulator - -00:00:58.400 --> 00:01:00.800 -built on top of an external library. - -00:01:00.801 --> 00:01:02.719 -The library is called libvterm, - -00:01:02.719 --> 00:01:05.519 -and is the same library used by Newton - -00:01:05.519 --> 00:01:07.200 -for their own terminal emulator. - -00:01:07.200 --> 00:01:10.799 -It's a C library, and this is what gives us - -00:01:10.799 --> 00:01:15.119 -a lot of good features. First, the speed. - -00:01:15.119 --> 00:01:17.119 -Time spent here, 0.6, is essentially - -00:01:17.120 --> 00:01:18.479 -the time that it takes to: - -00:01:18.479 --> 00:01:22.240 -1. convert the Emacs representation of text - -00:01:22.241 --> 00:01:25.040 -into the vterm representation of what is a string, - -00:01:25.041 --> 00:01:27.360 -and 2., into actually displaying that, - -00:01:27.361 --> 00:01:29.520 -and that can take time - -00:01:29.520 --> 00:01:32.240 -if there's fontification involved. - -00:01:32.241 --> 00:01:34.240 -So these are the 0.6 seconds there. - -00:01:34.240 --> 00:01:38.479 -As we say, in ansi-term, that's much more time. - -00:01:38.480 --> 00:01:40.720 -It's much slower. So the terminal will feel - -00:01:40.721 --> 00:01:42.880 -much snappier, much faster. - -00:01:42.880 --> 00:01:46.720 -But that's not the main benefit or the only benefit - -00:01:46.721 --> 00:01:49.759 -of using this external library vterm. - -00:01:49.760 --> 00:01:53.040 -The second big benefit is that - -00:01:53.041 --> 00:01:56.560 -vterm has support for all the escape codes - -00:01:56.560 --> 00:01:58.320 -that xterm has support for, - -00:01:58.321 --> 00:02:01.119 -so vterm is essentially as running xterm - -00:02:01.119 --> 00:02:03.600 -inside an Emacs buffer. So let's see that. - -00:02:03.600 --> 00:02:05.759 -For example, let's start by looking - -00:02:05.760 --> 00:02:08.239 -at the support for colors. - -00:02:08.239 --> 00:02:10.319 -We have support for all the colors out of the box. - -00:02:10.320 --> 00:02:11.840 -We don't have to do anything. - -00:02:11.840 --> 00:02:14.720 -And if we did the same here, well, - -00:02:14.721 --> 00:02:16.800 -we have only 20 colors. - -00:02:16.801 --> 00:02:18.239 -There's a way to get all the colors, - -00:02:18.240 --> 00:02:19.680 -but it's much more involved. - -00:02:19.680 --> 00:02:23.040 -But this is not where vterm shines. - -00:02:23.040 --> 00:02:27.200 -We can run all the commands that we want. - -00:02:27.200 --> 00:02:31.440 -htop, ncdu, everything runs here. - -00:02:31.441 --> 00:02:35.519 -Also this title, it's a fairly complicated - -00:02:35.520 --> 00:02:37.920 -manipulation of the window - -00:02:37.921 --> 00:02:40.879 -and it will not work here. - -00:02:40.879 --> 00:02:42.000 -It just doesn't work actually. - -00:02:42.001 --> 00:02:46.160 -Now the terminal is probably messed up. Yes. - -00:02:46.161 --> 00:02:48.400 -So using this external library - -00:02:48.400 --> 00:02:50.959 -removes the burden from the developers - -00:02:50.959 --> 00:02:52.319 -of having to implement support - -00:02:52.320 --> 00:02:53.280 -for all the escape codes. - -00:02:53.281 --> 00:02:55.360 -We just use those. - -00:02:55.360 --> 00:02:58.480 -So in many ways, running vterm - -00:02:58.480 --> 00:03:01.760 -is running xterm inside Emacs, - -00:03:01.760 --> 00:03:04.159 -but it's better than that because, - -00:03:04.160 --> 00:03:05.840 -since this is an Emacs buffer, - -00:03:05.840 --> 00:03:09.760 -we can enjoy a lot of features from Emacs - -00:03:09.760 --> 00:03:11.360 -as well as a tighter integration - -00:03:11.361 --> 00:03:13.200 -with Emacs itself. - -00:03:13.200 --> 00:03:15.840 -For example, as you see here, - -00:03:15.841 --> 00:03:20.239 -the title of my buffer is from the directory I'm in. - -00:03:20.240 --> 00:03:21.760 -So let's go to my tmp. - -00:03:21.760 --> 00:03:23.440 -The title will change. - -00:03:23.441 --> 00:03:25.920 -So there's information being exchanged - -00:03:25.921 --> 00:03:28.000 -between vterm and Emacs. - -00:03:28.000 --> 00:03:30.000 -And of course, the title is not the only place - -00:03:30.001 --> 00:03:32.000 -where information is exchanged. - -00:03:32.000 --> 00:03:35.920 -I can find a file and I will be in the directory - -00:03:35.920 --> 00:03:37.680 -where my terminal is. - -00:03:37.681 --> 00:03:40.000 -This feature is also available in ansi-term, - -00:03:40.000 --> 00:03:41.360 -and it works also on vterm, - -00:03:41.361 --> 00:03:43.440 -and it follows me. So if I go to tmp, - -00:03:43.441 --> 00:03:44.720 -I'll get the tmp. - -00:03:44.720 --> 00:03:47.120 -If I ssh to a remote server, - -00:03:47.121 --> 00:03:50.239 -it will work also on remote servers as well, - -00:03:50.240 --> 00:03:53.920 -which is a very nice way to edit files remotely - -00:03:53.920 --> 00:03:55.599 -while we're working on a shell. - -00:03:55.600 --> 00:03:59.280 -And second, while vterm is not an Elisp interpreter - -00:03:59.281 --> 00:04:01.200 -like eshell, what we can do is - -00:04:01.201 --> 00:04:04.720 -we can still run Emacs functions. - -00:04:04.721 --> 00:04:06.080 -So for example... - -00:04:06.081 --> 00:04:08.000 -that requires some configuration. - -00:04:08.001 --> 00:04:11.599 -vterm command (message "hi") - -00:04:11.600 --> 00:04:13.120 -as you see there's a "hi" here. - -00:04:13.121 --> 00:04:14.959 -So what I'm doing is I'm executing - -00:04:14.960 --> 00:04:16.239 -the Elisp function hi. - -00:04:16.239 --> 00:04:18.959 -I can drop that and turn it around, - -00:04:18.960 --> 00:04:21.600 -hash function to run Elisp functions. - -00:04:21.601 --> 00:04:24.880 -Or another one, find-file, same. - -00:04:24.880 --> 00:04:27.360 -We call this feature "message passing," - -00:04:27.361 --> 00:04:30.000 -and it requires some configuration - -00:04:30.001 --> 00:04:32.000 -on the Emacs side as well as in the shell side. - -00:04:32.000 --> 00:04:33.440 -It's important to stress - -00:04:33.441 --> 00:04:35.360 -what's the nature of vterm. - -00:04:35.360 --> 00:04:37.919 -For instance, every time I'm sending a key binding, - -00:04:37.920 --> 00:04:40.000 -it's not immediately clear if my intention is - -00:04:40.001 --> 00:04:41.840 -to send it to the shell or to Emacs. - -00:04:41.841 --> 00:04:44.320 -So vterm implements some reasonable defaults, - -00:04:44.320 --> 00:04:46.800 -but at the moment it's mainly packaged - -00:04:46.800 --> 00:04:49.120 -to display characters on a screen. - -00:04:49.120 --> 00:04:50.720 -So for example, if you're using evil, - -00:04:50.721 --> 00:04:52.639 -the editing commands in evil - -00:04:52.640 --> 00:04:54.080 -will not work immediately. - -00:04:54.081 --> 00:04:55.759 -There's some work to be done - -00:04:55.759 --> 00:04:58.160 -and integration can be improved on that side, - -00:04:58.161 --> 00:05:00.240 -but sometimes we really want this to behave - -00:05:00.240 --> 00:05:02.240 -exactly like a Emacs buffer. - -00:05:02.240 --> 00:05:03.680 -We want to be able to search. - -00:05:03.681 --> 00:05:06.639 -If I try to get it to search, - -00:05:06.640 --> 00:05:07.280 -it will not work. - -00:05:07.281 --> 00:05:08.400 -I will send it to the shell. - -00:05:08.401 --> 00:05:11.919 -So to do that, we enabled vterm copy mode. - -00:05:11.920 --> 00:05:14.720 -As you see, copy mode, and now this buffer - -00:05:14.721 --> 00:05:17.039 -is essentially a fundamental buffer. - -00:05:17.039 --> 00:05:21.120 -I can move around. I can search. - -00:05:21.120 --> 00:05:25.520 -So it must have... I can do everything I want. - -00:05:25.521 --> 00:05:26.479 -And there are additional features. - -00:05:26.480 --> 00:05:30.560 -For example, I can jump around all the prompts. - -00:05:30.561 --> 00:05:32.639 -I find this extremely useful, - -00:05:32.639 --> 00:05:35.039 -because I can copy updates from my programs. - -00:05:35.040 --> 00:05:38.320 -What I always have to do is - -00:05:38.321 --> 00:05:41.520 -I have to Google some errors. - -00:05:41.521 --> 00:05:43.120 -So what I do is I select that - -00:05:43.120 --> 00:05:45.120 -and I have my keybinding in Emacs conf, - -00:05:45.121 --> 00:05:48.479 -and I'm Googling what I have to Google. - -00:05:48.480 --> 00:05:51.120 -So this is very nice and if I... - -00:05:51.121 --> 00:05:52.639 -now that I have selected something, - -00:05:52.640 --> 00:05:53.840 -if I just press return, - -00:05:53.841 --> 00:05:56.400 -I will go back to my normal editing mode - -00:05:56.401 --> 00:06:00.160 -with the text copied, so I can paste it back. - -00:06:00.161 --> 00:06:02.720 -So it's a quick way to interact with copy - -00:06:02.721 --> 00:06:05.840 -and interact with the output of a buffer. - -00:06:05.841 --> 00:06:09.120 -So finally, let's discuss how to actually use vterm. - -00:06:09.121 --> 00:06:10.560 -Let's circle back, let's go, - -00:06:10.560 --> 00:06:12.400 -and let's look at the GitHub repo - -00:06:12.400 --> 00:06:14.000 -where development is happening. - -00:06:14.001 --> 00:06:15.520 -vterm is available in MELPA, - -00:06:15.520 --> 00:06:17.759 -but since it's leveraging the power - -00:06:17.760 --> 00:06:18.960 -of an external module, - -00:06:18.960 --> 00:06:20.479 -you must have Emacs compiled - -00:06:20.480 --> 00:06:22.000 -with support for modules, - -00:06:22.000 --> 00:06:25.600 -and many distros like Ubuntu, Debian, - -00:06:25.600 --> 00:06:26.880 -that's not there. So you have to - -00:06:26.881 --> 00:06:29.199 -get Emacs with support for modules: - -00:06:29.200 --> 00:06:31.360 -compiling or getting images somewhere else. - -00:06:31.361 --> 00:06:33.840 -And also, the first time you are going to use this, - -00:06:33.840 --> 00:06:38.960 -which works only on Mac or GNU Linux systems, - -00:06:38.961 --> 00:06:41.759 -Emacs will try to find and compile this module, - -00:06:41.759 --> 00:06:44.240 -so it's important. This requirement is important. - -00:06:44.241 --> 00:06:46.400 -If you're using Windows, well, - -00:06:46.401 --> 00:06:49.199 -it's not available and will not work. - -00:06:49.199 --> 00:06:53.440 -So to conclude, I want to just advertise this page. - -00:06:53.440 --> 00:06:56.240 -If you have problems, look at the issues - -00:06:56.240 --> 00:06:58.240 -and open an issue in case. - -00:06:58.241 --> 00:06:59.199 -We'll try to help you. - -00:06:59.200 --> 00:07:00.800 -We are very excited about vterm, - -00:07:00.800 --> 00:07:02.639 -and I think it's a transformative - -00:07:02.639 --> 00:07:10.319 -terminal experience inside GNU Emacs. diff --git a/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo.vtt b/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo.vtt new file mode 100644 index 00000000..183ea9f6 --- /dev/null +++ b/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzolo.vtt @@ -0,0 +1,526 @@ +WEBVTT + +00:00:00.880 --> 00:00:03.760 +Hello and welcome to this talk. + +00:00:03.760 --> 00:00:06.080 +The title of this talk is a tour of vterm, + +00:00:06.080 --> 00:00:08.559 +a fast and fully featured terminal emulator + +00:00:08.559 --> 00:00:10.800 +inside GNU Emacs. + +00:00:10.801 --> 00:00:12.719 +So let's try to understand what we mean + +00:00:12.720 --> 00:00:14.559 +with "fast and fully featured." + +00:00:14.559 --> 00:00:16.800 +To do that we'll compare vterm + +00:00:16.801 --> 00:00:20.400 +with the packages which are built in Emacs, + +00:00:20.401 --> 00:00:22.400 +mainly, term. + +00:00:22.400 --> 00:00:25.039 +So let's jump into the vterm. + +00:00:25.040 --> 00:00:26.720 +So this is a vterm buffer + +00:00:26.720 --> 00:00:29.439 +and this is a ansi-term buffer. + +00:00:29.440 --> 00:00:30.720 +What I'm going to do now is + +00:00:30.721 --> 00:00:32.160 +first I'm going to prove to you + +00:00:32.160 --> 00:00:34.160 +what we mean by fast. + +00:00:34.161 --> 00:00:37.440 +To do that, let me open a large file display on screen-- + +00:00:37.441 --> 00:00:40.239 +a large file, this is about one megabyte of data-- + +00:00:40.239 --> 00:00:41.840 +and let me time that. + +00:00:41.841 --> 00:00:45.200 +It takes about 0.6 seconds with vterm. + +00:00:45.201 --> 00:00:48.320 +Let's do the same with with ansi-term. + +00:00:48.321 --> 00:00:51.520 +Well, we already see the difference. + +00:00:51.520 --> 00:00:53.039 +So I will use this time to tell you + +00:00:53.039 --> 00:00:56.320 +what's different, and what is vterm exactly. + +00:00:56.321 --> 00:00:58.399 +vterm is a terminal emulator + +00:00:58.400 --> 00:01:00.800 +built on top of an external library. + +00:01:00.801 --> 00:01:02.719 +The library is called libvterm, + +00:01:02.719 --> 00:01:05.519 +and is the same library used by Newton + +00:01:05.519 --> 00:01:07.200 +for their own terminal emulator. + +00:01:07.200 --> 00:01:10.799 +It's a C library, and this is what gives us + +00:01:10.799 --> 00:01:15.119 +a lot of good features. First, the speed. + +00:01:15.119 --> 00:01:17.119 +Time spent here, 0.6, is essentially + +00:01:17.120 --> 00:01:18.479 +the time that it takes to: + +00:01:18.479 --> 00:01:22.240 +1. convert the Emacs representation of text + +00:01:22.241 --> 00:01:25.040 +into the vterm representation of what is a string, + +00:01:25.041 --> 00:01:27.360 +and 2., into actually displaying that, + +00:01:27.361 --> 00:01:29.520 +and that can take time + +00:01:29.520 --> 00:01:32.240 +if there's fontification involved. + +00:01:32.241 --> 00:01:34.240 +So these are the 0.6 seconds there. + +00:01:34.240 --> 00:01:38.479 +As we say, in ansi-term, that's much more time. + +00:01:38.480 --> 00:01:40.720 +It's much slower. So the terminal will feel + +00:01:40.721 --> 00:01:42.880 +much snappier, much faster. + +00:01:42.880 --> 00:01:46.720 +But that's not the main benefit or the only benefit + +00:01:46.721 --> 00:01:49.759 +of using this external library vterm. + +00:01:49.760 --> 00:01:53.040 +The second big benefit is that + +00:01:53.041 --> 00:01:56.560 +vterm has support for all the escape codes + +00:01:56.560 --> 00:01:58.320 +that xterm has support for, + +00:01:58.321 --> 00:02:01.119 +so vterm is essentially as running xterm + +00:02:01.119 --> 00:02:03.600 +inside an Emacs buffer. So let's see that. + +00:02:03.600 --> 00:02:05.759 +For example, let's start by looking + +00:02:05.760 --> 00:02:08.239 +at the support for colors. + +00:02:08.239 --> 00:02:10.319 +We have support for all the colors out of the box. + +00:02:10.320 --> 00:02:11.840 +We don't have to do anything. + +00:02:11.840 --> 00:02:14.720 +And if we did the same here, well, + +00:02:14.721 --> 00:02:16.800 +we have only 20 colors. + +00:02:16.801 --> 00:02:18.239 +There's a way to get all the colors, + +00:02:18.240 --> 00:02:19.680 +but it's much more involved. + +00:02:19.680 --> 00:02:23.040 +But this is not where vterm shines. + +00:02:23.040 --> 00:02:27.200 +We can run all the commands that we want. + +00:02:27.200 --> 00:02:31.440 +htop, ncdu, everything runs here. + +00:02:31.441 --> 00:02:35.519 +Also this title, it's a fairly complicated + +00:02:35.520 --> 00:02:37.920 +manipulation of the window + +00:02:37.921 --> 00:02:40.879 +and it will not work here. + +00:02:40.879 --> 00:02:42.000 +It just doesn't work actually. + +00:02:42.001 --> 00:02:46.160 +Now the terminal is probably messed up. Yes. + +00:02:46.161 --> 00:02:48.400 +So using this external library + +00:02:48.400 --> 00:02:50.959 +removes the burden from the developers + +00:02:50.959 --> 00:02:52.319 +of having to implement support + +00:02:52.320 --> 00:02:53.280 +for all the escape codes. + +00:02:53.281 --> 00:02:55.360 +We just use those. + +00:02:55.360 --> 00:02:58.480 +So in many ways, running vterm + +00:02:58.480 --> 00:03:01.760 +is running xterm inside Emacs, + +00:03:01.760 --> 00:03:04.159 +but it's better than that because, + +00:03:04.160 --> 00:03:05.840 +since this is an Emacs buffer, + +00:03:05.840 --> 00:03:09.760 +we can enjoy a lot of features from Emacs + +00:03:09.760 --> 00:03:11.360 +as well as a tighter integration + +00:03:11.361 --> 00:03:13.200 +with Emacs itself. + +00:03:13.200 --> 00:03:15.840 +For example, as you see here, + +00:03:15.841 --> 00:03:20.239 +the title of my buffer is from the directory I'm in. + +00:03:20.240 --> 00:03:21.760 +So let's go to my tmp. + +00:03:21.760 --> 00:03:23.440 +The title will change. + +00:03:23.441 --> 00:03:25.920 +So there's information being exchanged + +00:03:25.921 --> 00:03:28.000 +between vterm and Emacs. + +00:03:28.000 --> 00:03:30.000 +And of course, the title is not the only place + +00:03:30.001 --> 00:03:32.000 +where information is exchanged. + +00:03:32.000 --> 00:03:35.920 +I can find a file and I will be in the directory + +00:03:35.920 --> 00:03:37.680 +where my terminal is. + +00:03:37.681 --> 00:03:40.000 +This feature is also available in ansi-term, + +00:03:40.000 --> 00:03:41.360 +and it works also on vterm, + +00:03:41.361 --> 00:03:43.440 +and it follows me. So if I go to tmp, + +00:03:43.441 --> 00:03:44.720 +I'll get the tmp. + +00:03:44.720 --> 00:03:47.120 +If I ssh to a remote server, + +00:03:47.121 --> 00:03:50.239 +it will work also on remote servers as well, + +00:03:50.240 --> 00:03:53.920 +which is a very nice way to edit files remotely + +00:03:53.920 --> 00:03:55.599 +while we're working on a shell. + +00:03:55.600 --> 00:03:59.280 +And second, while vterm is not an Elisp interpreter + +00:03:59.281 --> 00:04:01.200 +like eshell, what we can do is + +00:04:01.201 --> 00:04:04.720 +we can still run Emacs functions. + +00:04:04.721 --> 00:04:06.080 +So for example... + +00:04:06.081 --> 00:04:08.000 +that requires some configuration. + +00:04:08.001 --> 00:04:11.599 +vterm command (message "hi") + +00:04:11.600 --> 00:04:13.120 +as you see there's a "hi" here. + +00:04:13.121 --> 00:04:14.959 +So what I'm doing is I'm executing + +00:04:14.960 --> 00:04:16.239 +the Elisp function hi. + +00:04:16.239 --> 00:04:18.959 +I can drop that and turn it around, + +00:04:18.960 --> 00:04:21.600 +hash function to run Elisp functions. + +00:04:21.601 --> 00:04:24.880 +Or another one, find-file, same. + +00:04:24.880 --> 00:04:27.360 +We call this feature "message passing," + +00:04:27.361 --> 00:04:30.000 +and it requires some configuration + +00:04:30.001 --> 00:04:32.000 +on the Emacs side as well as in the shell side. + +00:04:32.000 --> 00:04:33.440 +It's important to stress + +00:04:33.441 --> 00:04:35.360 +what's the nature of vterm. + +00:04:35.360 --> 00:04:37.919 +For instance, every time I'm sending a key binding, + +00:04:37.920 --> 00:04:40.000 +it's not immediately clear if my intention is + +00:04:40.001 --> 00:04:41.840 +to send it to the shell or to Emacs. + +00:04:41.841 --> 00:04:44.320 +So vterm implements some reasonable defaults, + +00:04:44.320 --> 00:04:46.800 +but at the moment it's mainly packaged + +00:04:46.800 --> 00:04:49.120 +to display characters on a screen. + +00:04:49.120 --> 00:04:50.720 +So for example, if you're using evil, + +00:04:50.721 --> 00:04:52.639 +the editing commands in evil + +00:04:52.640 --> 00:04:54.080 +will not work immediately. + +00:04:54.081 --> 00:04:55.759 +There's some work to be done + +00:04:55.759 --> 00:04:58.160 +and integration can be improved on that side, + +00:04:58.161 --> 00:05:00.240 +but sometimes we really want this to behave + +00:05:00.240 --> 00:05:02.240 +exactly like a Emacs buffer. + +00:05:02.240 --> 00:05:03.680 +We want to be able to search. + +00:05:03.681 --> 00:05:06.639 +If I try to get it to search, + +00:05:06.640 --> 00:05:07.280 +it will not work. + +00:05:07.281 --> 00:05:08.400 +I will send it to the shell. + +00:05:08.401 --> 00:05:11.919 +So to do that, we enabled vterm copy mode. + +00:05:11.920 --> 00:05:14.720 +As you see, copy mode, and now this buffer + +00:05:14.721 --> 00:05:17.039 +is essentially a fundamental buffer. + +00:05:17.039 --> 00:05:21.120 +I can move around. I can search. + +00:05:21.120 --> 00:05:25.520 +So it must have... I can do everything I want. + +00:05:25.521 --> 00:05:26.479 +And there are additional features. + +00:05:26.480 --> 00:05:30.560 +For example, I can jump around all the prompts. + +00:05:30.561 --> 00:05:32.639 +I find this extremely useful, + +00:05:32.639 --> 00:05:35.039 +because I can copy updates from my programs. + +00:05:35.040 --> 00:05:38.320 +What I always have to do is + +00:05:38.321 --> 00:05:41.520 +I have to Google some errors. + +00:05:41.521 --> 00:05:43.120 +So what I do is I select that + +00:05:43.120 --> 00:05:45.120 +and I have my keybinding in Emacs conf, + +00:05:45.121 --> 00:05:48.479 +and I'm Googling what I have to Google. + +00:05:48.480 --> 00:05:51.120 +So this is very nice and if I... + +00:05:51.121 --> 00:05:52.639 +now that I have selected something, + +00:05:52.640 --> 00:05:53.840 +if I just press return, + +00:05:53.841 --> 00:05:56.400 +I will go back to my normal editing mode + +00:05:56.401 --> 00:06:00.160 +with the text copied, so I can paste it back. + +00:06:00.161 --> 00:06:02.720 +So it's a quick way to interact with copy + +00:06:02.721 --> 00:06:05.840 +and interact with the output of a buffer. + +00:06:05.841 --> 00:06:09.120 +So finally, let's discuss how to actually use vterm. + +00:06:09.121 --> 00:06:10.560 +Let's circle back, let's go, + +00:06:10.560 --> 00:06:12.400 +and let's look at the GitHub repo + +00:06:12.400 --> 00:06:14.000 +where development is happening. + +00:06:14.001 --> 00:06:15.520 +vterm is available in MELPA, + +00:06:15.520 --> 00:06:17.759 +but since it's leveraging the power + +00:06:17.760 --> 00:06:18.960 +of an external module, + +00:06:18.960 --> 00:06:20.479 +you must have Emacs compiled + +00:06:20.480 --> 00:06:22.000 +with support for modules, + +00:06:22.000 --> 00:06:25.600 +and many distros like Ubuntu, Debian, + +00:06:25.600 --> 00:06:26.880 +that's not there. So you have to + +00:06:26.881 --> 00:06:29.199 +get Emacs with support for modules: + +00:06:29.200 --> 00:06:31.360 +compiling or getting images somewhere else. + +00:06:31.361 --> 00:06:33.840 +And also, the first time you are going to use this, + +00:06:33.840 --> 00:06:38.960 +which works only on Mac or GNU Linux systems, + +00:06:38.961 --> 00:06:41.759 +Emacs will try to find and compile this module, + +00:06:41.759 --> 00:06:44.240 +so it's important. This requirement is important. + +00:06:44.241 --> 00:06:46.400 +If you're using Windows, well, + +00:06:46.401 --> 00:06:49.199 +it's not available and will not work. + +00:06:49.199 --> 00:06:53.440 +So to conclude, I want to just advertise this page. + +00:06:53.440 --> 00:06:56.240 +If you have problems, look at the issues + +00:06:56.240 --> 00:06:58.240 +and open an issue in case. + +00:06:58.241 --> 00:06:59.199 +We'll try to help you. + +00:06:59.200 --> 00:07:00.800 +We are very excited about vterm, + +00:07:00.800 --> 00:07:02.639 +and I think it's a transformative + +00:07:02.639 --> 00:07:10.319 +terminal experience inside GNU Emacs. -- cgit v1.2.3