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

51 天前
 jlz52z

如下面的代码,我想要把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) {}
 * };
 */
1922 次点击
所在节点    Vim
19 条回复
putin541
51 天前
y7y -> p -> ^v j7 l x
mylovesaber
51 天前
vim xxx.txt 进入 vim 默认模式
输入 :set paste 回车(有冒号)会进入编辑模式( i )但是是保留格式的
复制上面那段信息,然后粘贴

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

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

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

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


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

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

完成!
xhzhang
51 天前
@jlz52z 你是要复制整行? 用 shift + v 行复制。j 、k 选中多行,再 y 、p 就好了
ctrl v 块复制,粘贴的时候也是块粘贴,会把其它数据挤开的
leegradyllljjjj
51 天前
apt install notepad--
lu5je0
50 天前
yGGp
Willeonly
50 天前
大写 V ,然后 j/k 选,然后 y ,然后在想要粘贴的地方 p
zhangjiashu2023
50 天前
你们用的这么麻烦嘛?我 iterm2 下可以直接 vim 然后鼠标选中需要复制的区域 ctrl c 然后再把光标移动到插入的位置然后 i 然后 ctrl v 就粘贴好了
zhangjiashu2023
50 天前
@zhangjiashu2023 准确来说是 command c 和 command v
dxdydz
50 天前
如果是远程主机的话我在.vimrc 里设置了 set mouse=c ,之后在 termius 设置中打开 select text to copy && right click to paste 然后就可以直接选中复制/右击粘贴到终端和打开的 vim 界面,不需要 CTRL+C/V ,两个主机的剪切板也同步了
a132811
50 天前
我的方法是使用 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
50 天前
@zhangjiashu2023 有没有可能没鼠标
Tink
50 天前
我和 12 楼办法一样
zhanglintc
48 天前
@Tink #18 我和 18 楼办法一样

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1060537

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX