vim 怎么在:后面复制东西 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
amiwrong123
V2EX    程序员

vim 怎么在:后面复制东西

  •  
  •   amiwrong123 2023-07-30 11:59:35 +08:00 3699 次点击
    这是一个创建于 883 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如我用 vim 打开了一个文件,文件内容有:

    source ./build/define.sh ... 

    然后我输入:vsp ./build/define.sh,就可以分屏打开这个文件,只是在这个过程中,我用到了鼠标。我是先鼠标双击了./build/define.sh部分,使得光标已经包住了这个部分,然后使用鼠标中键复制到:vsp 的后面。(当然,我也可以手敲一遍./build/define.sh

    但是我觉得这样用鼠标有点不舒服,但是网上搜了一下,没搜到解决方法(感觉我搜的关键词可能不对)。我就是想全程用键盘解决这个复制粘贴的过程。

    求各位大佬不吝赐教。

    19 条回复    2023-07-30 19:29:55 +08:00
    SpiderXiantang
        1
    SpiderXiantang  
       2023-07-30 12:14:26 +08:00   1
    : vsp 然后光标 到 ./build/define.sh 上 gf 跳转到 ./build/define.sh
    mabelrussell
        2
    mabelrussell  
       2023-07-30 12:14:52 +08:00   1
    光标停留在 ./build/define.sh 任意单词上,然后在 :vsp 后面键入 ctrl+r ctrl+f
    SpiderXiantang
        3
    SpiderXiantang  
       2023-07-30 12:15:09 +08:00
    :gf
    SpiderXiantang
        4
    SpiderXiantang  
       2023-07-30 12:15:22 +08:00
    :h gf
    amiwrong123
        5
    amiwrong123  
    OP
       2023-07-30 12:20:05 +08:00
    @mabelrussell
    谢谢,好用
    harttle
        6
    harttle  
       203-07-30 12:20:45 +08:00 via iPhone   1
    可以这样搜一下插件:go to file, go to selection 也可以手写个脚本。下面介绍对这个 case 怎么不用鼠标:
    1. 复制文件名到寄存器:光标挪到.输入 y$
    2. 粘贴到 command line 模式:输入:vsp 后,按 Ctrl+r ,再输入英文”(需要按着 shift ,抱歉我的 iOS 输入法只能发出来中文引号……)

    手头没电脑,大意就是这样。双引号是匿名寄存器的名字,Ctrl+r 是命令模式粘贴。你也可以复制到其它寄存器。
    amiwrong123
        7
    amiwrong123  
    OP
       2023-07-30 12:20:57 +08:00
    @SpiderXiantang
    我好像没用。输入:vsp 后,光标就只能在冒号后面了呀,怎么做到 光标到 ./build/define.sh
    harttle
        8
    harttle  
       2023-07-30 12:22:25 +08:00 via iPhone
    牛逼,原来 gf 直接就有,学习了。
    amiwrong123
        9
    amiwrong123  
    OP
       2023-07-30 12:26:19 +08:00
    @SpiderXiantang
    好吧,原来是 光标移动到路径上,然后按 gf ,就可以直接跳转。不过就没法分屏看了。
    amiwrong123
        10
    amiwrong123  
    OP
       2023-07-30 12:27:00 +08:00
    @SpiderXiantang
    好吧,我懂了,先分屏打开同一个文件,再 gf 。哈哈,谢谢。
    amiwrong123
        11
    amiwrong123  
    OP
       2023-07-30 12:34:52 +08:00
    @harttle
    你这个我也试了,是好用的。用 y 的话,还可以更确切的控制 复制的内容。
    towry
        12
    towry  
       2023-07-30 12:48:06 +08:00
    @amiwrong123 你先将光标移动到文件路径上面去啊,然后 :vsp <C-R><C-F>。
    运行 `:h <C-F>` 查看帮助。
    SpiderXiantang
        13
    SpiderXiantang  
       2023-07-30 13:08:05 +08:00
    光标移动可以使用 f/F/t/T
    SpiderXiantang
        14
    SpiderXiantang  
       2023-07-30 13:10:38 +08:00   1
    &t=399s&ab_channel=ThePrimeagen
    coldle
        15
    coldle  
       2023-07-30 13:17:39 +08:00
    主要就是通过<c-r>指令粘贴寄存器内容, 针对你标题的需求就是输入`<c-r>"`, 因为复制的内容在这个`"`寄存器里
    SpiderXiantang
        16
    SpiderXiantang  
       2023-07-30 13:20:36 +08:00
    @SpiderXiantang :vsp<CR>fbgf
    jzdxeb
        17
    jzdxeb  
       2023-07-30 16:35:49 +08:00 via iPhone
    v 选中 字符 y
    :vs crlt+r 0 回车
    amiwrong123
        18
    amiwrong123  
    OP
       2023-07-30 18:39:30 +08:00
    @SpiderXiantang
    还是帖子里的这个内容,我先用:vsp 分屏打开同一个文件,然后 gf 进入了./build/define.sh 的内容,但./build/define.sh 是一个只读文件,但是我又在 insert 模式下修改了一些东西,但这些修改我不想更新到文件里的。

    此时我使用:bd 的话,就会提示 no write since last change for buffer 2(add ! to override)。老哥问下这个怎么解决啊

    因为文件中其实有这样的内容:
    source ./build/define1.sh
    source ./build/define2.sh

    目前就是想,先进入看 define1 的内容,再回到当前文件,再进入看 define2 的内容。只是在看 define1 的时候,我改了东西。

    网上搜了一下,这些:b 命令是关于到缓冲区的,但是理解不是很深刻。
    SpiderXiantang
        19
    SpiderXiantang  
       2023-07-30 19:29:55 +08:00   1
    > 此时我使用:bd 的话,就会提示 no write since last change for buffer 2(add ! to override)。老哥问下这个怎么解决啊
    :q!

    > 目前就是想,先进入看 define1 的内容,再回到当前文件,再进入看 define2 的内容。只是在看 define1 的时候,我改了东西。

    先 :set nohidden
    光标到 define1 gf 然后 Ctrl O 回到上一个 buffer 再移动光标到 define2 再 gf

    buffer 你就当成 缓存就行了,只不过有些隐藏了有些就是你正在看的。

    可以先过一下 vimtutor
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3629 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 05:08 PVG 13:08 LAX 21:08 JFK 00:08
    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