[Terminal] deepin终端在使用vi编辑时,右键没有复制功能。
Tofloor
poster avatar
琉璃
deepin
2023-08-15 23:01
Author

deepin终端在其他情况下右键都是有复制功能的。但是,deepin终端在使用vi编辑时,右键没有复制功能。用vi打开文本然后快速查看一些内容并复制是很常用的,强烈建议修改。

less、more命令看到的文档内容都有复制选项,只有vim没有。

image.png

Reply Favorite View the author
All Replies
fuuko
deepin
2023-08-15 23:03
#1

vim的强大之处在于你可以自己写插件支持一些奇怪的功能

Reply View the author
LuijpCN
deepin
2023-08-15 23:20
#2

要不然换 nano 吧,比vim门槛低得多

Reply View the author
安洛
deepin
2023-08-16 00:15
#3

用开启了clipboard编译选项的vim(比如gvim)试试?

Reply View the author
琉璃
deepin
2023-08-16 01:05
#4
LuijpCN

要不然换 nano 吧,比vim门槛低得多

图形界面下肯定有很多种方式打开文本文档。命令行下,完全可以用less命令来替代。

vim用习惯了。感觉有时候在命令行,比在图形界面的文本编辑器方便。但是我觉得在vim模式下没有复制,应该是个bug,会特别别扭,影响使用心情。

Reply View the author
琉璃
deepin
2023-08-16 01:07
#5
安洛

用开启了clipboard编译选项的vim(比如gvim)试试?

您好,您说的gvim是什么?Linux下也有gvim吗?我只在windows下用过gvim。

Reply View the author
LuijpCN
deepin
2023-08-16 01:09
#6
琉璃

图形界面下肯定有很多种方式打开文本文档。命令行下,完全可以用less命令来替代。

vim用习惯了。感觉有时候在命令行,比在图形界面的文本编辑器方便。但是我觉得在vim模式下没有复制,应该是个bug,会特别别扭,影响使用心情。

我记得 vim 复制的正规玩法应该是通过剪贴板插件,然后 y 复制,p 粘贴吧

Reply View the author
琉璃
deepin
2023-08-16 01:50
#7
LuijpCN

我记得 vim 复制的正规玩法应该是通过剪贴板插件,然后 y 复制,p 粘贴吧

y 和 p这种复制和粘贴都只是在vi内部,并没有到剪切板。要想在剪切板中使用,好像只能是“复制”、“粘贴”。

Reply View the author
LuijpCN
deepin
2023-08-16 02:07
#8
琉璃

y 和 p这种复制和粘贴都只是在vi内部,并没有到剪切板。要想在剪切板中使用,好像只能是“复制”、“粘贴”。

看了一下,deepin 默认的这个 vim 确实没有启用 clipboard。可以安装 neovim,这个可以直接用 "+y 命令将内容复制到系统剪贴板。

Reply View the author
安洛
deepin
2023-08-16 03:24
#9
琉璃

您好,您说的gvim是什么?Linux下也有gvim吗?我只在windows下用过gvim。

Linux下也有gvim的。gvim实际上可以统称vim的所有gui版本,在linux下gvim一般指vim-gtk。在deepin里面的包名应该是 vim-gtk3。它里面包含了vim的所有功能,同时额外提供了一个图形界面。不过最关键的是它默认启用clipboard编译选项,可以访问系统剪贴板寄存器。

Reply View the author
137******61
deepin
2023-08-16 05:15
#10

寄存器(剪切板)操作:"x

  • 输入"在状态行右侧显示",再输入寄存器名称字符x,在状态行右侧显示"x
  • VIM有多个寄存器(剪切板),复制或删除的文本都暂存在寄存器中。

寄存器名称

"、0-9、a-z、A-Z、-、*、+、.、:、%、/、#、_

  • 小写字母:新的内容替代旧内容
  • 大写字母:在相应小写字母为名称的寄存器尾部添加新内容。且将"寄存器中的内容修改与相应寄存器一致

特殊寄存器

