From c14a238f5fe9eee405bc658ff42f102a195ceb26 Mon Sep 17 00:00:00 2001 From: Balakrishnan Balasubramanian Date: Mon, 24 Jul 2023 23:54:51 -0400 Subject: [PATCH] add cast, tags --- content/posts/vim-stt.md | 46 ++++++--- layouts/_default/single.html | 15 ++- static/casts/vimstt.cast | 184 +++++++++++++++++++++++++++++++++++ 3 files changed, 228 insertions(+), 17 deletions(-) create mode 100644 static/casts/vimstt.cast diff --git a/content/posts/vim-stt.md b/content/posts/vim-stt.md index bf41f5f..5780093 100644 --- a/content/posts/vim-stt.md +++ b/content/posts/vim-stt.md @@ -1,24 +1,30 @@ --- title: Vim Send To Terminal date: 2023-07-15T20:18:03-04:00 +asciinema: true +tags: + - vim +categories: + - development --- ### Semi automatic scripts with vim `:terminal` -For a long time, I used the below to send current line to vim's `:terminal` +Sometimes, fully automating a task is not worth the effort. So I end up running +a set of commands usually from a cheat sheet text file slightly modifying the +arguments each time. I used the below in vim to send line under cursor to vim's +`:terminal` open in a split ```vim :call term_list()[0]->term_sendkeys(getline('.') .. "\") ``` +To send another line `@:` and then for every other line `@@`. This works because, last +command run is stored in `register :` and the last macro executed using `@` is +stored in `register @`. -This is very useful if you have a text file with complex shell commands. To run -again, `@:` and then again, `@@`. This works because, last command run is -stored in `register :` and the last macro executed using `@` is stored in -`register @`. And then to run another day, do `:call te` to recall -from vim's command history. - -Since this was very useful, I then wrapped it in a function and added a mapping +To do the same another day, `:call te` to recall from vim's command +history. Or better, add a function and mapping. ```vim def SendToTerminal() @@ -32,14 +38,16 @@ enddef nnoremap s call SendToTerminal() ``` -### Adding more features +### More cool features -So far good for shell commands. But when working with python, had to send a -block of functions to the `ipython` shell. So added support for range of lines. -But then when sending a range of lines to shell, sometimes there had to be a -small delay (sleep) between commands so that the previous command can complete -and not eat the rest of commands. Then finally added support for sending `ctrl` -characters like `ctrl c`, `ctrl l` +For most use-cases that was enough. However added a few more nice features +which is very helpful when you need it + +1. Support sending a range of lines (visual selection) at a time. E.g. Send a + function block to a python shell +2. Add a delay between lines in milliseconds. This is useful when the previous + command reads from standard input and takes some time to complete +3. Support sending `ctrl` characters like `ctrl d`, `ctrl c` etc, ```vim vim9script @@ -72,6 +80,8 @@ vnoremap s :SendToTerm nnoremap s :SendToTerm ``` +### More cool mapping + Wouldn't it be nice to just double-click commands with mouse? Like a simple GUI! ;) ```vim @@ -93,7 +103,11 @@ autocmd BufNewFile,BufRead cheat.sh { } ``` -### Demo! +### Demo + +{{< asciinema key="vimstt" >}} + +### Getting the scripts ### What about neovim/tmux/screen? diff --git a/layouts/_default/single.html b/layouts/_default/single.html index c952f33..cbf3012 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -4,7 +4,20 @@ {{ define "main" }}

{{ .Title }}

-

+

+ {{ if .Params.tags }} + | + {{range .Params.tags}} + {{ . }} + {{end}} + {{end}} + {{ if .Params.categories }} + | + {{range .Params.categories}} + {{ . }} + {{end}} + {{end}} +

