ubuntu vim 粘贴(ubuntu怎么粘贴)

本篇文章给大家谈谈ubuntu vim 粘贴,以及ubuntu怎么粘贴对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

vim拷贝粘贴总结(p、Shift+Insert、Shift+Ctrl+v)

[toc]

vim寄存器是在使用 y、 y?拷贝时,内容的存放位置

在vim普通模式下输入:reg查看当前vim寄存器列表

""代表最近一次拷贝内容

"-代表次最近一次拷贝内容,等于【"1】

"0代表最近一次(第0次)拷贝内容

"数字代表前几次拷贝内容

".代表最近输入的内容

"%代表当前编辑的文件

"/代表

"*代表系统选择缓冲区(xclip-out)---一般没装vim-gnome,所以在vim中用不了

"+代表系统剪贴板(xclip-out-sel clipboard)---一般没装vim-gnome,所以在vim中用不了

若vim寄存器列表里无【”*】或【“+】寄存器,则可能是由于没有安装vim的图形界面所致。Debian/Ubuntu下可以通过安装 vim-gnome解决。

p粘贴最后一次拷贝的内容

"-p粘贴次最后一次拷贝的内容

"3p粘贴第3次拷贝的内容

".p粘贴最近输入的内容

......

"*p粘贴选择缓冲区内容,一般没装vim-gnome,所以在vim中用不了,但是可以在插入模式下使用 Shift+Insert粘贴

"+p粘贴剪贴板内容,一般没装vim-gnome,所以在vim中用不了,但是可以在插入模式下使用 Shift+Ctrl+v或鼠标右键粘贴

Vim中,若要复制当前行,普通模式下按 yy即可,在要粘贴的地方按 p。这是vim将复制内容保存到了自己的寄存器中的缘故。如果在其他地方执行yy,新的内容将覆盖掉原寄存器中内容。如果想保存原寄存器中内容而同时增加新的内容呢?这时就要在yy前增加标签了。标签以双引号开始,跟着的是标签名称,可以是数字0-9,也可以是26个字母,然后就是复制操作,这样就把复制内容保存到该标签寄存器里。

以下验证有问题

:set mouse=a在普通模式下可以直接使用鼠标选择区域复制到选择缓冲区。但这种情况下不能复制到剪切板。(有些应用程序的 Shift+Insert调用的是剪贴板,并不是选择缓冲区,所以还得要使用mouse=v方式)

:set mouse=v除了可以像上面一样直接使用鼠标选择区域复制到选择缓冲区以外,还可以在右键菜单中选择“复制”来保存到剪切板里。

另:mouse=v方式可能造成新问题,如果vim显示行号,选择时行号也会一并选择,如果不需要行号的话,在复制前需要先执行set nonu来取消行号显示。

解决vim中鼠标右键无法复制的问题:

待完成

Vim复制粘贴探秘

Vim作为最好用的文本编辑器之一,使用vim来编文档,写代码实在是很惬意的事情。每当学会了vim的一个新功能,就会很大地提高工作效率。有人使用vim几十年,还没有完全掌握vim的功能,这也说明了vim的强大。而这样何尝不是一件好事呢,只要有的学习,就有的提高。

最近使用Vim来写博客,发现在Vim中粘贴Python代码后,缩进就全乱了。仔细研究了以下,原来是自动缩进的缘故,于是做如下设置:

:set noai nosi取消了自动缩进和智能缩进,这样粘贴就不会错行了。但在有的vim中不行,还是排版错乱。

后来发现了更好用的设置:

:set paste进入paste模式以后,可以在插入模式下粘贴内容,不会有任何变形。这个真是灰常好用,情不自禁看了一下帮助,发现它做了这么多事:

textwidth设置为0

wrapmargin设置为0

set noai

set nosi

softtabstop设置为0

revins重置

ruler重置

showmatch重置

formatoptions使用空值

下面的选项值不变,但却被禁用:

lisp

indentexpr

cindent

怪不得之前只设置noai和nosi不行,原来与这么多因素有关!

