如何在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';
和维姆?我的意思是我怎么能快速完成
我所做的就是
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'