VIM:如何在Ubuntu上进行精确定位


87

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

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


@vim专家。这真的是特定于Ubuntu / bash / Linux的(根据OP标签)吗?我使用的vim不多,但是就我的使用而言,我还没有注意到Ubuntu / CentOS / Suse / Windows的丝毫区别。
亚历山大·马拉霍夫

Answers:


143
:150

将带您进入vi的150行

:1500

将带您进入VI的1500行

根据您可能想尝试的评论

150G

到达第150行。这是较少的按键操作, :150Enter 如果您不确定自己在哪一行,请尝试

 :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删除为$。$是文件的结尾。>>将追加到文件中。其中>>创建一个新文件。

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

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

sed还可以在文件内部搜索和替换。但是也许awk,perl或python也可能是可行的解决方案。

但总的来说,您可能希望在vi上找到一个不错的教程。成千上万的存在。我会咨询谷歌。也许发现自己是VIM作弊。


没问题,我只是扩大了答案。祝你好运
马瑟夫2011年

2
另外,在vim中,您可以输入:n50%并进入文件中间。
埃里克·富通斯

1
在普通模式下,150G与相同:150。它并不快,但可能更容易记住。
romainl 2011年

@romainl 150gg也是一样。两者的确比:150 <cr>快
兰迪·莫里斯

@Randy Morris-是的,速度更快,我忘记考虑<CR>了。
romainl 2011年

14

其他vim技巧:在命令模式下

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

7

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


链接已失效
Google搜索

6

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

$ vi +N yourfile

N行号在哪里。

查看(moreless;):

$ less +N yourfile
$ more +N yourfile

符号+意思是在开始时运行的命令。因此,如果命令只是一个数字,然后viless并且more,将跳转到这是行号

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

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

3

另一个建议:由于您是vim的新手,因此运行vimtutor非常有帮助。


6
这不是一个评论,因为它没有解决特定的问题吗?
Brian Rasmussen 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.