但这样还是比较麻烦的,每次要粘贴的话,先set paste,然后粘贴,然后再set nopaste。有没有更方便的呢?你可能想到了,使用键盘映射呀,对。我们可以这样设置::

:map:set paste

:map:set nopaste这样在粘贴前按F10键启动paste模式,粘贴后按F11取消paste模式即可。其实,paste有一个切换paste开关的选项,这就是pastetoggle。通过它可以绑定快捷键来激活/取消 paste模式。比如::

:set pastetoggle=这样减少了一个快捷键的占用,使用起来也更方便一些。

但,这是最方便的吗?Vimer们对高效的追求永无止境。还有其他更好地方法吗?

你可能想到了,vim寄存器。对,使用vim寄存器“+p粘贴即可。根本不用考虑是否自动缩进,是否paste模式,直接原文传递!:

"+p要说vim寄存器,就要从vim文件间的复制粘贴说起。

Vim中,若要复制当前行,普通模式下按 yy即可,在要粘贴的地方按 p。这是vim将复制内容保存到了自己的寄存器中的缘故。如果在其他地方执行yy,新的内容将覆盖掉原寄存器中内容。如果想保存原寄存器中内容而同时增加新的内容呢?这时就要在yy前增加标签了。标签以双引号开始,跟着的是标签名称,可以是数字0-9,也可以是26个字母,然后就是复制操作,这样就把复制内容保存到该标签寄存器里。通过下面命令显示所有寄存器内容::

:reg其中注意两个特殊的寄存器:”*和“+。这两个寄存器是和系统相通的,前者关联系统选择缓冲区,后者关联系统剪切板。通过它们可以和其他程序进行数据交换。

备注:

若寄存器列表里无”*或“+寄存器,则可能是由于没有安装vim的图形界面所致。Debian/Ubuntu下可以通过安装vim-gnome解决。

$ sudo apt-get install vim-gnome选择缓冲区和系统剪切板啥子区别?让我们继续研究。

选择缓冲区和剪切板

不同于Windows,Linux系统里存在两个剪切板:一个叫做选择缓冲区(X11 selection buffer),另一个才是剪切板(clipboard)。

选择缓冲区是实时的,当使用鼠标或键盘选择内容时,内容已经存在于选择缓冲区了,这或许就是选择缓冲区的由来吧。

使用下面的命令查看选择缓冲区的内容::

$ xclip-out如果没有xclip命令,Debian/Ubuntu下可以通过如下命令安装::

$ sudo apt-get install xclip可以使用鼠标中键或键入Shift+Insert来粘贴选择缓冲区的内容。但对于有些GUI程序,比如gedit,只能通过鼠标中键调用选择缓冲区的内容,使用Shift+Insert的话,调用的是剪切板的内容。

剪切板和Windows的剪切板类似,在选择文字内容后,执行Ctrl+ c或在菜单里选择‘复制’的话,这时内容才存放到剪切板里。

使用下面的命令查看剪切板的内容::

$ xclip-out-sel clipboard而使用剪切板的内容,则是Ctrl+v。但在有些情况下,比如gnome-terminal,不能直接使用Ctrl+c,Ctrl+v,这时就要用Shift+Ctrl+c,Shift+Ctrl+v代替。

原格式粘贴

好了,了解了选择缓冲区和剪切板,下面就是实现保留格式粘贴的完美解决方案:

方案一:

选择文本内容

vim普通模式下按“*p将选择缓冲区中内容粘贴进来

方案二:

复制文件内容

vim普通模式下按“+ p将剪切板内容粘贴进来

这时,如果要复制的内容也是vim编辑器中的内容,那么如何复制才更方便呢?

vim中的复制

vim有一个可视模式(Visual Mode),在此模式下可以选择区域。可以在普通模式下键入v进入可视模式,也可以个性化一点,键入V进入行可视模式,或者键入Ctrl+v进入列可视模式。这时移动光标就可以选择内容了。注意这时被选内容已经实时保存于选择缓冲区了,当然你也可以键入”+y将此内容也保存到剪切板里,或者”ay将内容保存到标签为a的寄存器中。但要知道,只有前两个中的内容可以在其他程序中使用,而a寄存器中的内容只能在该vim编辑器内使用。

