LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1149|回复: 8

VIM剪切粘贴的问题,请大侠指教

[复制链接]
发表于 2005-3-27 05:11:09 | 显示全部楼层 |阅读模式
文本文件中有一行乱码,下面我用中文代替作例:
一一一一一二二二二二三三三三三

这时候我不能输入那些中文,我要把那段"二"剪切,粘贴到"三"后面,该如何做?
如果在notepad类的编辑器, 可以按住shift再按方向键来选择这几个字符. vim有没有类似方便的方法呢?

现在我的做法只是把它分成三行,粘贴好之后再join。
好郁闷啊,这么简单的问题也要这么麻烦。  :beat
发表于 2005-3-27 09:10:04 | 显示全部楼层
好象不能直接实现,看下面这一段:
这有点复杂.把这节拿出来,多看几遍;还有,一定要多做实验.
"<字母>yy可以把一行文本拷贝到寄存器中(这里的寄存器是vi的术语,指可以存放剪切和
拷贝下来的东西的地方), <字母>里面的字母必须是a到z之间的一个. "<字母>dd可以把一行
剪切下来放到寄存器里面. 你可以在yy或者dd前面用数字指明要拷贝或者剪切的行数.如果
<字母>中的字母是大写的话,意味着把文本插入到寄存器中已有的文本之前.
"<字母>p把文本插入到光标之后,"<字母>把文本插入到光标之前.如果寄存器中含有某
一行的开头或结尾,这一行将会被放到另一合适的行上. Y是yy的快捷方式. 还有, y$, yH,
yM,等等,都是可以用的.d命令也是一样的.如果要快速的剪切和粘贴, 你就无须指定寄存器
了.如果这样的话,你就不能往寄存器里面添加文本了.而且只要有一个删除命令的话,寄存器
中的东西就没有了(包括x命令).
举例来说,如果要移动上一段的话,你可以把光标移到段落的开头,敲"a13dd,再把光标移到
你想要放文本的地方,敲"ap,就可以把那段文本放到光标所在的行后面.
现在,大概你想要剪切和粘贴文本到不是行末尾的区域去.我们来看如何做到这一点:我们
可以使用 m<字母> 命令来标记一个区域,这个字母可以和剪切/粘贴寄存器的字母相同,因为
它们是保存在内存中的不同位置. 然后,敲"<寄存器>`<字母>[yy或者dd], 这里的寄存器就是
要保存文本的那个寄存器,<字母>是用来标记的,yy和dd是你的操作.
回复 支持 反对

使用道具 举报

发表于 2005-3-27 09:33:01 | 显示全部楼层
在命令模式下面按一个v(小写)就可以进入可视模式,移动光标选你想要的,再按d删除,按p可以粘贴刚才删除的。按V(大写)可以选一行。
回复 支持 反对

使用道具 举报

发表于 2005-3-27 11:26:43 | 显示全部楼层
Post by latexer
在命令模式下面按一个v(小写)就可以进入可视模式,移动光标选你想要的,再按d删除,按p可以粘贴刚才删除的。按V(大写)可以选一行。

怎么不太好用?v(小写)回车后出现

  1. E148:Regular Expression missing from global
复制代码
回复 支持 反对

使用道具 举报

发表于 2005-3-27 15:49:24 | 显示全部楼层
不需要按冒号再按v的,你一定是先按了冒号了。具体可以help v一下
回复 支持 反对

使用道具 举报

发表于 2005-3-27 18:32:41 | 显示全部楼层
果然可以,多谢了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-27 19:37:14 | 显示全部楼层
谢了,v就是了阿,我真是寡闻啊。
那个说明:“start Visual mode per character.”以为没什么用处,也没去试了,还一直用着我之前那种傻办法。 :p
回复 支持 反对

使用道具 举报

发表于 2005-3-28 16:26:14 | 显示全部楼层
v模式是VIM三种模式(normal,virtual,insert)之一,功能可强大了.
回复 支持 反对

使用道具 举报

发表于 2005-4-8 13:42:17 | 显示全部楼层
ctl+v , y ( copy) , move to end , p (paste)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表