Questions tagged «original-vi»


2
为什么Y是yy而不是y $的同义词?
是否有特定的历史原因? 背景 -(如果您已经理解了这个问题,则可以跳过此部分。) 作为中级/高级vi用户会知道,y是在“抽出”命令它猛拉(份)由下面的移动命令指定的文本。*因此ye猛拉到字的结束时,y0从光标位置猛拉到行的开始,y_拖动整个当前行,y$从光标位置拖动到当前行的末尾,依此类推。 的d(删除)命令和c(变化)命令都可以与所有这些运动的被使用。 dd是的同义词,d_并删除整个当前行。同样,cc是的同义词c_,并将更改当前行(即它将删除所有文本,并在行的开头将您置于插入模式)。** “ yank”命令遵循此约定;yy会像一样拉动整个当前行y_。 还有另一组同义词:D是的同义词,d$将从光标位置到行尾将其删除。 C是的同义词c$,它将文本从光标位置更改到行尾,使您进入插入模式以键入新文本。 但是,Y是或的另一个同义词,它将使整行yyy_(而不是象从Cand D模式中所期望的那样)从光标移至行的结尾。 我了解在Vim中一直保持这种方式来保持与向后的兼容性vi,如Vim帮助中所述:help Y: 如果您希望“ Y”从光标到行尾(更合逻辑,但不兼容Vi),请使用“:map Y y $”。 因此,这是来自的延期vi。精细。 但是,为什么命令最初是这样设计的?有没有逻辑呢? *具体来说,它将文本放置在寄存器0中,并将未命名的寄存器指向寄存器0。 **尽管这不是有关我的问题,S是另一个同义词cc或c_。

5
Vim和VI之间的最大差异
今天,我决定尝试使用Vi代替Vim,我想看看它有什么不同。我一点也没有注意到任何差异,我注意到的最大的变化是,-- INSERT --当我进入插入模式时,Vi没有说什么,而且接口之间也有一些细微的差异。 这让我想知道,Vi和Vim之间最大的区别是什么?

2
vi,nvi和vim之间是什么关系?
有时在某些Unix上,我找到了一个名为的命令nvi。它是一个类似vi的编辑器,没有很多功能。也许那是旧的叉子vi? 无论如何,哪些vi版本是其他版本的分支,哪些是独立开发的?他们是否有类似于Unix的“家谱”?

2
修复在vi(而非vim)中显示A,B,C,D的箭头键
我知道在vim中我可以添加 set nocompatible 在.vimrc以避免箭头键显示A,B,C,在插入模式d。 但是我正在使用vi 版本4.0(gritter)12/25/06。 如何获得相同的行为? ==编辑==(1) 我正在使用Arch Linux的vi版本,该版本是通过以下命令从此CVS存储库(最后一次提交,2007年2月24日)构建的: make PREFIX=/usr LIBEXECDIR=/usr/lib/ex PRESERVEDIR=/var/lib/ex \ TERMLIB=ncurses FEATURES="-DCHDIR -DFASTTAG -DUCVISUAL -DMB -DBIT8" 并使用以下三个补丁:fix-tubesize-short-overflow.patch,navkeys.patch和preserve-dir.patch。 ==编辑(2)== 这些问题发生在LXTerminal 0.2.0,白蚁10-1,Tilda 1.2.4-1,终结者0.98-1和xterm 320-2中,但在urxvt v9.21和Linux虚拟控制台中都没有。 ==编辑(3)== 根据单一Unix规格左箭头,向下箭头键,右箭头,向上箭头分别对应于以下capname: ,,kcub1 和。比较这些capterm中的terminfo条目,可以得出:kcud1kcuf1kcuu1xtermrxvt-unicode-256color $ infocmp xterm rxvt-unicode-256color | grep -E 'kcuf1|kcub1|kcud1|kcuu1' kcub1: '\EOD', '\E[D'. kcud1: '\EOB', '\E[B'. kcuf1: '\EOC', '\E[C'. kcuu1: …



2
使用ex-command检查两行是否相同?
我一直在看这个问题,然后想知道如何使用纯 POSIX 实现我的答案 sed。ex 诀窍是,虽然sed我可以比较保持空间和模式空间以查看它们是否完全相等(用 G;/^\(.*\)\n\1$/{do something}),但是我不知道在中进行这种测试的方法ex。 我知道在Vim中,我可以Y使第一行变短,然后键入 :2,$g/<C-r>0/d以几乎执行我指定的操作-但是如果第一行包含除非常简单的字母数字文本之外的任何内容,这的确会带来麻烦,因为该行已作为正则表达式转储了进来。 ,而不仅仅是用于比较的字符串。(如果第一行包含正斜杠,则该行的其余部分将被解释为命令!) 因此,如果我想删除myfile与第一行相同的所有行,但又不想删除第一行,该如何使用ex?为此,我该如何使用vi? 如果某行与另一行完全匹配,是否有POSIX方法删除该行? 可能是这样的虚构语法: :2,$g/**lines equal to "0**/d
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.