V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
y
V2EX  ›  分享发现

Redis 作者用一千行代码写了个 terminal 里的文本编辑器

  •  1
     
  •   y · 2016-07-12 10:22:53 +08:00 · 6741 次点击
    这是一个创建于 3057 天前的主题,其中的信息可能已经有所发展或是发生改变。

    antirez 是 Redis 的作者。他花几个小时写了个 terminal 里的文本编辑器的原型。

    纯 C, 没有用任何标准库之外的 library.

    https://github.com/antirez/kilo

    关于这事情的博客介绍在这里

    http://antirez.com/news/108

    挺好玩的,可以试着加点 Vim 的功能练练手。

    第 1 条附言  ·  2016-07-12 10:56:44 +08:00
    亮点,包括语法高亮( C 语言),和搜索功能。 Ctrl-S 存档, Ctrl-Q 退出, Ctrl-F 搜索。

    总体感觉并不平凡。比如一段文本里面有 TAB, 输出的时候要输出几个空格。语法高亮也是,比如 string 里面带有 /**/ 怎么办,都是要解决的问题。
    第 2 条附言  ·  2016-07-12 13:02:27 +08:00

    看这种新的 project 觉得挺受启发的,一千行(加上系统 API)能做那么多事情。

    刚刚提交了个 PR fix 了一个 bug.

    有些希望加上的功能感觉有空可以试试:

    Ctrl-D 删除一行。

    Ctrl-U 撤销修改。(目测比较复杂)

    就怕作者没有维护这个 project 的意思,不处理 pull request 就不好了。

    28 条回复    2016-07-14 09:53:40 +08:00
    anyforever
        1
    anyforever  
       2016-07-12 10:47:53 +08:00
    高手就是高手
    y
        2
    y  
    OP
       2016-07-12 10:56:55 +08:00
    @anyforever 看我附加的亮点。
    ma125125t
        3
    ma125125t  
       2016-07-12 11:46:53 +08:00
    借个地儿问个突然想到的问题, linux 里这些软件万一是同名的怎么处理的?
    megatron
        4
    megatron  
       2016-07-12 11:54:52 +08:00
    in a few hours
    :)
    renzhn
        5
    renzhn  
       2016-07-12 11:55:20 +08:00
    牛逼
    xlvecle
        6
    xlvecle  
       2016-07-12 12:10:15 +08:00
    @renzhn 。。。。。
    liteneo
        7
    liteneo  
       2016-07-12 12:33:30 +08:00 via iPhone
    666
    seerhut
        8
    seerhut  
       2016-07-12 12:37:34 +08:00
    @ma125125t 进发行版的 repo 时会处理的
    liteneo
        9
    liteneo  
       2016-07-12 12:40:58 +08:00 via iPhone
    Test
    fy
        10
    fy  
       2016-07-12 12:42:08 +08:00
    然后遇到 utf-8 卒,正则搜索卒, 233
    y
        11
    y  
    OP
       2016-07-12 15:12:01 +08:00
    @fy 满脑子都是负能量...
    xiahei
        12
    xiahei  
       2016-07-12 15:43:04 +08:00
    跪着看完博客。
    yuelang85
        13
    yuelang85  
       2016-07-12 15:54:41 +08:00
    语法高亮这个很厉害,需要做各种适配的
    changshu
        14
    changshu  
       2016-07-12 15:57:24 +08:00
    几小时一千多行 C , 专注力和执行力真的吓人
    y
        15
    y  
    OP
       2016-07-12 16:08:03 +08:00   ❤️ 1
    @changshu 作者说了,“ taking code from my other two projects, load81 and linenoise ”. 所以有一部分现成的代码。关键是脑子已经准备好了随时能写代码。最初的 git 的 C 代码也就几个文件几千行这样,也要服。
    fy
        16
    fy  
       2016-07-12 16:15:56 +08:00
    @y 玩笑
    y
        17
    y  
    OP
       2016-07-12 16:37:10 +08:00
    @yuelang85 目前做得也有一定问题。主要是佩服作者的执行力,能把复杂问题转化成代码。

    语法高亮这段最复杂,但代码也就 135 行。 https://github.com/antirez/kilo/blob/master/kilo.c#L368-L503
    yuelang85
        18
    yuelang85  
       2016-07-12 19:02:11 +08:00
    @y 这段费代码呀,不难,但是占行数。回头还要有光标控制,快捷键功能,界面代码,滚屏,全都下来,都是量。。。。
    y
        19
    y  
    OP
       2016-07-12 21:26:02 +08:00
    @yuelang85 难。难写得正确(复杂性也是难度的一种)。比如写了个 /* 进入注释, 往后所有行的代码高亮都得变,删掉 *, 又要变回来,在 /* 前面加个 /, 也要改变后面所有的高亮。试了试现在作者并没有做好这些... 再比如 "/*" 这种... 很头疼。
    plqws
        20
    plqws  
       2016-07-12 21:33:42 +08:00
    好像是我看到过的最干净最规范的 c 代码了…可能是项目规模不大的缘故...
    y
        21
    y  
    OP
       2016-07-12 21:39:03 +08:00
    @plqws 那你可以看看 Redis 的代码, 90% 都是这个作者写的。
    plqws
        22
    plqws  
       2016-07-12 21:41:31 +08:00
    @y 刚刚去瞅了一眼,实在是赏心悦目
    y
        23
    y  
    OP
       2016-07-12 21:57:46 +08:00
    @plqws 赏心悦目是原意还是反讽...

    另外 V2EX 啥时候开始支持 doge 表情了...
    plqws
        24
    plqws  
       2016-07-12 21:59:46 +08:00
    @y ……感觉啥褒义词放到现代网络环境都会被曲解,表情是用叫 V2EX Plus 的 Chrome 扩展发的
    y
        25
    y  
    OP
       2016-07-12 22:17:26 +08:00
    @plqws 加了 doge 表情之后很有反讽的味道... 哈哈哈
    airqj
        26
    airqj  
       2016-07-13 17:20:38 +08:00
    三天 1800 个 start
    牛人就是牛人 不得不服.....
    0915240
        27
    0915240  
       2016-07-13 20:43:53 +08:00 via Android
    牛逼
    jedihy
        28
    jedihy  
       2016-07-14 09:53:40 +08:00
    牛!看 redis 源码就知道作者有多牛。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   990 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 19:22 · PVG 03:22 · LAX 11:22 · JFK 14:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.