x 说明
" 最近复制或删除的文本,此剪切板中的内容储存或粘贴时直接操作
: 最近输入的命令行命令
/ 最近搜索的文本
- 最近一行内删除的内容
+ 外部最近复制的文本,将VIM中的文本存入此剪切板可以在外部粘贴。
* 外部最近复制的文本,但将VIM中的文本存入此剪切板不能在外部粘贴。
. 最近插入的文本
# 轮换缓存区文件名
% 最近编辑文件的文件名
_ 黑洞剪切板,放入其中的内容消失。
0 最近复制的内容,除非该内容指定了其他剪切板。
1-9 最近整行或跨行删除的内容放在1,将1中原内容存到2,2中的内容存到3,以此类推。9中原内容消失。
= 最近输入的剪切板表达式,粘贴其运算结果。
  • [寄存器操作]后跟[基础操作]:将基础操作的内容存入寄存器。
  • [寄存器操作]后跟[粘贴操作]:将寄存器中内容粘贴到文件中。

查看寄存器::reg

:reg :列出所有寄存器

:reg x:查看x寄存器

Reply View the author
q77190858
deepin
2023-08-16 06:03
#11

改个vim.rc的设置就行了,网上有教程

Reply View the author
hotime
deepin
2023-08-16 19:14
#12

关于Vim中鼠标选中内容复制到系统剪切板的经验分享贴https://bbs.deepin.org/post/210027

方法一:在/etc/vim目录下创建文件vimrc.local

sudo vim /etc/vim/vimrc.local

填入以下内容,然后重启终端:

" 加载默认配置
runtime! defaults.vim

" 允许鼠标选中内容复制至系统剪贴板
if has('mouse')
  if &term =~ 'xterm'
    set mouse=r
  else
    set mouse=nvi
  endif
endif

" 跳过默认配置的加载,以避免覆盖当前文件中的同名配置项
let g:skip_defaults_vim = 1

或者

方法二:干脆直接修改vim默认配置文件/usr/share/vim/vim82/defaults.vim中关于mouse的配置:

将第82行 set mouse=a修改为 set mouse=r

即由:

if has('mouse')
  if &term =~ 'xterm'
    set mouse=a
  else
    set mouse=nvi
  endif
endif

改为:

if has('mouse')
  if &term =~ 'xterm'
    set mouse=r
  else
    set mouse=nvi
  endif
endif

不过改这个文件的话,将来vim更新时候应该是会被覆盖掉的,还是用方法一吧。

Reply View the author
琉璃
deepin
2023-08-16 23:02
#13
q77190858

改个vim.rc的设置就行了,网上有教程

谢谢。改好了。

Reply View the author
琉璃
deepin
2023-08-16 23:03
#14
hotime

关于Vim中鼠标选中内容复制到系统剪切板的经验分享贴https://bbs.deepin.org/post/210027

方法一:在/etc/vim目录下创建文件vimrc.local

sudo vim /etc/vim/vimrc.local

填入以下内容,然后重启终端:

" 加载默认配置
runtime! defaults.vim

" 允许鼠标选中内容复制至系统剪贴板
if has('mouse')
  if &term =~ 'xterm'
    set mouse=r
  else
    set mouse=nvi
  endif
endif

" 跳过默认配置的加载,以避免覆盖当前文件中的同名配置项
let g:skip_defaults_vim = 1

或者

方法二:干脆直接修改vim默认配置文件/usr/share/vim/vim82/defaults.vim中关于mouse的配置:

将第82行 set mouse=a修改为 set mouse=r

即由:

if has('mouse')
  if &term =~ 'xterm'
    set mouse=a
  else
    set mouse=nvi
  endif
endif

改为:

if has('mouse')
  if &term =~ 'xterm'
    set mouse=r
  else
    set mouse=nvi
  endif
endif

不过改这个文件的话,将来vim更新时候应该是会被覆盖掉的,还是用方法一吧。

谢谢。按照说的方法一改好了。

Reply View the author
星云
deepin
2023-08-17 04:23
#15

ctrl+shift+v试试

Reply View the author