关于 vim 中一次复制粘贴的询问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jlz52z
V2EX    Vim

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

  •  
  •   jlz52z 2024-07-27 16:04:33 +08:00 3407 次点击
    这是一个创建于 441 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如下面的代码,我想要把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  
       2024-07-27 16:10:34 +08:00
    y7y -> p -> ^v j7 l x
    mylovesaber
        2
    mylovesaber  
       2024-07-27 16:12:40 +08:00
    vim xxx.txt 进入 vim 默认模式
    输入 :set paste 回车(有冒号)会进入编辑模式( i )但是是保留格式的
    复制上面那段信息,然后粘贴

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

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

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

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


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

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

    完成!
    xhzhang
        9
    xhzhang  
       2024-07-27 21:13:09 +08:00
    @jlz52z 你是要复制整行? 用 shift + v 行复制。j 、k 选中多行,再 y 、p 就好了
    ctrl v 块复制,粘贴的时候也是块粘贴,会把其它数据挤开的
    leegradyllljjjj
        10
    leegradyllljjjj  
       2024-07-27 21:17:06 +08:00
    apt install notepad--
    lu5je0
        11
    lu5je0  
       2024-07-28 13:29:49 +08:00
    yGGp
    Willeonly
        12
    Willeonly  
       2024-07-28 14:14:05 +08:00   1
    大写 V ,然后 j/k 选,然后 y ,然后在想要粘贴的地方 p
    zhangjiashu2023
        13
    zhangjiashu2023  
       2024-07-28 18:29:18 +08:00
    你们用的这么麻烦嘛?我 iterm2 下可以直接 vim 然后鼠标选中需要复制的区域 ctrl c 然后再把光标移动到插入的位置然后 i 然后 ctrl v 就粘贴好了
    zhangjiashu2023
        14
    zhangjiashu2023  
       2024-07-28 18:29:46 +08:00
    @zhangjiashu2023 准确来说是 command c 和 command v
    dxdydz
        15
    dxdydz  
       2024-07-28 20:18:56 +08:00
    如果是远程主机的话我在.vimrc 里设置了 set mouse=c ,之后在 termius 设置中打开 select text to copy && right click to paste 然后就可以直接选中复制/右击粘贴到终端和打开的 vim 界面,不需要 CTRL+C/V ,两个主机的剪切板也同步了
    a132811
        16
    a132811  
       2024-07-28 20:30:56 +08:00
    我的方法是使用 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  
    PRO
       2024-07-29 00:40:44 +08:00
    @zhangjiashu2023 有没有可能没鼠标
    Tink
        18
    Tink  
    PRO
       2024-07-29 00:41:03 +08:00   1
    我和 12 楼办法一样
    zhanglintc
        19
    zhanglintc  
       2024-07-30 10:44:47 +08:00
    @Tink #18 我和 18 楼办法一样
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     974 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 19:04 PVG 03:04 LAX 12:04 JFK 15:04
    Do have faith in what you're doing.
    ubao 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