summaryrefslogtreecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzola-sbozzolo.vtt
diff options
context:
space:
mode:
Diffstat (limited to '2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzola-sbozzolo.vtt')
-rw-r--r--2020/subtitles/emacsconf-2020--30-a-tour-of-vterm--gabriele-bozzola-sbozzola-sbozzolo.vtt526
1 files changed, 0 insertions, 526 deletions
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.