vim - 在 vi/vim 编辑器中从文件中删除几个选定的字符

标签 vim command vi

下面是在 vi 中删除前 N 个字符的命令:

:%s/^.\{N}//g

不过,我不明白^.\{N}的意思;谁能解释每个字符的含义?
如何扩展此命令以从行中删除中间字符?

e.g. deleting 4th to 50th characters from given range of lines

最佳答案

您可以将特定列与 \%c 匹配 \%v

删除第 4 到第 50 列:

 :%s/\%4c.\{-}\(\ze\%50c\|$\)//

只有第 50 列才能删除 IFF:

 :%s/\%4c.\{-}\ze\%50c//

要使用虚拟列(例如,如果您使用制表位就很方便):

 :%s/\%4v.\{-}\ze\%50v//

哦,

  • .\{-} 是零个或多个字符的非贪婪匹配。
  • \ze匹配结束指令,这会在第 50 列停止匹配

关于vim - 在 vi/vim 编辑器中从文件中删除几个选定的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11153343/

相关文章:

math - Vim 将一列数字乘以一系列数字

vim - 如何在 Vim 中关闭单个缓冲区(多个缓冲区中的一个)?

java - 来自java程序的命令

c - 切换命令不起作用

linux - 如何在 vi 中切换不同的配色方案?

vim - 打开文件时插入文本

vim - 在 vim 中循环遍历字符

perl - 在 perl 脚本中运行多个 shell 命令

shell - 如何禁用shell脚本vi编辑中的自动注释?

vim - 更改到该目录时,如何自动从目录加载标签文件?