多文件打开与缓冲区复制粘贴的正确姿势_第1页
多文件打开与缓冲区复制粘贴的正确姿势_第2页
多文件打开与缓冲区复制粘贴的正确姿势_第3页
多文件打开与缓冲区复制粘贴的正确姿势_第4页
多文件打开与缓冲区复制粘贴的正确姿势_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用图形界面的话,我们可以在操作系统的资源管理器里进入到合适 ,然后逐个用Vim来打开文件。我们可以使用右键菜单(“EditwithVim”、“Open 等),也可以直接把文件拖拽到Vim里。使用“文件>打开”(File>Open)菜单当使用这几种编辑方式的话,你可以把需要粘贴的内容放到操作系统的剪贴板里,然后在图形界面的im里用以下方法之一粘贴进去(当然,如果光标不在开头的话,先用鼠标或用gg命令跳转到开头):正常模式Vim命令"+P(意义我们后面再解释快捷键<D-V>(提醒:这是我们对⌘VmacOS)或Insert>(PC键盘”(Edit>注意,如果你通常使用Ctrl-V键粘贴的话,这个快捷键在Vim里并不适用。即使你使用的是图形界面的Vim也是如此,因为这个键在Vim里有其他用途。顺便说一句,这个键在Unix终端上也一样是不能用作粘贴的。显然,在连接到服务器上时,以上方法不可用,我们得考虑终端Vim的用法终端如果直接把图形界面下的基本步骤,翻译成终端Vim(非图形界面)的用法的话,应该是 vimggi <EscZZ或者,我们还可以采用下面的不退出Vim:e文件名<C-D<Tab进行自动存盘使用但是如果粘贴的内容含缩进、而Vim又不够新的话,我们还会有特殊的麻烦。请继续往下老版本Vim上面的展示了Vim用户可能遇到的一种错误情况。这是因为对于终端Vim来说,一般而言,它是没法分辨用户输入和粘贴的。因此,在粘贴内容时,Vim的很多功能,特别要解决这个问题,你就得让Vim知道,你到底是在输入还是在粘贴。Vim有一个paste选项,就是用来切换输入/粘贴状态的。如果这个选项打开的话(:setpaste),Vim不过,手工设置该选项(setnopaste取消)xterm一个“括号粘贴模式”(bracketedpastemode)可以帮Vim判断目前是输入还是粘启用括号粘贴模式需要向xterm发送启用序列<Esc>[?2004h,关闭括号粘贴模式需要向xterm发送关闭序列<Esc>[?2004l;在启用了括号粘贴模式后,xterm在发送剪贴板内容时会后分别加上开始粘贴序列<Esc>[200~和结束粘贴序列<Esc>[201~。Vim8.0.0210xterm不再需要使用paste这个选项了。更棒的是,目前你甚至都不需要进入插入模式就可以粘Vim8.0.0210置paste选项变得不必要。你可以在vimrc里加入下面的代码:代代123456789if!has('patch-"进入插入模式时启用括号粘贴模式let&t_SI\<Esc>[?2004h""退出插入模式时停用括号粘贴模式let&t_EI.="见到<Esc>[200~就调用inoremap<special><expr><Esc>[200~function!"设置使用<Esc>[201~setpastetoggle=<Esc>[201~"开启粘贴模式setpastereturn""这个功能虽然小,但解决了在连接上使用Vim粘贴代码的一个常见烦恼。因此,我认对每个文件单独使用一个Vim会话来编辑,很容易出现的情况,所以你迟早会到“已经存在交换文件!”(Swapfilealreadyexists!)的错误提示。出现这个提你已经在使用另外一个VimID(processID)后面没有“STILLRUNNING”这样的字样时,那就是情况1;否则,就是情况2了。上图中没有“STILLRUNNING”的字样,说明是情况1。这时你需要按r来恢复上次的编辑状态——Vim支持即使在你没有存盘的情况下仍然保存你的编辑状态,因而这种方法可以恢复次没有存盘的内容。需要注意的是,在恢复之后,Vim仍然不会删除时保留下来的那个交换文件。因此,在确定内容无误、保存文件之后,你需要重新再打开文件,并按d键把交换文件删除。当然,如果你确定目前保存的文件版本就是你想要的,也可以直接按d把交换文件删除、重反过来,如果你已经在另一个VimID到“STILLRUNNING”的字样;同时,Vim界面上也没有了删除(Delete)交换文件这这时,大部分情况侠我们应当使用q或a(绝大部分情况下没有区别)放弃编辑,并找到目前已经打开的Vim窗口,从那里继续。少数情况下,我们只是要查看文件,那也可以选择o只读打开文件。需要使用e强行编辑的情况很少,需要非常谨慎——比如,你确认另外有Vim会话,但里面不会去做任何修改,这是我目前想得出来的唯一的合理需求。如果我们使用图形界面Vim8的话,Vim支持在文件已经打开时自动切换到已经打开的Vim窗口上。这个功能在文件处于一个不活跃的页(下一讲会讨论页支持)时特别有用,因为Vim能把这个页自动切到最前面。不过,这个功能不是默认激活的,我们需要在vimrc中加入以下内容:代代ifv:version>=packadd!好了,目前我们已经讨论了最简单、无聊、低效的工作方式。可以明显看到,不管是使用图形界面im,还是终端Vim,上面的方法本质上把im当成了记事本来用,完全没有体现出任何高效性或方便性。Vim,我们当然就得有更加高效的做法。下面,我们以多文件打首先,我们需要知道,Vim支持打开多个文件,你只需要在命令行上写出多个文件即可,或者使用通配符。比如,就我们刚才所说的编辑场景,我们可以使用vim*.cpp有可能让你吃惊的是,输入这个命令之后,Vim原来,为了确保在配置较差的环境里仍然能够正常工作,im绝对不会不必要地消耗内存,包括打开不必要立即打开的文件。所以在上面令后,Vim建立了一个文件列表,并且暂时只打开其中的第一个文件。接下来,用户可以决定,要编辑哪个文件,或者查看列表,或者提前退出,等等。为此,Vim:args文件名:next(:n):打开下一个文件;如当前文件修改(未存盘)则会报错中止,但如果命令后面加!则会放弃修改内容,其令也类似:Next(缩写:N)或:previous(缩写:prev):或 vim*.cpp*.h或gvim*.cpp*.h使用V进入行选择的可视模式,移动光标选中所需的文本,然后使用y选中的各:setautowrite,告诉Vim:n|normalggPggP,跳转到文件确认修改无误后,键入:、上箭头和回车,重复执行上面Vim:w:wq(ZZ)存盘6:nggPggP也挺累的。因此,我这儿使用了normal命令,在命令行模式下执行正常模式命令,下面就可以直接第4步到第7步的演示(注意倒数第二行的变化另外,Vim还能解决一个s 下的,在大部分s 下,包括Linux上缺省的Bash,我们需要使Zsh的简化语法,“**”也包含了当前 。这样,我们只需把上面第2步改成下面这样即vim进入Vim,然后使用:args**/*.cpp**/*.h跟多文件相关又略微不同的一个概念是缓冲区(bffer)。它是Vim里的一个基本概念,和今天讲的很多其他内容有相关性和相似性,你也或迟或早终究会遇到它,我今天也一起概要描述一下。im里会对每一个已打开或要打开的文件创建一个缓冲区,这个缓冲区就是文件在Vim中的映射。在多文件编辑的时候你也会有同样数量的缓冲区。不过,缓冲区的数量常常会更高,因为你用:e等命令打开的文件不会改变“命令行参数”(只被命令行或:args命令修改),但同样会增加缓冲区的数量。此外,:args代表参数列表/文件列表,真的只是文件的列表而已。缓冲区中有信息的,最最基本的就是了光标的位置。在Vim里,除了切换到下一个文件这样的批处理操作外,操作缓冲区令比简单操作文件令更为方便。文件列表命令:args缓冲区列表命令:ls的结果常用的缓冲区命令跟前面文件列表相关令有很大的相似性,因此我在这儿一起讲,可以帮助你:或:buffer缓冲区列表里的编号(:buffer可缩写为:b):跳转到编号对应的缓冲区;如当前缓冲区已被修改(未存盘)则会放弃修:bdelete缓冲区列表里的编号(:bdelete:bd):删除编号对应的缓冲缩写:bNext(缩写:bN)或:bprevious(缩写:bp):或还有很常见的一种情况是,我们需要在两个文件之间切换。Vim对最近编辑的文件(上面提到的列表里标有“#”的文件)有特殊的支持,使用快捷键<C-^>可以在最近的两个缓冲区之间来回切换。这个快捷键还有一个用法是面输入缓冲区的编号:比如,用1<C-^>可以跳转到第一个缓冲区(跟命令行模式令:bfirst或:b1效果相同)缓冲区是文件在某个im会话里的映射。这意味着,如果某个im会话里不同的窗口或页(下一讲里会讨论)编辑的是同一个文件,它们对应到的也会是同一个缓冲区。更重要的是,文件/缓冲区的修改在同一个Vim会话里是完全同步的——这就不会像在多会话编辑时那样发生和产生错误了。本讲通过讨论使用VimVimVim能在后恢复未存盘的内容,也能在多会话编辑同一个文件时检测到这种在Vim里我们可以使用通配符“*.后缀”和“**/*.后缀”来打开多个文件:args:next等命令我们可以在这些参:buffers:ls命令我们可以展示缓冲区列表,即所有已编辑和将编辑的文件,使用:b和:bnext等命令我们可以在这些缓冲区中进行切换今天讲到了一些命令行模式令,你应该可以看到,它们都是非常有规律的,最基本的操作就是“first”、“last”、“ext”、“ext”或“preious”等英文单词,以及它们与前缀的组合。把命令行模式令记住,就能完成基本的编辑任务;至于像<C-^>这样的正常模式命令,万一记不住,也可以用命令行模式令来替代。但是,正常模式的命令更加高效,有助于提高你的编辑效率,所以最好通过多加练习来形成“肌肉”。对于配置文件,本讲只有很小的更改,对应的是l5-unix和l5-windowsVim(不存盘)Vimkill用Vim打开一个文件,然后在另外一个终端窗口里再次打开这个文件,阅读信息,使用Vim。 不得售卖。页面已增加防盗追踪,将依法其上一 04|初步定制:让你的Vim更顺下一 `vi*.cpp2323[AutomaticallysetpastemodeinVimwhenpastingininsert…2 1现有a.pyb.pyc.pyd.py四个文件vim*.py进入了a.py需求从a.py跳转到方式2如果用命令行cc.py的话…介意的话,用:3argu吧。或者记得住要跳几步的话,用:2n。手动删除粘贴带来的缩进的生活终于结束了习的过程中遇到一个问题,就是我当前下有某个或者cpp后缀的文件我不被匹配习,效率可以再提高N倍。期待后续课程。根据当前的vim配置,如果在正常模式下。鼠标选择会造成vim进入virtual模式而不能用<D-C>进行,必须输入:进入到命令行模式下才可以。这样的操作放到Mac下是可以的,但是通过Mac的terminal去到Ubuntu命令行server,发现如果进入法。Visualvirtual5 候会把修改的内容保存到缓冲区,在执行:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论