975779964
V2EX  ›  Vim

vim 编辑中文太痛苦了!

  •  1
     
  •   975779964 · Dec 5, 2019 · 14610 views
    This topic created in 2525 days ago, the information mentioned may be changed or developed.

    中文没有空格,e w b t T f F 跳转全都没有用。

    只能老老实实 hjkl 移动 光标,想要改某个词组,不小心按了 e,直接跳到句子末尾去了!

    搜索了 github ,vim chinese 全都是教程或者 是输入法,难道没有人在意这个问题么?

    Supplement 1  ·  Dec 5, 2019
    是我描述 有问题……好多人都注意到输入法上面了……我先说下我的使用场景吧……
    我使用 的是 win10 ,然后用的是 gvim,主要是编辑 markdown 文档( gvim 配插件)和处理小说文本之类( vim g 命令)的
    输入法的问题 gvim 当你在 insert 模式下输入 中文,然后 按 esc ,gvim 自动就帮你弄成英语了。所以输入法的问题在 gvim 下不是问题。
    我主要的问题是楼下所说的分词。如 图 我发不了图…… 我发个 连接吧…… https://user-images.githubusercontent.com/10111/35366479-2406fc80-01bd-11e8-8b72-04f1cd5838b1.gif

    或者你们在浏览器输入框上面 输入这段话 ,当你们按 ctrl+左右 方向键试试 。他就相当于是 vim 的 e 和 b 的功能,但是 在 vim 里面 就不行了,我想要的就是 当你在 vim 里面 按 v b e 的时候 ,光标能根据词组跳转 而不是 按 e 光标直接就跳到 中文句子末尾了。
    还有 按 f t 的时候最好能根据 中文的首字母 来 跳转,不然 f t 功能 在 中文编辑 一点作用都没有……

    这些痛点,想必不是我 一个人有吧, 你们有这些痛点,但是却让我 换一个编辑器…… 我是很喜欢 vim 的这个操作方式,所以不要 让我 换别 的编辑器呀…… 能推荐 给我 一个插件 解决这些 问题就行呀……
    Supplement 2  ·  Dec 5, 2019
    https://github.com/fxsjy/jieba
    我在 github 上面 找到 了一个叫 结巴 中文 分词的 插件 ,但他是 python 写的,不知道有没有厉害 的 vim 大佬 能把他整合到 vim 里面 去……
    70 replies  •  2022-05-02 19:21:12 +08:00
    wd
    wd
    Dec 5, 2019 via iPhone
    1
    https://github.com/cute-jumper/ace-pinyin/blob/master/README.org emacs 有一个...要不换 emacs 用 evil...
    U7Q5tLAex2FI0o0g
    U7Q5tLAex2FI0o0g
    Dec 5, 2019
    2
    额,你为什么要在 vim 上编辑中文?
    一般最多也就是代码里掺杂的中文注释这完全可以接受。
    你该不会是全篇中文文章吧???
    dppd
    dppd
    Dec 5, 2019
    3
    你安装的时候选择中文就好了
    luozic
    luozic
    Dec 5, 2019 via iPhone
    4
    写文章 还是写 markdown ?
    dreamerlv3ex
    dreamerlv3ex
    Dec 5, 2019
    5
    centos vim 7.4

    搜索了 github ,vim chinese 全都是教程或者 是输入法,难道没有人在意这个问题么?
    光标在'搜'字符上
    按下 e 位于'了'
    按下 e 位于'b'
    按下 e 位于','
    按下 e 位于'm'
    按下 e 位于'e'
    按下 e 位于'者'
    按下 e 位于'法'
    按下 e 位于','
    按下 e 位于'么'
    按下 e 位于'?'

    楼主描述的是这样?
    hanxiV2EX
    hanxiV2EX
    Dec 5, 2019
    6
    fcitx 可以设置命令模式自动切换到英文状态。
    jinliming2
    jinliming2
    Dec 5, 2019 via iPhone
    7
    因为中文这种语言的词组很大程度上是看上下文的,你可以了解一下中文分词的基本问题,要准确分词还要看概率频率之类的……

    给一个简单的解决方案:用宏,固定往后跑 2 个字符,这样估计会好用一些……
    telnetning
    telnetning
    Dec 5, 2019
    8
    不少人在某个阶段应该都在意过这个问题,所以有了 vimim,可以一定程度上解决这个问题。
    但是可能一段时间后,大家发现了,为啥我要在 vim 里写中文折磨自己呢,或者形成了自己的编辑惯性,也就不再折腾这种了吧。
    我也是曾经折腾过 vimim,主要是想用 vim 写 markdown,后来明白了,没必要折腾自己,vim 老老实实写代码,markdown 老老实实用各种好用的 md 编辑器就完事了。
    Tumblr
    Tumblr
    Dec 5, 2019
    9
    所以我的代码里习惯用英文写注释。。。
    意外之喜就是,我带的一批人现在的英语词汇量增加了,同时并不那么排斥英文资料了(微软系资料为主,平时就是丢个 en-us 的链接)。以前他们会第一时间用网页翻译,现在对于一些比较短的文章,可以直接看了。
    iCyMind
    iCyMind
    Dec 5, 2019
    10
    没办法, 不支持实时的中文分词.

    不过至少你还可以用 jkhl 定位, 比英文定位慢, 但至少比鼠标快把?
    jdhao
    jdhao
    Dec 5, 2019
    11
    不在 Vim 里使用中文,一般都是用英文
    iCyMind
    iCyMind
    Dec 5, 2019
    12
    不仅你搜到的都是输入法, 甚至你的帖子的回复也有一大部分的输入法, 哈哈哈太讽刺了
    jinliming2
    jinliming2
    Dec 5, 2019
    13
    或者自己数字符,比如往右跳 5 个字,就按 5l,往左跳 7 个字,就按 7h 之类的
    poplar50
    poplar50
    Dec 5, 2019 via Android
    14
    hjkl 也可以 100h 100k 这么用。上下加个 g,基本也还行。
    klaas
    klaas
    Dec 5, 2019
    15
    我还以为只有我有这种烦恼呢
    henices
    henices
    Dec 5, 2019
    16
    为啥不用 markdown 呢,vim 写代码用啊,VNote vim mode 真不错。
    season4675
    season4675
    Dec 5, 2019
    17
    我就一个问题……为啥要写中文……
    iCyMind
    iCyMind
    Dec 5, 2019
    18
    @henices VNote vim mode 支持中文的分词?
    LuffyWong
    LuffyWong
    Dec 5, 2019
    19
    简直不能更痛苦, 写中文就是要中英文切换, 再加上 vim 的模式切换 贼烦
    scriptB0y
    scriptB0y
    Dec 5, 2019
    20
    是的。。。我想一切东西都在 Vim 中写,就中文一直蛋疼
    xpfd
    xpfd
    Dec 5, 2019
    21
    你为啥要用屠龙刀雕豆腐花?
    ysn2233
    ysn2233
    Dec 5, 2019
    22
    不只是 vim,我其他所有能用 vim 模式的编辑器全开了 vim 模式,所以写中文都蛋疼,只能用 vimim 勉强解决一下。
    jingcoco
    jingcoco
    Dec 5, 2019
    23
    你可以用 vscode 远程开发
    sirius4gnu
    sirius4gnu
    Dec 5, 2019
    24
    鉴于英语不行,vim 成功让我养成了不写注释的好习惯。
    Trim21
    Trim21
    Dec 5, 2019 via Android
    25
    @jingcoco vscode 的中文分词支持也不太好…
    shenyuanlaolarou
    shenyuanlaolarou
    Dec 5, 2019 via iPhone
    26
    mac 下有一个可以切换输入法的命令行工具,如果对 vimscript 熟悉的话可以自己写一个插件实现进入 normal 模式就切换到英文,如果不想自己写的话可以去 github 上搜 coc-imselect。这个插件可以实现这个功能,不过要装 coc.nvim。另外 vscode 和 jetbrains 系的 idea 的 vim keymapper 都实现了这个功能。
    Trim21
    Trim21
    Dec 5, 2019 via Android
    27
    这个帖子里楼主说的是分词的问题,不是输入法切换的问题…
    ThomasZ
    ThomasZ
    Dec 5, 2019 via Android
    28
    vim 治好了我中文注释的病。。。
    shenyuanlaolarou
    shenyuanlaolarou
    Dec 5, 2019 via iPhone
    29
    @Trim21 额。。。理解错了
    shenyuanlaolarou
    shenyuanlaolarou
    Dec 5, 2019 via iPhone
    30
    @shenyuanlaolarou 理解错了,请忽略
    agagega
    agagega
    Dec 5, 2019 via iPhone
    31
    我记得 mac 系统好像自带中文分词
    silenceeeee
    silenceeeee
    Dec 5, 2019
    32
    搭车问一下,用 VIM 写代码时,如何快速复制从当前位置往前十几行的某个单词到当前光标所在处啊。感觉怎么都达不到鼠标复制的速度。
    poisedflw
    poisedflw
    Dec 5, 2019
    33
    @silenceeeee 按整行,按区块。或者借助标记位置(各种括号、引号、尖括号)删除内部的东西。
    silenceeeee
    silenceeeee
    Dec 5, 2019
    34
    @poisedflw 我说的是复制,基本上我就是先看一下 relativenumber 然后 nk,然后要么是 easymotion 的 <leader> fs 或者是 fs (这里假设 s 是我需要复制的字符串的首字母)一顿操作才能复制到它。不知道有没有更好的方法,感觉这样好慢啊。
    thinker3
    thinker3
    Dec 5, 2019
    35
    我为此写了一个小小的 swift 程序,按 esc 退出中文输入法
    fps23dot9999
    fps23dot9999
    Dec 5, 2019
    36
    @silenceeeee ), }, ]}, ]], vib, vi], vi}
    :help text-objects
    silenceeeee
    silenceeeee
    Dec 5, 2019
    37
    @fps23dot9999 sorry, 我估计是我表达有误,我说的场景是:当前光标在 100 行,在第 70 行的位置有一个我需要的字符串,我想将这个字符串复制到 100 行来
    tomychen
    tomychen
    Dec 5, 2019
    38
    @silenceeeee
    CTRL+F CTRL+B
    CTRL+D CTRL+U
    Chry3anthemum
    Chry3anthemum
    Dec 5, 2019
    39
    @silenceeeee #37 原文:“@fps23dot9999 sorry, 我估计是我表达有误,我说的场景是:当前光标在 100 行,在第 70 行的位置有一个我需要的字符串,我想将这个字符串复制到 100 行来”
    ======
    回复:
    esc
    :70 或 30k 或 30<up>
    w 到字符串头,v,e 到字符串尾 或 t<某字符>到字符串头,v,t<某字符>到字符串尾
    y
    esc
    :100 或 30j 或 30<down>
    p
    ibeta
    ibeta
    Dec 5, 2019
    40
    以前也是深受其苦,现在好多了
    主要就是我需要随时知道当前输入法是什么,并且可以快速切换到我想要的输入法
    说一下我的方案
    1. 使用 https://www.v2ex.com/t/565667 里面的方法 使用 left-command 切换到英文,right-command 切换成中文
    2. 使用 https://github.com/pqrs-org/ShowyEdge 当前输入法是中文的时候,在左上角显示个红色方块
    quietnight
    quietnight
    Dec 5, 2019❤️1
    41
    emacs 写 latex 跟写小说一样流畅
    silenceeeee
    silenceeeee
    Dec 5, 2019
    42
    @Chry3anthemum 我现在就是这么操作的,用 w,e,t,b 进行定位,感觉超级慢。不如鼠标一下就能精确定位,比较苦恼这个问题。
    waruqi
    waruqi
    Dec 5, 2019 via Android
    43
    还好吧 我平常写文章也是 vim 没感觉出来有啥区别
    975779964
    975779964
    OP
    Dec 5, 2019
    44
    @wd 谢谢你 也有人推荐我用 emacs 了,我现在 vim 都还没学习好呢。我买了本 vim 实用技巧的书。等我把 vim 学习好了,在去看看
    975779964
    975779964
    OP
    Dec 5, 2019
    45
    @littleylv 为什么不能在 vim 下编辑中文啊,我很喜欢 vim 的这种 操作 方式 ,想 更快 的编辑 中文 呀……
    975779964
    975779964
    OP
    Dec 5, 2019
    46
    @dreamerlv3ex 对对对,就是 按照 词组 跳转, 现在的 vim 你在中文下 按 e b 他直接 就按句子 跳转 了,除非 中文句子中间 夹杂 英语 。这样你 修改 某个中文 词组的时候 一点 都不好定位,非常恼火……
    975779964
    975779964
    OP
    Dec 5, 2019
    47
    @hanxiV2EX 不是输入法的问题呀 …… 我描述 有点问题……我改了下……
    975779964
    975779964
    OP
    Dec 5, 2019
    48
    @jinliming2 这是个妥协的方案 …… 但是你在浏览器 下 输入 中文 句子 按 ctrl+-> 或者 ctrl+ <- 方向键,你会发现他会根据 中文 的词组来的呀…… 为什么 vim 连 这样 的功能 都不支持 呢?
    975779964
    975779964
    OP
    Dec 5, 2019
    49
    @Tumblr 也不是写代码呀…… ,我很喜欢 vim 的操作方式 ,想把他带进中文 编辑 ……唉
    975779964
    975779964
    OP
    Dec 5, 2019
    50
    @iCyMind em …… 这样比的话 是的,但是没有更好 的解决方法 或者 插件 么?现在的问题是 github 上面我搜索不到(可能我用不好 github 搜索) 。大家 或多或少 都有这个问题吧, 但是 看 大家 都忽略了这个问题……
    975779964
    975779964
    OP
    Dec 5, 2019
    51
    @iCyMind 可能也是我描述 有问题,我在 win 下用 gvim 输入法他会自动 切换 的(当你按 esc 的时候) ,这个对我来说不是问题呀…… 可能对他们来说 用 linux 或者 别的系统 可能是问题吧……
    975779964
    975779964
    OP
    Dec 5, 2019
    52
    @jinliming2 这样 还不如用鼠标 呢…… 我想 应该有更好 的解决方法 ……
    975779964
    975779964
    OP
    Dec 5, 2019
    53
    @klaas 咱俩 都有这个问题呀,希望能有个 vim 大佬 看到 这个需求 ,写一个插件 来解决 我们的痛点!而不是说 唉呀,vim 中文 分词 支持 不好,你们 别用 vim 编辑 中文 了!
    975779964
    975779964
    OP
    Dec 5, 2019
    54
    @season4675 使用 vim 也不一定是写代码 的啊,我是看 善用佳软的文章 入的 vim 坑, 他也可以 披处理 文字 之类 的
    975779964
    975779964
    OP
    Dec 5, 2019
    55
    @agagega 不止 mac ,win10 好像 也是这样的 支持 中文 分词的 ,但是 vim 就不支持……
    975779964
    975779964
    OP
    Dec 5, 2019
    56
    @Trim21 对对对,我 追加了一下描述 ,里面 有一个 gif 的图,大佬 可以看一下……
    975779964
    975779964
    OP
    Dec 5, 2019
    57
    @waruqi 你看着 e b w f t 这些好用 的光标移动 在中文 下 全都 废了 ,然后 只能用 hjkl 一点一点的移动 光标……这样能忍呀?
    Jirajine
    Jirajine
    Dec 5, 2019 via Android
    58
    vim 支持 Python 的,你可以用那个中文分词库开发个 vim 插件。
    stanjia
    stanjia
    Dec 6, 2019
    59
    Vim 中写中文有什么问题么???
    cursorzz
    cursorzz
    Dec 6, 2019
    60
    挺好奇截图里面那个日文是怎么做到的
    njutree
    njutree
    Dec 6, 2019
    61
    其实我倒一直有个问题就是 vim 遇到驼峰的英文不能跳很难受,不知道有没有插件可以支持。eg. RuleNameInterval 在 'R' 位置按 w 可以调到 'N'
    skyrem
    skyrem
    Dec 6, 2019
    62
    我猜测 vim 本质上是根据空格来区分英文词组的,这很容易做到,日文的分词也仅限于中文字符和假名之间
    f 键可以定位字符位置,中英文都可以,但中文这么做操作很繁琐
    如楼上有人提到的,中文的分词是考虑上下文的,你搜到的结巴那么你可以看下结巴的示例句子
    要想集成中文分词功能我觉得是挺不容易的一件事
    现阶段也许小红点是个不错的替代方案
    RemiliaForever
    RemiliaForever
    Dec 6, 2019
    63
    @njutree chaoren/vim-wordmotion
    jdhao
    jdhao
    Dec 7, 2019
    64
    @silenceeeee 如果是当前 buffer 的单词,可以在 insert 模式输入 ctrl-x,ctrl-n 或 ctrl-x,ctrl-p,自动补全当前 buffer 的单词,详细参考 :h i_CTRL-X_CTRL-P
    silenceeeee
    silenceeeee
    Dec 9, 2019
    65
    @jdhao 好的,我了解下。
    gbin
    gbin
    May 9, 2020
    66
    @telnetning 看到头像还以为是我回复的。。。
    lazypanda
    lazypanda
    Nov 24, 2021
    67
    别想了,别在 vim 中输入中文了,vim 不适合干这个,老老实实用 vim 写代码吧
    975779964
    975779964
    OP
    Nov 25, 2021
    68
    @fighter9010 写代码注释,mardown 文档 这些都要中文输入啊……
    OrangeGege
    OrangeGege
    May 2, 2022
    69
    原来不止我🈶️这个问题. 我已经妥协了. 写代码就用英文注释. 写 MD 文档,讲究着使用 hjkl 了
    975779964
    975779964
    OP
    May 2, 2022
    70
    @OrangeGege 我现在是 用的 ideavim ,有个 插件 类似 easymotion 但是他支持 中文 ascii 跳转 的

    https://i.bmp.ovh/imgs/2022/05/02/79b5a501aaa16483.png

    支持中文首字母 ,并且 可以 连续 按键
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3371 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 97ms · UTC 10:36 · PVG 18:36 · LAX 02:36 · JFK 05:36
    ♥ Do have faith in what you're doing.