vim - vim中最长的一行?

标签 vim command

是否有确定vim中最长行长度的命令?并在文件开头附加该长度?

最佳答案

Gnu 的 wc 命令有一个 -L --max-line-length 选项,它打印出文件的最大行长度。见 gnu man wc . freebsd wc 也有-L,但没有--max-line-length,见freebsd man wc .

如何从vim使用这些?命令:

:%!wc -L

将通过 wc -L 过滤打开的文件并使文件的内容成为最大行长度。

要保留文件内容并将最大行长度放在第一行,请执行以下操作:
:%yank
:%!wc -L
:put

而不是使用 wc,Find length of longest line - awk bash描述如何使用 awk 查找最长行的长度。

好的,现在是一个纯粹的 Vim 解决方案。我对脚本有点陌生,但这里是。以下内容基于 textfilter 中的 FilterLongestLineLength 函数.
function! PrependLongestLineLength ( )
  let maxlength   = 0
  let linenumber  = 1
  while linenumber <= line("$")
    exe ":".linenumber
    let linelength  = virtcol("$")
    if maxlength < linelength
      let maxlength = linelength
    endif
    let linenumber  = linenumber+1
  endwhile

  exe ':0'
  exe 'normal O'
  exe 'normal 0C'.maxlength
endfunction

command PrependLongestLineLength call PrependLongestLineLength()

将此代码放在 .vim 文件(或您的 .vimrc)中并 :source 文件。然后使用新命令:
:PrependLongestLineLength

谢谢,搞清楚这个很有趣。

关于vim - vim中最长的一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2075276/

相关文章:

bash - 管道 |重定向 < > 优先级

vim - Vim 或 Vi 是否有多个范围命令?

java - java中的exec方法无法执行命令

linux - 通过 ssh 重新连接到 tmux session 后 vim 键映射不起作用

regex - Vim:忽略映射替换列表中的错误

vim 编辑 - 如何编辑搜索的突出显示部分或转换为可视 block

linux - 使用 Linux 命令行工具恢复部分下载

linux - vim 的颜色方案适用于白蚁,不适用于 urxvt

perl - 使用 find 命令在文本编辑器中打开多个文件

shell - 如何从另一个文件的文件中删除特定内容?