blob: 49db09890624be3e6e6f4fb8709eb3d174656902 (
plain) (
tree)
|
|
WEBVTT
00:00:00.880 --> 00:00:03.760
hello and welcome to the stock
00:00:03.760 --> 00:00:06.080
the title of the stock is a tour feature
00:00:06.080 --> 00:00:07.919
a fast and fully featured terminal
00:00:07.919 --> 00:00:08.559
emulator
00:00:08.559 --> 00:00:11.840
inside new e-max so let's try to
00:00:11.840 --> 00:00:13.360
understand what we mean with the pass
00:00:13.360 --> 00:00:14.559
and fully featured
00:00:14.559 --> 00:00:17.520
and to do that we'll compare v term with
00:00:17.520 --> 00:00:18.320
the
00:00:18.320 --> 00:00:20.640
packages which are built in Emacs mean
00:00:20.640 --> 00:00:22.400
the term
00:00:22.400 --> 00:00:25.199
so let's let's jump into the v term so
00:00:25.199 --> 00:00:26.720
this is a feature buffer
00:00:26.720 --> 00:00:29.679
and this is a ansi term buffer what I'm
00:00:29.679 --> 00:00:31.519
going to do now is first I'm going to
00:00:31.519 --> 00:00:32.160
prove you
00:00:32.160 --> 00:00:35.760
what we move fast so to do that let me
00:00:35.760 --> 00:00:37.520
open a large file display on screen or
00:00:37.520 --> 00:00:39.280
large file this is about one megabyte of
00:00:39.280 --> 00:00:40.239
data
00:00:40.239 --> 00:00:43.520
and let me time that it takes about 0.6
00:00:43.520 --> 00:00:44.160
seconds
00:00:44.160 --> 00:00:47.200
with feature let's do the same with
00:00:47.200 --> 00:00:49.760
with ancient term well we already
00:00:49.760 --> 00:00:51.520
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:54.559
what's different and
00:00:54.559 --> 00:00:57.360
what is v term exactly so v term is a
00:00:57.360 --> 00:00:58.879
terminal emulator built
00:00:58.879 --> 00:01:01.120
on top of an external library the
00:01:01.120 --> 00:01:02.719
library is called libvi term
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.000
it's a c library and this is what gives
00:01:10.000 --> 00:01:10.799
us
00:01:10.799 --> 00:01:15.119
a lot of good features first the speed
00:01:15.119 --> 00:01:17.280
time spent here 0.6 is essentially the
00:01:17.280 --> 00:01:18.479
time that it takes to
00:01:18.479 --> 00:01:21.520
one convert the emax representation of
00:01:21.520 --> 00:01:22.240
like text
00:01:22.240 --> 00:01:23.840
into the visa and representation of what
00:01:23.840 --> 00:01:26.400
was a string and two into
00:01:26.400 --> 00:01:28.479
actually displaying that and that can
00:01:28.479 --> 00:01:29.520
take time
00:01:29.520 --> 00:01:31.840
if there's a if there's quantification
00:01:31.840 --> 00:01:33.680
involved so these are the 0.6 seconds
00:01:33.680 --> 00:01:34.240
there
00:01:34.240 --> 00:01:36.960
as we say in the in ancestor that's much
00:01:36.960 --> 00:01:37.920
much
00:01:37.920 --> 00:01:39.920
more time it's much slower so the
00:01:39.920 --> 00:01:41.680
terminal will feel much snappier much
00:01:41.680 --> 00:01:42.880
faster
00:01:42.880 --> 00:01:46.079
but that's not the main benefit or the
00:01:46.079 --> 00:01:47.840
only benefit of using this external
00:01:47.840 --> 00:01:48.799
library
00:01:48.799 --> 00:01:52.320
feature the second big benefit
00:01:52.320 --> 00:01:55.439
is that v term has support for all the
00:01:55.439 --> 00:01:56.560
escape codes
00:01:56.560 --> 00:01:59.200
that exterm has support for so v term is
00:01:59.200 --> 00:02:01.119
essentially as running x term
00:02:01.119 --> 00:02:03.600
inside an imax buffer so let's see that
00:02:03.600 --> 00:02:04.799
this for example
00:02:04.799 --> 00:02:07.119
let's start by looking at the support
00:02:07.119 --> 00:02:08.239
for colors
00:02:08.239 --> 00:02:09.920
we have support for all the colors out
00:02:09.920 --> 00:02:11.840
of the box we don't have to do anything
00:02:11.840 --> 00:02:15.040
and if we did the same here well we have
00:02:15.040 --> 00:02:15.680
only
00:02:15.680 --> 00:02:17.920
20 colors there's a way to get all the
00:02:17.920 --> 00:02:19.680
colors but it's much more involved
00:02:19.680 --> 00:02:23.040
but this is not where v term shines
00:02:23.040 --> 00:02:26.000
uh we can run all the commands that we
00:02:26.000 --> 00:02:27.200
want
00:02:27.200 --> 00:02:30.480
h top and cdu
00:02:30.480 --> 00:02:33.040
everything runs here also this title
00:02:33.040 --> 00:02:33.840
it's a
00:02:33.840 --> 00:02:36.400
it's a fairly complicated manipulation
00:02:36.400 --> 00:02:37.040
of
00:02:37.040 --> 00:02:40.879
the window and it will not work here
00:02:40.879 --> 00:02:42.319
it just doesn't work actually now the
00:02:42.319 --> 00:02:44.640
terminal is probably messed up
00:02:44.640 --> 00:02:48.400
yes 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.000
of having to implement
00:02:52.000 --> 00:02:54.000
support for all these cape codes we just
00:02:54.000 --> 00:02:55.360
use those
00:02:55.360 --> 00:02:58.480
so in many ways running veteran
00:02:58.480 --> 00:03:01.760
is us running extern inside a max
00:03:01.760 --> 00:03:04.400
but it's better than that because since
00:03:04.400 --> 00:03:05.840
this is an e-max buffer
00:03:05.840 --> 00:03:08.879
we can enjoy a lot of features from
00:03:08.879 --> 00:03:09.760
Emacs
00:03:09.760 --> 00:03:11.920
as well as a tighter integration with
00:03:11.920 --> 00:03:13.200
e-max itself
00:03:13.200 --> 00:03:16.560
for example as you see here the title of
00:03:16.560 --> 00:03:17.599
my buffer
00:03:17.599 --> 00:03:20.720
is from the director I'm in so let's go
00:03:20.720 --> 00:03:21.760
to my tmp
00:03:21.760 --> 00:03:24.799
the title will change so there's
00:03:24.799 --> 00:03:26.560
information being exchanged between v
00:03:26.560 --> 00:03:28.000
term and index
00:03:28.000 --> 00:03:29.760
and of course the title is not the only
00:03:29.760 --> 00:03:32.000
place where information is exchanged
00:03:32.000 --> 00:03:34.799
I can find a file and I will be in the
00:03:34.799 --> 00:03:35.920
directory
00:03:35.920 --> 00:03:38.239
where my terminal is this feature is
00:03:38.239 --> 00:03:40.000
also available in nc term
00:03:40.000 --> 00:03:41.680
and it works also on b term and it
00:03:41.680 --> 00:03:43.840
follows me so if I go to tmp I'll get
00:03:43.840 --> 00:03:44.720
the tmp
00:03:44.720 --> 00:03:48.000
if I ssh to a remote server it will work
00:03:48.000 --> 00:03:48.640
also
00:03:48.640 --> 00:03:51.120
on remote servers as well which is a
00:03:51.120 --> 00:03:53.920
very nice way to edit files remotely
00:03:53.920 --> 00:03:55.760
while we're working on a shelf and
00:03:55.760 --> 00:03:57.360
second while vterm
00:03:57.360 --> 00:03:59.599
is not an e-lisp interpreter like
00:03:59.599 --> 00:04:02.159
initial what we can do is we can
00:04:02.159 --> 00:04:06.080
still run inbox functions so for example
00:04:06.080 --> 00:04:08.319
that requires some configuration the
00:04:08.319 --> 00:04:10.159
term
00:04:10.159 --> 00:04:12.480
command message I as you see there's a
00:04:12.480 --> 00:04:14.000
higher so what I'm doing
00:04:14.000 --> 00:04:16.239
is I'm executing the eagles function I
00:04:16.239 --> 00:04:17.199
and I can drop that
00:04:17.199 --> 00:04:19.840
and turn it around uh hash function to
00:04:19.840 --> 00:04:20.320
run
00:04:20.320 --> 00:04:24.880
a-list functions or another one file see
00:04:24.880 --> 00:04:27.600
we call this feature message passing and
00:04:27.600 --> 00:04:28.800
it requires
00:04:28.800 --> 00:04:30.880
some configuration on the emac side as
00:04:30.880 --> 00:04:32.000
well as in the shell side
00:04:32.000 --> 00:04:34.000
it's important to stress what's the
00:04:34.000 --> 00:04:35.360
nature of feature
00:04:35.360 --> 00:04:37.360
for instance every time I'm sending a
00:04:37.360 --> 00:04:39.120
key binding it's not immediately clear
00:04:39.120 --> 00:04:40.800
if my intention is to send it to the
00:04:40.800 --> 00:04:42.720
shell or to imax so v term implements
00:04:42.720 --> 00:04:44.320
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:51.199
so for example if you're using evil the
00:04:51.199 --> 00:04:53.600
editing commands in evil will not work
00:04:53.600 --> 00:04:55.759
immediately there's some work to be done
00:04:55.759 --> 00:04:57.840
and integration can be improved on that
00:04:57.840 --> 00:04:58.479
side but
00:04:58.479 --> 00:05:00.240
sometimes we really want this to behave
00:05:00.240 --> 00:05:02.240
exactly like a imax buffer
00:05:02.240 --> 00:05:05.440
we want to be able to search if
00:05:05.440 --> 00:05:07.039
if I try to get it to search it will not
00:05:07.039 --> 00:05:08.880
work I will send it to the shop so to do
00:05:08.880 --> 00:05:09.360
that
00:05:09.360 --> 00:05:12.400
we enabled the term copy mode so as you
00:05:12.400 --> 00:05:12.800
see
00:05:12.800 --> 00:05:15.280
copy mode and now this buffer is
00:05:15.280 --> 00:05:17.039
essentially a fundamental buffer
00:05:17.039 --> 00:05:21.120
I can move around as I can search
00:05:21.120 --> 00:05:24.400
uh so it must have I
00:05:24.400 --> 00:05:25.840
can do everything I want and there are
00:05:25.840 --> 00:05:27.120
additional features for example I can
00:05:27.120 --> 00:05:29.600
jump around
00:05:29.600 --> 00:05:31.440
all the prompts and I find this
00:05:31.440 --> 00:05:32.639
extremely useful
00:05:32.639 --> 00:05:34.400
because I can copy update from my
00:05:34.400 --> 00:05:35.919
programs or
00:05:35.919 --> 00:05:39.199
what I always have to do is I have to
00:05:39.199 --> 00:05:42.400
google some errors so what I do is I
00:05:42.400 --> 00:05:43.120
select that
00:05:43.120 --> 00:05:45.919
and I have my keybinding in maksakov and
00:05:45.919 --> 00:05:46.880
I'm googling
00:05:46.880 --> 00:05:49.199
what I have to google so this is very
00:05:49.199 --> 00:05:50.400
nice and
00:05:50.400 --> 00:05:52.800
if I now that have selected something if
00:05:52.800 --> 00:05:54.400
I just press return I will
00:05:54.400 --> 00:05:57.120
go back to my normal editing mode with
00:05:57.120 --> 00:05:57.440
the
00:05:57.440 --> 00:06:00.400
text copied so I can paste it back so
00:06:00.400 --> 00:06:01.600
it's a quick way to
00:06:01.600 --> 00:06:04.160
interact with copy and interact with uh
00:06:04.160 --> 00:06:06.400
with the output of a buffer so finally
00:06:06.400 --> 00:06:07.840
let's discuss how to actually
00:06:07.840 --> 00:06:10.560
use beta let's circle back and 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.400
where development is happening v term is
00:06:14.400 --> 00:06:15.520
available in velpa
00:06:15.520 --> 00:06:17.919
but since it's leveraging the power of
00:06:17.919 --> 00:06:18.960
an external module
00:06:18.960 --> 00:06:20.639
you must have Emacs compiled with
00:06:20.639 --> 00:06:22.000
support for modules
00:06:22.000 --> 00:06:25.600
and many distros like ubuntu debian
00:06:25.600 --> 00:06:27.199
that's not there so you have to get
00:06:27.199 --> 00:06:29.840
Emacs with support for modules compiling
00:06:29.840 --> 00:06:30.160
or
00:06:30.160 --> 00:06:32.000
getting images somewhere else and also
00:06:32.000 --> 00:06:33.840
the first time you are going to use this
00:06:33.840 --> 00:06:34.400
which
00:06:34.400 --> 00:06:37.440
works only on mac or
00:06:37.440 --> 00:06:40.319
new linux systems Emacs will try to find
00:06:40.319 --> 00:06:41.759
and compile this module
00:06:41.759 --> 00:06:43.680
so it's important this requirement is
00:06:43.680 --> 00:06:45.440
important if you're using windows
00:06:45.440 --> 00:06:47.600
well that's not it's not available and
00:06:47.600 --> 00:06:49.199
will not work
00:06:49.199 --> 00:06:52.560
so to conclude I want to just advertise
00:06:52.560 --> 00:06:53.440
this page
00:06:53.440 --> 00:06:56.240
if you have problems look at the issues
00:06:56.240 --> 00:06:57.120
and
00:06:57.120 --> 00:06:59.039
open unusual in case we'll try to help
00:06:59.039 --> 00:07:00.800
you we are very excited about feature
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 glue imax
|