也可以通过鼠标来复制。这里首先要打开鼠标模式。:

:set mouse=a这样在普通模式下可以直接使用鼠标选择区域复制到选择缓冲区。但这种情况下不能复制到剪切板。

若要使用鼠标复制内容到剪切板,则需要做如下设置::

:set mouse=v这种情况下,除了可以像上面一样直接使用鼠标选择区域复制到选择缓冲区以外,还可以在右键菜单中选择“复制”来保存到剪切板里。但新问题又出来了。若显示行号,也会将行号一并选择。你会想到,这好办呀,如果不需要行号的话,在复制前,先执行set nonu来取消行号显示呗。

其实没必要这样,如果不需要复制行号的话,用在可视模式下用键盘来选择不就可以吗?

并且,从上面的讨论,我们不难得出,使用选择缓冲区比使用剪切板要方便的多,可以节省很多步骤。

所以,最终我们得到了vim文件间复制粘贴的完美方案,文件传输的中转使用选择缓冲区。

vim文件间复制粘贴完美方案

在~/.vimrc中增加如下一行::

set mouse=v复制内容到选择缓冲区。

带行号时,使用鼠标选择内容区域。

不要行号,使用“*yny复制n行或可视模式下选择。

将选择缓冲区中内容粘贴到vim文件:普通模式下按“*p。

--------------------------------------------------------------------------------

补充:

设置vim中默认使用选择缓冲区寄存器“*:

set clipboard= unnamed则可以直接通过y,p和系统选择缓冲区进行数据交换。

Ubuntu14.04怎么安装vim

一、安装 vim控制台版本的vim随ubuntu一起发行,因此没必要安装.然而,如果您更喜欢GUI界面下的vim的话,请安装vim-gtk软件包,有以下两种方法:

1、在Ubuntu Software Center中搜索vim-gtk,并安装 Vi IMproved- enhanced vi editor- with GTK2 GUI

2、在终端中输入 sudo apt-get install vim-gtk

二、快速指南Vim需要学习很多东西。然而,如果您熟悉了vim的话,您可以利用vim的高级特征非常熟练的操作文本。

您可以在终端中输入vim来启动控制台模式下的vim,或输入gvim来启动图形模式下的vim.输入之后会出现带vim信息的一个空白屏幕。然而,在该状态下输入任何文本都会失败!因此下面将介绍很多初学者都会混淆的特征-模式:

1、模式 Vim最令人混淆的特征之一是她拥有3种模式.

插入模式输入文本编辑模式执行命令,也称为正常模式。命令模式,执行冒号命令插入模式并不是缺省的模式,您必须按下 i来进入插入模式,在屏幕上输入一些文字。按下<Esc>按钮将从插入模式转到编辑模式。该模式用于移动和操纵文本,有时以非常有趣的方式进行。命令模式用于执行冒号命令,比如保存,查找/替换以及配置vim等。欲保存文本,您只需要在正常模式下输入:进入命令模式并输入:w filename<Enter>.退出vim请执行冒号命令:q.总结如下:

vim(启动vim)

i(进入插入模式)<输入文本><Esc>(回到编辑模式):w filename(保存文件为'filename'):q(退出vim)vim filename(打开您刚才在vim中保存的文件)请记住,最好的学习vim的方式是使用她.您可以通过内置的vim教程来学习vim的基本使用,只需要在终端中输入vimtutor(有的系统中可能是vim-tutor).

2、用vim编辑docbook文档为了将文章提交到Ubuntu文档组织,您需要使用docbook格式。您可能会对VIM文件类型插件xmledit感兴趣。

添加如下内容至~/.vimrc

map!,e<emphasis> map!,p<para>map<F3> v/>^Mx如果光标位于打开的XML标记的顶部,您可以按下F3将标记的内容剪切到缓冲区。移动光标至本节的底部并按下'p'(=粘贴)刚复制的内容就会出现在当前字符后面。

