如何在VIM的{}中多行导入函数?

如何在VIM的{}中多行导入函数?,vim,Vim,很抱歉标题不好,但是 用这个代码 import { amethod, methodb, methodc } from '../../utils/mockData'; 这是怎么做的 import { amethod, methodb, methodc } from '../../utils/mockData'; 和维姆?我的意思是我怎么能快速完成 我所做的就是 转到第一个方法 按回车键 转到方法的末尾 按回车键 转到第二种方法。 6. 维姆太慢了。我们可以在VIM中快速执行此操作

很抱歉标题不好,但是

用这个代码

import { amethod, methodb, methodc } from '../../utils/mockData';
这是怎么做的

import {
  amethod,
  methodb,
  methodc
} from '../../utils/mockData';
和维姆?我的意思是我怎么能快速完成

我所做的就是

  • 转到第一个方法
  • 按回车键
  • 转到方法的末尾
  • 按回车键
  • 转到第二种方法。 6.
  • 维姆太慢了。我们可以在VIM中快速执行此操作吗?我想我可以用我的鼠标快得多:(

    f;r;。;。;。
    
    我觉得不是特别慢。也许有点太重复了

    这里有一个稍微聪明(但可能不是那么聪明)的方法:

    ciB               " change in brackets
    <CR><CR>          " insert two carriage returns
    <Up>              " move up one line
    <C-r>"            " insert previous content of brackets
    <Esc>             " leave insert mode
    :s/,/,\r/g<CR>    " put each symbol on its own line
    =iB               " re-indent the content of brackets
    
    ciB”括号中的更改
    “插入两个回车
    “上移一行
    “”插入括号中以前的内容
    “离开插入模式
    :s/,/,\r/g“将每个符号放在各自的行上
    =iB“重新缩进括号中的内容
    
    为方便起见,可以对其进行映射:

    nnoremap <key> ciB<CR><CR><Up><C-r>"<Esc>:s/,/,\r/g<CR>=iB
    
    nnoremap ciB:s/,/,\r/g=iB
    

    或者,您也可以寻找一个合适的插件,它可以优雅地处理角落案例。

    @romainl给出了一个很好的答案,但您也可以使用replace来处理这个特定案例:

    :%s/\([,{]\)/\1\n/g
    
    我有这个

    import {
        amethod,
        methodb,
        methodc
        } from '../../utils/mockData';
    
    使用此选项:

    :%s/\v\{\zs( \w+,?)+ \ze}/\=substitute(submatch(0), " ", "\n\t", "g")
    
    
    \v ............ very magic regex (avoid many backslashes)
    {  ............ literal {
    \zs ........... vim trick that marks the start of the pattern
    (  ............ start of regex group 1
    <Space> ....... literal space inside group 1
    \w+ ........... one word or more
    ,?  ........... optional coma
    +  ............ quantifier for the group (at least one)
    <Space>
    \ze ........... end of our vim search
    
    :%s/\v\{\zs(\w+,?)+\ze}/\=替换(子匹配(0),“”,“\n\t”,“g”)
    \v………非常神奇的正则表达式(避免许多反斜杠)
    {…………文字{
    \zs……….标志着模式开始的vim技巧
    (……………开始使用正则表达式组1
    ……第1组中的文字空间
    \w+………一个或多个单词
    ,?………可选昏迷
    +组的量词(至少一个)
    \ze…………我们的vim搜索结束
    

    替换函数有三个部分,如正常vim替换,子匹配(0)对应于我们的正则表达式,因此我们在正则表达式中用一个空格替换一个换行符和两个制表符。

    光标位于第1行和第1列,您可以在正常模式下按此键:

    f 4@=';r^M'
    
    然后按回车键


    注意:对于
    ^M
    您可以按
    Ctrl-v
    ,然后
    Enter

    使用格式插件并设置格式样式?例如,这不适合您吗?
    :%s/\v\{\zs( \w+,?)+ \ze}/\=substitute(submatch(0), " ", "\n\t", "g")
    
    
    \v ............ very magic regex (avoid many backslashes)
    {  ............ literal {
    \zs ........... vim trick that marks the start of the pattern
    (  ............ start of regex group 1
    <Space> ....... literal space inside group 1
    \w+ ........... one word or more
    ,?  ........... optional coma
    +  ............ quantifier for the group (at least one)
    <Space>
    \ze ........... end of our vim search
    
    f 4@=';r^M'