VIM:如何在 Ubuntu 上精确到行
Posted
技术标签:
【中文标题】VIM:如何在 Ubuntu 上精确到行【英文标题】:VIM: how to go to exact line on Ubuntu 【发布时间】:2011-09-16 20:40:46 【问题描述】:我在 Ubuntu 12.10 上使用 vi
。有些文件很长,所以当我想转到文件中间时,我必须向下翻页或向下滚动。
是否有 VIM 快捷方式可以转到确切的行号?
【问题讨论】:
@vim 专家。这真的是 Ubuntu-/bash-/Linux 特定的(根据 OP 标签)吗?我使用 vim 的次数不多,但就我的使用而言,我没有注意到 Ubuntu/CentOS/Suse/Windows 之间的细微差别。 【参考方案1】:从打开的终端,在 bash shell 中,只需运行以下命令编辑您的文件:
$ vi +N yourfile
N
是行号。
供查看(more
或 less
;):
$ less +N yourfile
$ more +N yourfile
符号+
表示在开始时运行的命令。因此,如果command 只是一个数字,那么vi
、less
和more
将作为行号 跳转到这里。
但您也可以使用/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<CR>
。【参考方案4】:
其他 vim 提示:在命令模式下
H 转到屏幕顶部 M 走到屏幕中间 L 转到屏幕底部 gg转到第一行 G 转到最后一行【讨论】:
以上是关于VIM:如何在 Ubuntu 上精确到行的主要内容,如果未能解决你的问题,请参考以下文章
vim中,将光标移至第60行,并且删除行尾的15个字符,如何执行命令?
linux中的vim 编辑一行内容,如何使光标快速移动到行首和行尾以及行中间某处啊?