这样对于给已经些好的文档添加标记是非常有用的。其典型用途是在需要时给从网页上复制/粘贴的文档添加格式。

3、在线资源您可以在如下页面中找到关于vim的有用的信息

Vim主页可用于查找相关脚本的插件。The tips section has a RSS feed which gives many useful tips about vim。

Vim有用的技巧提供了有效使用vim的相关技巧。

Vim的作者, Bram Moolenaar写了一篇文章Seven habits of effective text editing

Vim文档是关于vim的文档的集中地。您可以在那里下载Vim使用手册以及Vim Book。

4、vi命令

进入vi的命令

vi filename:打开或新建文件,并将光标置于第一行首

vi+n filename:打开文件,并将光标置于第n行首

vi+ filename:打开文件,并将光标置于最后一行首

vi+/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处

vi-r filename:在上次正用vi编辑时发生系统崩溃,恢复filename

vi filename....filename:打开多个文件,依次进行编辑

移动光标类命令

h:光标左移一个字符

l:光标右移一个字符

space:光标右移一个字符

Backspace:光标左移一个字符

k或Ctrl+p:光标上移一行

j或Ctrl+n:光标下移一行

Enter:光标下移一行

w或W:光标右移一个字至字首

b或B:光标左移一个字至字首

e或E:光标右移一个字至字尾

):光标移至句尾

(:光标移至句首

}:光标移至段落开头

{:光标移至段落结尾

nG:光标移至第n行首

n+:光标下移n行

n-:光标上移n行

n$:光标移至第n行尾

H:光标移至屏幕顶行

M:光标移至屏幕中间行

L:光标移至屏幕最后行

0:(注意是数字零)光标移至当前行首

$:光标移至当前行尾

屏幕翻滚类命令

Ctrl+u:向文件首翻半屏

Ctrl+d:向文件尾翻半屏

Ctrl+f:向文件尾翻一屏

Ctrl+b;向文件首翻一屏

nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

插入文本类命令

i:在光标前

I:在当前行首

a:光标后

A:在当前行尾

o:在当前行之下新开一行

O:在当前行之上新开一行

r:替换当前字符

R:替换当前字符及其后的字符,直至按ESC键

s:从当前光标位置处开始,以输入的文本替代指定数目的字符

S:删除指定数目的行,并以所输入文本代替之

ncw或nCW:修改指定数目的字

nCC:修改指定数目的行

删除命令

ndw或ndW:删除光标处开始及其后的n-1个字

do:删至行首

d$:删至行尾

ndd:删除当前行及其后n-1行

x或X:删除一个字符,x删除光标后的,而X删除光标前的

Ctrl+u:删除输入方式下所输入的文本

搜索及替换命令

/pattern:从光标开始处向文件尾搜索pattern

?pattern:从光标开始处向文件首搜索pattern

n:在同一方向重复上一次搜索命令

N:在反方向上重复上一次搜索命令

:s/p1/p2/g:将当前行中所有p1均用p2替代

:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代

:g/p1/s//p2/g:将文件中所有p1均用p2替换

选项设置

all:列出所有选项设置情况

term:设置终端类型

ignorance:在搜索中忽略大小写

list:显示制表位(Ctrl+I)和行尾标志($)

number:显示行号

report:显示由面向行的命令修改过的数目

terse:显示简短的警告信息

warn:在转到别的文件时若没保存当前文件则显示NO write信息

nomagic:允许在搜索模式中,使用前面不带“/”的特殊字符

nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始

mesg:允许vi显示其他用户用write写到自己终端上的信息

最后行方式命令

:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下

:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下

:n1,n2 d:将n1行到n2行之间的内容删除

:w:保存当前文件

:e filename:打开文件filename进行编辑

:x:保存当前文件并退出

:q:退出vi

:q!:不保存文件并退出vi

:!command:执行shell命令command

:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入

:r!command:将命令command的输出结果放到当前行

寄存器操作

"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字

"?nyw:将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字

"?nyl:将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字

"?p:取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字

ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。

阅读剩余
THE END