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

关于 vim 中一次复制粘贴的询问

  •  
  •   jlz52z · 42 天前 · 1884 次点击
    这是一个创建于 42 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如下面的代码,我想要把struct ListNode这个结构体给复制粘贴到下面,应该怎样操作

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode() : val(0), next(nullptr) {}
     *     ListNode(int x) : val(x), next(nullptr) {}
     *     ListNode(int x, ListNode *next) : val(x), next(next) {}
     * };
     */
    
    19 条回复    2024-07-30 10:44:47 +08:00
    putin541
        1
    putin541  
       42 天前
    y7y -> p -> ^v j7 l x
    mylovesaber
        2
    mylovesaber  
       42 天前
    vim xxx.txt 进入 vim 默认模式
    输入 :set paste 回车(有冒号)会进入编辑模式( i )但是是保留格式的
    复制上面那段信息,然后粘贴

    实际不同系统不同版本 vim 表现可能不同,粘贴的话开头会丢失几个字符,保险起见建议使用 nano 编辑

    nano xxx.txt 进入编辑界面
    复制上面那段信息,然后粘贴,默认就是完整粘贴,不需要作任何其他操作

    ctrl+x 保存:
    如果文本没编辑过,就会直接退出
    如果文本有编辑过,就会先问你是否保存,按 y 确认保存,然后让你选择保存的文件绝对路径,一般编辑不需要改路径所以直接回车即可。

    任何组合键搞错了,都可以 ctrl+c 取消


    我个人用 nano 频率远高于 vim ,很多简单的操作比 vim 实用得多。
    zzzzzzzzzp
        3
    zzzzzzzzzp  
       42 天前
    跟一楼操作习惯一样,y 再 p ,ctrl+v+I 删掉*
    Scarb
        4
    Scarb  
       42 天前
    可以用 ctrl+v 开启块状选择模式
    ctrl + v -> 6j $ y -> G p
    xntzmk
        5
    xntzmk  
       42 天前
    先 zc 折叠,然后 visual 模式复制粘贴
    jlz52z
        6
    jlz52z  
    OP
       42 天前
    @Scarb #4 但是我用块状选择模式下选中并用 y 复制后,再 p 的话会直接覆盖掉原有文本,请问您有这样的问题吗😣
    jheroy
        7
    jheroy  
       42 天前
    感觉是注释符号格式用的不太好, 要用段落注释就只在段落前后加/**/就行了不要每行加个星号,如果想每行都加注释符号就直接用// 反正都是用注释插件自动加的, 这样的话如果使用的段落注释直接复制粘贴就行,如果使用的行注释就复制粘贴在一键取消注释就好了。想这样用段落注释又在每行前加星号的格式不能带来任何好处。
    ihmily
        8
    ihmily  
       42 天前
    #2 二楼正解

    第一步打开文件 vim test.txt
    第二步 :set paste (注意开头冒号)
    第三步 按下 i 进入编辑模式
    第四步 使用 shift + insert 组合键 粘贴

    完成!
    xhzhang
        9
    xhzhang  
       42 天前
    @jlz52z 你是要复制整行? 用 shift + v 行复制。j 、k 选中多行,再 y 、p 就好了
    ctrl v 块复制,粘贴的时候也是块粘贴,会把其它数据挤开的
    leegradyllljjjj
        10
    leegradyllljjjj  
       42 天前
    apt install notepad--
    lu5je0
        11
    lu5je0  
       41 天前
    yGGp
    Willeonly
        12
    Willeonly  
       41 天前   ❤️ 1
    大写 V ,然后 j/k 选,然后 y ,然后在想要粘贴的地方 p
    zhangjiashu2023
        13
    zhangjiashu2023  
       41 天前
    你们用的这么麻烦嘛?我 iterm2 下可以直接 vim 然后鼠标选中需要复制的区域 ctrl c 然后再把光标移动到插入的位置然后 i 然后 ctrl v 就粘贴好了
    zhangjiashu2023
        14
    zhangjiashu2023  
       41 天前
    @zhangjiashu2023 准确来说是 command c 和 command v
    dxdydz
        15
    dxdydz  
       41 天前
    如果是远程主机的话我在.vimrc 里设置了 set mouse=c ,之后在 termius 设置中打开 select text to copy && right click to paste 然后就可以直接选中复制/右击粘贴到终端和打开的 vim 界面,不需要 CTRL+C/V ,两个主机的剪切板也同步了
    a132811
        16
    a132811  
       41 天前
    我的方法是使用 map 按键映射: 将 command+c 映射到 "+y 复制到系统粘贴板,command+s 映射到保存

    """"""""""""""""""
    " Copy Quit Save Select
    " config iTerm2 keys: Esc+Ac, Esc+As, Esc+Aa
    " (注意:mac iterm2 中必须要改键,否则 vim/nvim 无法响应 command+c command+s )
    " mac vim 参考: https://stackoverflow.com/questions/23606892/vim-keyboard-mapping-problems-on-mac-osx
    """""""""""""""""""""
    " Quit
    nnoremap <C-q> :qa<CR>

    " Copy
    vnoremap <M-A>c "+y

    " Save
    nnoremap <M-A>s :up<CR>
    inoremap <M-A>s <C-o>:up<CR>

    " Select whole content
    nnoremap <M-A>a ggVG

    --------------------------------------
    不想改键的话,就映射到其它 vim 能响应的按键

    nnoremap <F2> "+p
    inoremap <F2> <C-o>"+p
    vnoremap <F2> "+y
    ----------------------------
    这样做了后,visual 模式选中、鼠标选中后,都可以按 command+c 复制到系统粘贴板
    ---------------------------------------------------------------------------------------------------
    BTW:
    楼上提到的`:set paste`  每次要敲一下命令我觉得麻烦,操作完后还要恢复`:set nopaste`( paste 模式下自动编辑缩进会被关闭).
    即使使用`:set pastetoggle=<F10> ` 也只是还是麻烦,况且 nvim 还不支持这个选项
    Tink
        17
    Tink  
       41 天前
    @zhangjiashu2023 有没有可能没鼠标
    Tink
        18
    Tink  
       41 天前   ❤️ 1
    我和 12 楼办法一样
    zhanglintc
        19
    zhanglintc  
       40 天前
    @Tink #18 我和 18 楼办法一样
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2436 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 03:43 · PVG 11:43 · LAX 20:43 · JFK 23:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.