V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jeesk
V2EX  ›  Vim

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

  •  
  •   jeesk · 2023-03-14 20:31:56 +08:00 · 2974 次点击
    这是一个创建于 380 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 ,回车
    vthe
        6
    vthe  
       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   ·   我们的愿景   ·   实用小工具   ·   1136 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:57 · PVG 06:57 · LAX 15:57 · JFK 18:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.