vim 如何实现快速插入换行? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jeesk
V2EX    Vim

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

  •  
  •   jeesk 2023-03-14 20:31:56 +08:00 4146 次点击
    这是一个创建于 947 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 比如我写下 fun do(){}, 这个时候我光标在{cursor} 处于普通模式, 我要如何快的实现?

    fun do(){

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

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

    {cursor} 当光标在花括号里面的时候,首先执行插入模式,然后执行 2 次换行,在退出。这个时候我想执行 shift + o, 向上换行? shift +o ,如何放到 map 映射里面?
    pkokp8
        10
    pkokp8  
       2023-03-15 02:49:24 +08:00
    我会绑定普通模式下,0 是行首,9 是行尾
    所以我的操作是 esc (如有必要),9 ,i ,enter
    kite12580
        11
    kite12580  
       2023-03-15 03:24:35 +08:00
    @jeesk nnoremap <F5> i<CR><CR><ESC>O
    qwq11
        12
    qwq11  
       2023-03-15 05:51:49 +08:00 via Android
    有空格就放空格上面 r<CR>
    没空格就只能老老实实 i<CR><ESC>
    hxy100
        13
    hxy100  
       2023-03-15 08:04:46 +08:00
    尝试在 ~/.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  
       2023-03-15 09:32:07 +08:00
    @jeesk #9 直接大写 O 就可以了
    jiekeop
        15
    jiekeop  
       2023-03-15 11:02:12 +08:00
    @hxy100 是不是贴错了一些,我放进去输入一个" 提示报错
    =QuoteDelim('"')
    Error detected while processing function QuoteDelim:
    line 3:
    E114: Missing quote: "\"
    Press ENTER or type command to continue
    zhuisui
        16
    zhuisui  
       2023-03-15 11:41:28 +08:00
    我的快捷键 `nnoremap <Leader>o o<ESC>`
    不论是在哪个字符位置, 直接下面起一行
    hxy100
        17
    hxy100  
       2023-03-15 12:46:04 +08:00
    @jiekeop 确实少了一行,在最上面加上下面这行即可:

    set nocompatible

    --------
    另:github gist 我也传了一份,现在已测试过单独加载这个.vimrc 配置文件没问题
    https://gist.github.com/hexiyou/fef4060308a7f7ad3f04d10c9f392e5f
    timothyye
        18
    timothyye  
       2023-03-15 21:00:39 +08:00
    大写 O 就行
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     895 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 20:07 PVG 04:07 LAX 13:07 JFK 16:07
    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