{{ .Content }}
{{ end }} diff --git a/static/casts/vimstt.cast b/static/casts/vimstt.cast new file mode 100644 index 0000000..5d33c18 --- /dev/null +++ b/static/casts/vimstt.cast @@ -0,0 +1,184 @@ +{"version": 2, "width": 105, "height": 27, "timestamp": 1690255394, "env": {"SHELL": "/bin/zsh", "TERM": "tmux-256color"}} +[0.603476, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] +[0.605686, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[44mbalki@archlinux\u001b[49m \u001b[1m\u001b[32m~/projects/mine/vimfun/stt\r\n\r\u001b[37m % \u001b[0m\u001b[37m\u001b[39m\u001b[49m\u001b[K\u001b[?2004h"] +[1.043556, "o", "b"] +[1.123276, "o", "\bba"] +[1.203174, "o", "t"] +[1.301279, "o", " "] +[1.613306, "o", "c"] +[1.691404, "o", "o"] +[1.76925, "o", "m"] +[1.917246, "o", "m"] +[2.287072, "o", "o"] +[2.369433, "o", "n"] +[2.529079, "o", "."] +[2.807484, "o", "v"] +[2.887561, "o", "i"] +[2.987485, "o", "m"] +[3.570353, "o", "\u001b[?2004l\r\r\n"] +[3.58573, "o", "\r\u001b[38;5;238m───────┬─────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[m\r\n \u001b[38;5;238m│ \u001b[0mFile: \u001b[1mcommon.vim\u001b[0m\u001b[m\r\n\u001b[38;5;238m───────┼─────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[m\r\n\u001b[38;5;238m 1\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[m\r\n\u001b[38;5;238m 2\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;5;81mlet\u001b[0m\u001b[38;5;231m \u001b[0m\u001b[38;5;231mg:mapleader\u001b[0m\u001b[38;5;231m = \u001b[0m\u001b[38;5;186m' '\u001b[0m\u001b[m\r\n\u001b[38;5;238m 3\u001b[0m \u001b[38;5;238m│\u001b[0m \u001b[38;5;81mset\u001b[0m\u001b[38;5;231m splitbelow splitright\u001b[0m\u001b[m\r\n\u001b[38;5;238m───────┴─────────────────────────────────────────────────────────────────────────────────────────────────\u001b[0m\u001b[m\r\n\r\u001b[K"] +[3.587155, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] +[3.589198, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[44mbalki@archlinux\u001b[49m \u001b[1m\u001b[32m~/projects/mine/vimfun/stt\r\n\r\u001b[37m % \u001b[0m\u001b[37m\u001b[39m\u001b[49m\u001b[K\u001b[?2004h"] +[4.995693, "o", "v"] +[5.055642, "o", "\bvi"] +[5.174006, "o", "m"] +[5.273744, "o", " "] +[5.41173, "o", "-"] +[5.571713, "o", "-"] +[5.753233, "o", "c"] +[5.931673, "o", "l"] +[6.089803, "o", "e"] +[6.16969, "o", "a"] +[6.331837, "o", "n"] +[6.47983, "o", " "] +[6.557859, "o", "-"] +[6.813152, "o", "S"] +[6.984113, "o", " "] +[7.224383, "o", "c"] +[7.326254, "o", "o"] +[7.446336, "o", "m"] +[7.588254, "o", "m"] +[7.810388, "o", "o"] +[7.930429, "o", "n"] +[8.108401, "o", "."] +[8.462427, "o", "v"] +[8.541417, "o", "i"] +[8.608111, "o", "m"] +[9.234495, "o", " "] +[9.534188, "o", "-"] +[9.784079, "o", "S"] +[10.408508, "o", " "] +[10.528223, "o", "s"] +[10.686292, "o", "t"] +[10.830104, "o", "t"] +[11.008242, "o", "."] +[11.245051, "o", "v"] +[11.390101, "o", "i"] +[11.488703, "o", "m"] +[12.704646, "o", "\u001b[?2004l\r\r\n"] +[12.71955, "o", "\u001b[?1000h\u001b[?1049h\u001b[?1h\u001b=\u001b[?2004h"] +[12.720463, "o", "\u001b[1;27r\u001b[27m\u001b[24m\u001b[23m\u001b[0m\u001b[H\u001b[J\u001b[2;1H▽\u001b[6n\u001b[2;1H \u001b[3;1H\u001bPzz\u001b\\\u001b[0%m\u001b[6n\u001b[3;1H \u001b[1;1H\u001b[>c"] +[12.720681, "o", "\u001b[?25l\u001b[2;1H\u001b[94m~ \u001b[3;1H~ \u001b[4;1H~ \u001b[5;1H~ \u001b[6;1H~ \u001b[7;1H~ \u001b[8;1H~ \u001b[9;1H~ \u001b[10;1H~ \u001b[11;1H~ \u001b[12;1H~ \u001b[13;1H~ \u001b[14;1H~ \u001b[15;1H~ \u001b[16;1H~ \u001b[17;1H~ \u001b[18;1H~ \u001b[19;1H~ "] +[12.720799, "o", "\u001b[20;1H~ \u001b[21;1H~ \u001b[22;1H~ \u001b[23;1H~ \u001b[24;1H~ \u001b[25;1H~ \u001b[26;1H~ \u001b[0m\u001b[27;88H0,0-1\u001b[9CAll\u001b[8;45HVIM - Vi IMproved\u001b[10;45Hversion 9.0.1676\u001b[11;41Hby Bram Moolenaar et al.\u001b[12;32HVim is open source and freely distributable\u001b[14;39HHelp poor children in Uganda!\u001b[15;30Htype :help iccf\u001b[34m\u001b[0m for information \u001b[17;30Htype :q\u001b[34m\u001b[0m to exit \u001b[18;30Htype :help\u001b[34m\u001b[0m or \u001b[34m\u001b[0m for on-line help\u001b[19;30Htype :help version9\u001b[34m\u001b[0m for version info\u001b[1;1H\u001b[34h\u001b[?25h"] +[14.428684, "o", "\u001b[?25l\u001b[27;78H:\u001b[1;1H\u001b[27;78H\u001b[K\u001b[27;1H:\u001b[?1000l\u001b[34h\u001b[?25h"] +[14.830782, "o", "e"] +[15.026614, "o", "d"] +[15.106625, "o", "i"] +[15.204778, "o", "t"] +[15.268723, "o", " "] +[15.848928, "o", "c"] +[15.968866, "o", "h"] +[16.026805, "o", "e"] +[16.106825, "o", "a"] +[16.346622, "o", "t"] +[16.586891, "o", "."] +[16.724942, "o", "s"] +[16.824854, "o", "h"] +[17.483213, "o", "\r"] +[17.484646, "o", "\u001b[?1000h\u001b[?25l\"cheat.sh\" \u001b[27;12H\u001b[K\u001b[27;12H6L, 57B"] +[17.493031, "o", "\u001b[1;1H\u001b[38;5;130mecho\u001b[0m\u001b[31m hi\u001b[0m\r\ndate\u001b[2;5H\u001b[K\u001b[3;1HVIMST \u001b[38;5;130msleep\u001b[0m \u001b[31m4000\u001b[0m\u001b[3;17H\u001b[K\u001b[4;1Hdate\u001b[4;5H\u001b[K\u001b[5;1H\u001b[38;5;130mecho\u001b[0m\u001b[31m bye\u001b[0m\u001b[5;9H\u001b[K\u001b[6;1HVIMST ctrl l\u001b[6;13H\u001b[K\u001b[8;45H\u001b[94m \u001b[10;45H \u001b[11;41H \u001b[12;32H \u001b[14;39H \u001b[15;30H \u001b[17;30H \u001b[18;30H \u001b[19;30H \u001b[0m\u001b[27;88H1,1\u001b[11CAll\u001b[1;1H\u001b[34h\u001b[?25h"] +[18.57496, "o", "\u001b[?25l\u001b[27;78H:\u001b[1;1H\u001b[27;1H\u001b[K\u001b[27;1H:\u001b[?1000l\u001b[34h\u001b[?25h"] +[18.747096, "o", "v"] +[18.865071, "o", "e"] +[18.965219, "o", "r"] +[19.145075, "o", "t"] +[19.341239, "o", " "] +[19.567871, "o", "t"] +[19.627258, "o", "e"] +[19.745251, "o", "r"] +[19.960829, "o", "m"] +[20.101664, "o", "i"] +[20.221785, "o", "n"] +[20.319265, "o", "a"] +[20.459327, "o", "l"] +[20.793599, "o", "\r"] +[20.793953, "o", "\u001b[?1000h\u001b[?25l"] +[20.797471, "o", "\u001b[1;54H\b\u001b[7m|\u001b[2;53H|\u001b[3;53H|\u001b[4;53H|\u001b[5;53H|\u001b[6;53H|\u001b[7;53H|\u001b[8;53H|\u001b[9;53H|\u001b[10;53H|\u001b[11;53H|\u001b[12;53H|\u001b[13;53H|\u001b[14;53H|\u001b[15;53H|\u001b[16;53H|\u001b[17;53H|\u001b[18;53H|\u001b[19;53H|\u001b[20;53H|\u001b[21;53H|\u001b[22;53H|\u001b[23;53H|\u001b[24;53H|\u001b[25;53H|\r\ncheat.sh 1,1 All \u001b[0m\u001b[1;54H \u001b[2;54H \u001b[3;54H \u001b[4;54H \u001b[5;54H \u001b[6;54H \u001b[7;54H \u001b[8;54H \u001b[9;54H \u001b[10;54H \u001b[11;54H \u001b[12;54H \u001b[13;54H \u001b[14;54H \u001b[15;54H \u001b[16;54H \u001b[17;54H \u001b[18;54H \u001b[19;54H \u001b[20;54H \u001b[21;54H \u001b[22;54H \u001b[23;54H \u001b[24;54H \u001b[25;54H \u001b[26;54H\u001b[1m\u001b[97m\u001b[42m!/bin/zsh [running] 0,0-1 All\u001b[1;54H\u001b[34h\u001b[?25h"] +[21.340332, "o", "\u001b[?25l\u001b[0m\u001b[27;95H^W\u001b[1;54H\u001b[34h\u001b[?25h"] +[21.396446, "o", "\u001b[?25l\u001b[1C\u001b[34h\u001b[?25h\u001b[50C\u001b[1;54H\u001b[1C\b\u001b[?25l\u001b[34h\u001b[?25h"] +[21.398352, "o", "\u001b[?25l\u001b[15C\u001b[34h\u001b[?25h\u001b[1C\u001b[26C\u001b[1;54H\u001b[2;54H\u001b[3C"] +[21.398702, "o", "\u001b[?25l\u001b[1;54H\u001b[44mbalki@archlinux\u001b[0m\u001b[1C\u001b[1m\u001b[32m~/projects/mine/vimfun/stt\u001b[0m\u001b[2;54H\u001b[1m\u001b[37m % \u001b[34h\u001b[?25h"] +[21.739615, "o", "\u001b[?25l\u001b[0m\u001b[27;95H \u001b[2;57H\u001b[27;95H^Wh\u001b[2;57H"] +[21.739691, "o", "\u001b[27;95H \u001b[1;1H\u001b[26;1H\u001b[1m\u001b[7mcheat.sh 1,1 All \u001b[0m\u001b[97m\u001b[42m!/bin/zsh [running] 1,1 Top\u001b[1;1H\u001b[34h\u001b[?25h"] +[22.89177, "o", "\u001b[?25l\u001b[0m\u001b[27;95H<20>\u001b[1;1H\u001b[34h\u001b[?25h"] +[22.931714, "o", "\u001b[?25l\u001b[27;95H \u001b[1;1H\u001b[?1000l\u001b[?1000h\u001b[34h\u001b[?25h"] +[22.933412, "o", "\u001b[?25l\u001b[2;57Hecho hi\u001b[1;1H\u001b[34h\u001b[?25h"] +[22.936354, "o", "\u001b[?25l\u001b[3;54Hhi\u001b[1;1H\u001b[34h\u001b[?25h"] +[22.94211, "o", "\u001b[?25l\u001b[4;54H\u001b[44mbalki@archlinux\u001b[0m\u001b[1C\u001b[1m\u001b[32m~/projects/mine/vimfun/stt\u001b[0m\u001b[5;54H\u001b[1m\u001b[37m % \u001b[1;1H\u001b[34h\u001b[?25h"] +[24.507692, "o", "\u001b[?25l\u001b[0m\u001b[27;95HV\u001b[1;1H"] +[24.508117, "o", "\u001b[27;95H1\u001b[1;1H\u001b[1C\u001b[38;5;130m\u001b[47mcho\u001b[0m\u001b[31m\u001b[47m hi\u001b[0m\u001b[47m \u001b[0m\u001b[27;1H\u001b[1m-- VISUAL LINE --\u001b[0m\u001b[27;95H\u001b[K\u001b[27;95H1\u001b[1;1H\u001b[34h\u001b[?25h"] +[24.789755, "o", "\u001b[?25l\u001b[27;95Hj\u001b[1;1H"] +[24.790102, "o", "\u001b[27;95H2\u001b[2;1H\u001b[1;1H\u001b[38;5;130m\u001b[47me\u001b[0m\r\nd\u001b[47mate \u001b[0m\u001b[26;35H\u001b[1m\u001b[7m2\u001b[2;1H\u001b[34h\u001b[?25h"] +[25.077917, "o", "\u001b[?25l\u001b[0m\u001b[27;95Hj\u001b[2;1H"] +[25.078442, "o", "\u001b[27;95H3\u001b[3;1H\u001b[2;1H\u001b[47md\r\n\u001b[0mV\u001b[47mIMST \u001b[0m\u001b[38;5;130m\u001b[47msleep\u001b[0m\u001b[47m \u001b[0m\u001b[31m\u001b[47m4000\u001b[0m\u001b[47m \u001b[0m\u001b[26;35H\u001b[1m\u001b[7m3\u001b[3;1H\u001b[34h\u001b[?25h"] +[25.353911, "o", "\u001b[?25l\u001b[0m\u001b[27;95Hj\u001b[3;1H"] +[25.354276, "o", "\u001b[27;95H4\u001b[4;1H\u001b[3;1H\u001b[47mV\r\n\u001b[0md\u001b[47mate \u001b[0m\u001b[26;35H\u001b[1m\u001b[7m4\u001b[4;1H\u001b[34h\u001b[?25h"] +[25.781257, "o", "\u001b[?25l\u001b[0m\u001b[27;95Hj\u001b[4;1H"] +[25.781502, "o", "\u001b[27;95H5\u001b[5;1H\u001b[4;1H\u001b[47md\u001b[0m\u001b[5;2H\u001b[38;5;130m\u001b[47mcho\u001b[0m\u001b[31m\u001b[47m bye\u001b[0m\u001b[47m \u001b[0m\u001b[26;35H\u001b[1m\u001b[7m5\u001b[5;1H\u001b[34h\u001b[?25h"] +[26.178059, "o", "\u001b[?25l\u001b[0m\u001b[27;95H<20>\u001b[5;1H\u001b[34h\u001b[?25h"] +[26.238921, "o", "\u001b[?25l\u001b[27;95H5 \u001b[5;1H\u001b[27;95H \u001b[1;1H\u001b[?1000l\u001b[?1000h\u001b[38;5;130mecho\u001b[0m\u001b[31m hi\u001b[0m \r\ndate \r\nVIMST \u001b[38;5;130msleep\u001b[0m \u001b[31m4000\u001b[0m \r\ndate \u001b[5;2H\u001b[38;5;130mcho\u001b[0m\u001b[31m bye\u001b[0m \u001b[27;1H\u001b[K\u001b[26;35H\u001b[1m\u001b[7m1\u001b[1;1H\u001b[34h\u001b[?25h"] +[26.239565, "o", "\u001b[?25l\u001b[0m\u001b[5;57Hecho hi\u001b[1;1H\u001b[34h\u001b[?25h"] +[26.240481, "o", "\u001b[?25l\u001b[6;54Hhi\u001b[1;1H\u001b[34h\u001b[?25h"] +[26.246317, "o", "\u001b[?25l\u001b[7;54H\u001b[44mbalki@archlinux\u001b[0m\u001b[1C\u001b[1m\u001b[32m~/projects/mine/vimfun/stt\u001b[0m\u001b[8;54H\u001b[1m\u001b[37m % \u001b[0mdate\u001b[1;1H\u001b[34h\u001b[?25h\u001b[?25l\u001b[34h\u001b[?25h"] +[26.250645, "o", "\u001b[?25l\u001b[9;54HMon 24 Jul 2023 11:23:41 PM EDT\u001b[1;1H\u001b[34h\u001b[?25h"] +[26.251354, "o", "\u001b[?25l\u001b[34h\u001b[?25h"] +[26.256797, "o", "\u001b[?25l\u001b[10;54H\u001b[44mbalki@archlinux\u001b[0m\u001b[1C\u001b[1m\u001b[32m~/projects/mine/vimfun/stt\u001b[0m\u001b[11;54H\u001b[1m\u001b[37m % \u001b[1;1H\u001b[34h\u001b[?25h"] +[30.242604, "o", "\u001b[?25l\u001b[34h\u001b[?25h"] +[30.2437, "o", "\u001b[?25l\u001b[0m\u001b[11;57Hdate\u001b[1;1H\u001b[34h\u001b[?25h\u001b[?25l\u001b[34h\u001b[?25h"] +[30.24826, "o", "\u001b[?25l\u001b[12;54HMon 24 Jul 2023 11:23:45 PM EDT\u001b[1;1H\u001b[34h\u001b[?25h"] +[30.248916, "o", "\u001b[?25l\u001b[34h\u001b[?25h"] +[30.254193, "o", "\u001b[?25l\u001b[13;54H\u001b[44mbalki@archlinux\u001b[0m\u001b[1C\u001b[1m\u001b[32m~/projects/mine/vimfun/stt\u001b[0m\u001b[14;54H\u001b[1m\u001b[37m % \u001b[0mecho\u001b[1;1H\u001b[34h\u001b[?25h"] +[30.254912, "o", "\u001b[?25l\u001b[14;62Hbye\u001b[1;1H\u001b[34h\u001b[?25h"] +[30.255543, "o", "\u001b[?25l\u001b[15;54Hbye\u001b[1;1H\u001b[34h\u001b[?25h"] +[30.260783, "o", "\u001b[?25l\u001b[16;54H\u001b[44mbalki@archlinux\u001b[0m\u001b[1C\u001b[1m\u001b[32m~/projects/mine/vimfun/stt\u001b[0m\u001b[17;54H\u001b[1m\u001b[37m % \u001b[1;1H\u001b[34h\u001b[?25h"] +[32.366676, "o", "\u001b[?25l\u001b[0m\u001b[27;95HG\u001b[1;1H\u001b[27;95H \u001b[6;1H\u001b[26;35H\u001b[1m\u001b[7m6\u001b[6;1H\u001b[34h\u001b[?25h"] +[33.622721, "o", "\u001b[?25l\u001b[0m\u001b[27;95Hk\u001b[6;1H\u001b[27;95H \u001b[5;1H\u001b[26;35H\u001b[1m\u001b[7m5\u001b[5;1H\u001b[34h\u001b[?25h"] +[33.804893, "o", "\u001b[?25l\u001b[0m\u001b[27;95Hk\u001b[5;1H\u001b[27;95H \u001b[4;1H\u001b[26;35H\u001b[1m\u001b[7m4\u001b[4;1H\u001b[34h\u001b[?25h"] +[38.012689, "o", "\u001b[?25l\u001b[26;35H6,8\u001b[6;8H\u001b[34h\u001b[?25h"] +[38.359024, "o", "\u001b[?1000l\u001b[?1000h\u001b[?25l\u001b[34h\u001b[?25h"] +[38.360913, "o", "\u001b[?25l\u001b[0m\u001b[2;57H \u001b[3;54H \u001b[4;54H \u001b[5;54H \u001b[6;54H \u001b[7;54H \u001b[8;54H \u001b[9;54H \u001b[10;54H \u001b[11;54H \u001b[12;54H \u001b[13;54H \u001b[14;54H \u001b[15;54H \u001b[16;54H \u001b[17;54H \u001b[6;8H\u001b[34h\u001b[?25h"] +[39.454289, "o", "\u001b[?25l\u001b[26;35H\u001b[1m\u001b[7m5\u001b[5;8H\u001b[34h\u001b[?25h"] +[39.618716, "o", "\u001b[?1000l\u001b[?1000h\u001b[?25l\u001b[34h\u001b[?25h"] +[39.620149, "o", "\u001b[?25l\u001b[0m\u001b[2;57Hecho bye\u001b[5;8H\u001b[34h\u001b[?25h"] +[39.621315, "o", "\u001b[?25l\u001b[3;54Hbye\u001b[5;8H\u001b[34h\u001b[?25h"] +[39.623263, "o", "\u001b[?25l\u001b[4;54H\u001b[44mbalki@archlinux\u001b[0m\u001b[1C\u001b[1m\u001b[32m~/projects/mine/vimfun/stt\u001b[0m\u001b[5;54H\u001b[1m\u001b[37m % \u001b[5;8H\u001b[34h\u001b[?25h"] +[40.77026, "o", "\u001b[?25l\u001b[0m\u001b[26;35H\u001b[1m\u001b[7m1,7\u001b[1;7H\u001b[34h\u001b[?25h"] +[40.93504, "o", "\u001b[?1000l\u001b[?1000h\u001b[?25l\u001b[34h\u001b[?25h"] +[40.936345, "o", "\u001b[?25l\u001b[0m\u001b[5;57Hecho hi\u001b[1;7H\u001b[34h\u001b[?25h"] +[40.937653, "o", "\u001b[?25l\u001b[6;54Hhi\u001b[1;7H\u001b[34h\u001b[?25h"] +[40.943521, "o", "\u001b[?25l\u001b[7;54H\u001b[44mbalki@archlinux\u001b[0m\u001b[1C\u001b[1m\u001b[32m~/projects/mine/vimfun/stt\u001b[0m\u001b[8;54H\u001b[1m\u001b[37m % \u001b[1;7H\u001b[34h\u001b[?25h"] +[42.629357, "o", "\u001b[?25l\u001b[0m\u001b[26;35H\u001b[1m\u001b[7m6,12\u001b[6;12H\u001b[34h\u001b[?25h"] +[44.032006, "o", "\u001b[?25l\u001b[0m\u001b[27;95H:\u001b[6;12H\u001b[27;95H\u001b[K\u001b[27;1H:\u001b[?1000l\u001b[34h\u001b[?25h"] +[44.193796, "o", "q"] +[44.393755, "o", "a"] +[44.71981, "o", "!"] +[45.462189, "o", "\r\u001b[?1000h\u001b[?25l\u001b[?1000l\u001b[?2004l"] +[45.462284, "o", "\u001b[27;1H\u001b[K\u001b[27;1H\u001b[?2004l\u001b[?1l\u001b>\u001b[?1049l\u001b[34h\u001b[?25h"] +[45.464866, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] +[45.470145, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[44mbalki@archlinux\u001b[49m \u001b[1m\u001b[32m~/projects/mine/vimfun/stt\r\n\r\u001b[37m % \u001b[0m\u001b[37m\u001b[39m\u001b[49m\u001b[K\u001b[?2004h"] +[47.152206, "o", ":"] +[47.614152, "o", "\b: "] +[47.812179, "o", "T"] +[47.892206, "o", "h"] +[48.044315, "o", "a"] +[48.102131, "o", "n"] +[48.202197, "o", "k"] +[48.320023, "o", "s"] +[48.460466, "o", " "] +[48.540361, "o", "f"] +[48.618256, "o", "o"] +[48.718252, "o", "r"] +[48.778222, "o", " "] +[49.134702, "o", "w"] +[49.234434, "o", "a"] +[49.310933, "o", "t"] +[49.596789, "o", "c"] +[49.734453, "o", "h"] +[49.834509, "o", "i"] +[49.952548, "o", "n"] +[50.03251, "o", "g"] +[50.352787, "o", "!"] +[50.909101, "o", "\u001b[?2004l\r\r\n"] +[50.914851, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] +[50.916752, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[44mbalki@archlinux\u001b[49m \u001b[1m\u001b[32m~/projects/mine/vimfun/stt\r\n\r\u001b[37m % \u001b[0m\u001b[37m\u001b[39m\u001b[49m\u001b[K\u001b[?2004h"] +[51.490522, "o", "\u001b[?2004l\r\r\n"]