【问题标题】:VIM: how to go to exact line on UbuntuVIM:如何在 Ubuntu 上精确到行
【发布时间】:2011-09-16 20:40:46
【问题描述】:

我在 Ubuntu 12.10 上使用 vi。有些文件很长,所以当我想转到文件中间时,我必须向下翻页或向下滚动。

是否有 VIM 快捷方式可以转到确切的行号?

【问题讨论】:

  • @vim 专家。这真的是 Ubuntu-/bash-/Linux 特定的(根据 OP 标签)吗?我使用 vim 的次数不多,但就我的使用而言,我没有注意到 Ubuntu/CentOS/Suse/Windows 之间的细微差别。

标签: linux bash vim ubuntu terminal


【解决方案1】:

从打开的终端,在 bash shell 中,只需运行以下命令编辑您的文件:

$ vi +N yourfile

N 是行号。

供查看(moreless;):

$ less +N yourfile
$ more +N yourfile

符号+ 表示在开始时运行的命令。因此,如果command 只是一个数字,那么vilessmore 将作为行号 跳转到这里。

但您也可以使用/regex 来查找特定字符串或正则表达式的第一次出现:

$ less +/Error logfile
$ less -i +/error logfile      # -i Causes less's searches to ignore case
$ vi +/open.*myfile myprog...

【讨论】:

    【解决方案2】:

    花几分钟时间开始阅读this 文档。从长远来看,它会奖励您编辑特别是配置文件的效率。

    【讨论】:

    • 链接已失效
    【解决方案3】:
    :150
    

    将带你到 vi 中的第 150 行

    :1500
    

    将带你到 vi 中的第 1500 行

    根据 cmets 你可能想尝试

    150G

    到第 150 行。 那是更少的击键次数 :150回车 如果你不确定你在哪条线路上试试

     :set nu!
    

    注意:

    如果您想始终看到该行,请考虑编辑您的 vim 配置文件。大多数时候

    vi ~/.vimrc
    

    并添加

    :set nu! 
    

    然后写退出

    :wq
    #or you could use :x
    

    这可以在 vi 之外完成。例如,如果我想删除文本文件中的第 5000 行,我可以使用脚本语言。例如,使用 sed 它将是以下内容

    sed -i '5000d;' inputFile.txt
    

    删除第 10 到 20 行是

    sed -i '10,20d;' inputFile.txt
    

    注意 -i 将在原地编辑文件。没有 -i 它将转到标准输出。试试吧。您可以将标准输出重定向到文件

    sed '5001,$d;' inputFile.txt >> appenedFile.txt
    

    这对你来说可能有很多事情要做。这会将第 5001 行删除到 $。 $ 是文件的结尾。 >> 将附加到文件中。其中 as > 创建一个新文件。

    如果您想知道一个文件中有多少行,您可以输入wc -l inputFile.txt

    其中一些可能看起来非常微不足道,但如果您尝试编辑包含 50,000 行的文件,则可能需要 vi 花费一分钟的时间来打开和遍历。如果您知道只想删除最后一行,则可以使用 sed 并在很短的时间内完成。

    sed 也可以在文件中搜索和替换。但也许 awk、perl 或 python 也可能是一个可行的解决方案。

    但总的来说,您可能希望找到关于 vi 的好教程。数以千计的存在。我会咨询谷歌。或许给自己找一个 VIM 作弊工具。

    【讨论】:

    • 没问题,我稍微扩展了我的答案。祝你好运
    • 另外,在 vim 中你可以输入:n50% 并进入文件中间。
    • 在正常模式下,150G 的作用与:150 相同。它不是更快,但可能更容易记住。
    • @romainl 150gg 也是如此。两者确实都比 :150
    • @Randy Morris - 是的,它更快,我忘了考虑<CR>
    【解决方案4】:

    其他 vim 提示:在命令模式下

    • H 转到屏幕顶部
    • M 走到屏幕中间
    • L 转到屏幕底部
    • gg转到第一行
    • G 转到最后一行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-30
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      • 2012-01-26
      • 2021-08-12
      • 2014-06-04
      相关资源
      最近更新 更多