V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
jeesk
V2EX  ›  Vim

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

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

    fun do(){

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

    18 replies    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
    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   ·   856 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 77ms · UTC 19:11 · PVG 03:11 · LAX 12:11 · JFK 15:11
    ♥ Do have faith in what you're doing.