在 Vim 中,如何删除某处重复的所有行

2024-03-21

我有一个包含以下行的文件:

one one
one one
two two two
one one
three three
one one
three three
four

我想从文件中删除所有出现的重复行,只保留非重复行。因此,在上面的示例中,结果应该是:

two two two
four

I saw 这是对类似问题的回答 https://stackoverflow.com/a/1270689/1806553。我尝试修改前一行,如下所示:

:syn clear Repeat | g/^\(.*\)\n\ze\%(.*\n\)*\1$/exe 'syn match Repeat "^' . escape(getline ('.'), '".\^$*[]') . '$"' | d

但它不会删除所有出现的重复行,它仅删除一些出现的重复行。

我怎样才能在 vim 中做到这一点?或者具体来说我怎样才能在 vim 中使用 ex 做到这一点?

澄清一下,我不是在寻找sort u.


如果您有权访问 UNIX 风格的命令,您可以执行以下操作:

:%!sort | uniq -u

The -u的选项uniq命令执行您需要的任务。来自uniq命令的帮助文本:

   -u, --unique
          only print unique lines

但我应该注意,这个答案假设您不介意输出与输入文件可能已经具有的任何排序顺序不匹配。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Vim 中,如何删除某处重复的所有行 的相关文章

  • VIM自动插入PHPdoc

    有没有办法使用命令或组合键在 VIM 中插入 PHPDoc 例如 我有一堂课 class MyClass public function construct public function destruct command here to
  • 如何在不关闭vim的情况下重置vim的设置(包括插件,.vimrc文件)?

    我已经使用 vim 两年了 我使用 pathogen 进行插件管理 我在寻找 一种在不关闭 vim 的情况下重置所有 vim 设置 包括插件 vimrc 文件 的方法 是 有什么想法吗 PS 在某些情况下 重新加载 vimrc 与重新打开
  • Vim 和 Ctags:生成标签时忽略某些文件

    我有一个文件夹 llvm2 9 我在其中运行了此命令 gt ctags R sort 1 c kinds p fields iaS extra q language force C 这是 html 文件中的索引方法 也存在于 llvm2 9
  • 关闭文件而不退出 VIM 应用程序?

    我用 e and w用于编辑和写入文件的命令 我不确定是否有 close 命令可以在不离开Vim的情况下关闭当前文件 I know that the q command can be used to close a file but if
  • vim 命令可以映射到具有 >1 修饰符的组合键(例如 ctrl-alt-v)

    是否可以将 vim 命令映射到涉及多个修饰符的按键组合 例如 ctrl alt v 据我所知 唯一可以与另一个组合使用的修饰键是shift 例如
  • vim可以实时监控文件的变化吗

    我的问题与此类似如何实时监控文本文件 https stackoverflow com questions 18632 how to monitor a text file in realtime但我想在vim中做 我知道我可以读取打开的文件
  • Vim 中每行末尾的美元符号(“$”)是什么

    我对 Vim 还比较陌生 每当我启动 Vim 时使用vim LearnRuby rb 每行都会出现一个美元符号 Why set nolist 将关闭当前缓冲区的特殊字符 例如制表符显示为 I和行尾字符显示为 然而 如果它在你跑步时始终如一地
  • 使用新文件名保存文件:附加到现有文件名

    有没有一种简单的方法 在 VIM 中 使用当前名称加上附加短语保存当前打开的文件 即 来自 home affert type vim data folder file1 txt 然后将文件另存为 data folder file1 txt
  • Vim:用字符填充行

    如何在一行或多行末尾重复添加字符 将行填充到特定列 例如 x 代表第 40 列 不是该行上的字符 并且文本后没有空格或制表符 line one x line two x line three x line eleventy billion
  • 使用 Webpack 波形符别名时通过 Vim 中的“gf”解析 JavaScript 模块

    我是使用波浪号的 Vue js 项目的新成员 模块导入中的符号 如 import WhateverApi from api whatever 项目存储库包含所有类型的文件 Vagrant 机器 Laravel 后端应用程序 配置文件和 Vu
  • Emacs Evil“重复”(点)行为

    我的中有以下行 emacs define key evil normal state map M j lambda interactive evil next line 5 这使得文件中的导航变得更加容易 例如 与M j我在下面 5 行 所
  • Vim - 删除多行中的直到(包括)字符

    我有这个代码 def foo c Char c match case a B 我的光标位于后面的空格上 我想删除所有内容 直到 包括 我怎样才能做到这一点 我可以在光标位于第一行任意位置时执行相同操作吗 块中的任何位置 并将光标放在 d e
  • 设置快捷方式以替换 VIM 中轻松选择的字符串

    我有很多 php html 文件 其中包含许多应该使用 gettext 国际化的字符串 因此 我必须遍历每个文件 找到 消息 字符串并将每个字符串替换为 I use vim and would like to setup a shortcu
  • 如何更改每种语言的 vim 设置?

    我将 vim 与许多不同的语言 C C Java shell 等 一起使用 我知道 vim 已经为每种语言预设了设置 但我想根据我个人的喜好更改每种语言的设置 我已经有一个带有设置的 vimrc 文件 但我想要更多文件来根据我使用的语言声明
  • 在 Vim 中搜索并替换为递增值

    假设我写了一个简单的 CSS 规则 如下所示 star 10 background url stars png no repeat 0 0 而我需要10个 所以我复制了9次 star 10 background url stars png
  • 如何在vim中将菜单键(“应用程序键”)映射到Escape键?

    我认为使用菜单键退出 vim 的插入模式将是一件很棒的事情 使用 Super 键也很好 但我不确定是否可能 因为 Super 键是一个修饰符 无论如何 我找不到任何与此相关的内容 寻求您的帮助并提前致谢 我认为没有任何方法可以配置 Vim
  • 在 Vim 中以反转模式突出显示匹配项

    如何在 Vim 中使用 match 命令突出显示与给定模式不匹配的文本 所以 我想要相反的 match myGroup foo 好吧 你可以这样做 match myBaseHighlight foo 2match myGroup where
  • 使用 vim 重构目录中的类/方法/字符串的有效方法

    到目前为止 我一直在使用查找和替换操作手动重构代码 s stringiwanttoreplace newstring g in vim 但这是一个缓慢而费力的过程 如果我有的话字符串我想更换在特定目录内的许多文件中 我当前 典型的缓慢而费力
  • 禁用 VIM 中的警告?

    有没有办法禁用 VIM 中的警告 特别是 当文件从只读变为可写时 我想禁用警告 12 我有一个脚本可以打开文件进行编辑 但 vim 认为文件已更改并发出警告 Thanks 我的 vimrc 中有以下内容 你应该只需要第二个 它将消息回显到状
  • Vim 函数插入带有传递参数的静态文本

    背景 I m interested in writing a function that assigned to keyboard shortcut s when invoked would 采取用户参数 计算值反映80 string le

随机推荐