vim 如何实现快速插入换行? - V2EX
jeesk
V2EX    Vim

vim 如何实现快速插入换行?

  •  
  •   jeesk Mar 14, 2023 4619 views
    This topic created in 1154 days ago, the information mentioned may be changed or developed.
    1. 比如我写下 fun do(){}, 这个时候我光标在{cursor} 处于普通模式, 我要如何快的实现?

    fun do(){

    cursor } 这种效果呢? 问了 chatgpt ,方案好像没有没有效果。 麻烦大佬指点一下。

    18 replies  strong class="snow">  2023-03-15 21:00:39 +08:00
    DTCPSS
        1
    DTCPSS  
       Mar 14, 2023
    o
    DTCPSS
        2
    DTCPSS  
       Mar 14, 2023
    抱歉,看错了
    TK4E
        3
    TK4E  
       Mar 14, 2023
    设置下快捷键就好了呀 大概这样
    map('n', 'N', 'i<CR>')
    EyebrowsWhite
        4
    EyebrowsWhite  
       Mar 14, 2023
    neovim 我用这个插件,https://github.com/windwp/nvim-autopairs ,vim 应该也有类似的,你可以找找
    nightwitch
        5
    nightwitch  
       Mar 14, 2023 via Android
    i ,回车
    Mbb38C3HtyZydTt7
        6
    Mbb38C3HtyZydTt7  
       Mar 14, 2023
    好问题,我之前在使用 helix 的时候也遇到了这个问题。解决方法就是定位到 `{` 或 `}`,然后在 `a` 或者 `i` 吧,这样肯定不能说是快速。可能 vim 会有专用的快捷键。如果经常使用的话, 建议按照上面的设置快捷键。
    wizardyhnr
        7
    wizardyhnr  
       Mar 14, 2023
    最近在搞 Python 语法输入写 Rust 。
    你这个可以加大概如下到 vimrc ,记忆不一定准确,就是把你的输入按键映射到:<CR>
    inoremap :<CR> {}<ESC>hi<CR>
    DrakeXiang
        8
    a href="/member/DrakeXiang" class="dark">DrakeXiang  
       Mar 15, 2023
    我觉得这种不算是痛点,空闲又好用的键去绑定个组合的话浪费了,如果多个键去组合实现的话实际上还是按了多次键,感觉没有质的提升,要实在受不了那就直接用 snippet 插件,我的话手动回车,或者直接开始写,一行写完保存的时候自动格式化
    jeesk
        9
    jeesk  
    OP
       Mar 15, 2023
    参考前面大佬们的回复:
    map <F5> i<CR><CR><ESC><CAPS>o

    {cursor} 当光标在花括号里面的时候,首先执行插入模式,然后执行 2 次换行,在退出。这个时候我想执行 shift + o, 向上换行? shift +o ,如何放到 map 映射里面?
    povvoq
        10
    povvoq  
       Mar 15, 2023
    我会绑定普通模式下,0 是行首,9 是行尾
    所以我的操作是 esc (如有必要),9 ,i ,enter
    kite12580
        11
    kite12580  
       Mar 15, 2023
    @jeesk nnoremap <F5> i<CR><CR><ESC>O
    shxxy
        12
    shxxy  
       Mar 15, 2023 via Android
    有空格就放空格上面 r<CR>
    没空格就只能老老实实 i<CR><ESC>
    hxy100
        13
    hxy100  
       Mar 15, 2023
    尝试在 ~/.vimrc 中加入以下代码,实现单、双引号自动补齐,小括号、大括号、中括号自动补全
    ------

    " 括号自动补全
    inoremap ( ()<Esc>i
    inoremap [ []<Esc>i
    inoremap { {<CR>}<Esc>O
    autocmd Syntax html,vim inoremap < <lt>><Esc>i| inoremap > <c-r>=ClosePair('>')<CR>
    inoremap ) <c-r>=ClosePair(')')<CR>
    inoremap ] <c-r>=ClosePair(']')<CR>
    inoremap } <c-r>=CloseBracket()<CR>
    inoremap " <c-r>=QuoteDelim('"')<CR>
    inoremap ' <c-r>=QuoteDelim("'")<CR>


    function ClosePair(char)
    if getline('.')[col('.') - 1] == a:char
    return "\<Right>"
    else
    return a:char
    endif
    endf


    function CloseBracket()
    if match(getline(line('.') + 1), '\s*}') < 0
    return "\<CR>}"
    else
    return "\<Esc>j0f}a"
    endif
    endf


    function QuoteDelim(char)
    let line = getline('.')
    let col = col('.')
    if line[col - 2] == "\\"
    "Inserting a quoted quotation mark into the string
    return a:char
    elseif line[col - 1] == a:char
    "Escaping out of the string
    return "\<Right>"
    else
    "Starting a string
    return a:char.a:char."\<Esc>i"
    endif
    endf
    andy2415
        14
    andy2415  
       Mar 15, 2023
    @jeesk #9 直接大写 O 就可以了
    jiekeop
        15
    jiekeop  
       Mar 15, 2023
    @hxy100 是不是贴错了一些,我放进去输入一个" 提示报错
    =QuoteDelim('"')
    Error detected while processing function QuoteDelim:
    line 3:
    E114: Missing quote: "\"
    Press ENTER or type command to continue
    zhuisui
        16
    zhuisui  
       Mar 15, 2023
    我的快捷键 `nnoremap <Leader>o o<ESC>`
    不论是在哪个字符位置, 直接下面起一行
    hxy100
        17
    hxy100  
       Mar 15, 2023
    @jiekeop 确实少了一行,在最上面加上下面这行即可:

    set nocompatible

    --------
    另:github gist 我也传了一份,现在已测试过单独加载这个.vimrc 配置文件没问题
    https://gist.github.com/hexiyou/fef4060308a7f7ad3f04d10c9f392e5f
    timothyye
        18
    timothyye  
       Mar 15, 2023
    大写 O 就行
    About     Help     Advertise     Blog     API     FAQ     Solana     1023 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 66ms UTC 22:33 PVG 06:33 LAX 15:33 JFK 18:33
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86