VIM:如何在Ubuntu上找到准确的界限

kev*_*vin 78 linux vim bash terminal ubuntu

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

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

mat*_*hew 133

:150
Run Code Online (Sandbox Code Playgroud)

将带你到vi的150行

:1500
Run Code Online (Sandbox Code Playgroud)

将带你到vi的1500行

根据您可能想要尝试的评论

150G

:150Enter 如果你不确定你在尝试什么线路,那么这就不那么重要了

 :set nu!
Run Code Online (Sandbox Code Playgroud)

注意:

如果你想总是看到该行考虑编辑你的vim配置文件.最经常

vi ~/.vimrc
Run Code Online (Sandbox Code Playgroud)

并添加

:set nu! 
Run Code Online (Sandbox Code Playgroud)

并写和退出

:wq
#or you could use :x
Run Code Online (Sandbox Code Playgroud)

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

sed -i '5000d;' inputFile.txt
Run Code Online (Sandbox Code Playgroud)

删除第10行到第20行

sed -i '10,20d;' inputFile.txt
Run Code Online (Sandbox Code Playgroud)

注意-i将在适当的位置编辑文件.如果没有-i,它将转到stdout.试试吧.您可以将stdout重定向到文件

sed '5001,$d;' inputFile.txt >> appenedFile.txt
Run Code Online (Sandbox Code Playgroud)

这可能会为你带来很多.这会将5001行删除为$.使用$作为文件的结尾.>>将附加到文件.其中as>创建一个新文件.

如果您好奇,您可能想要输入的文件中有多少行 wc -l inputFile.txt

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

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

但总的来说,你可能想找到一个关于vi的好教程.成千上万.我会咨询谷歌.也许你会发现自己是一个VIM Cheatsheat.

  • 另外,在vim中你可以输入:n50%并进入文件的中间位置. (2认同)

gle*_*man 13

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

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


Jas*_*onw 7

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


F. *_*uri 6

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

$ vi +N yourfile
Run Code Online (Sandbox Code Playgroud)

N行号在哪里。

查看(moreless;):

$ less +N yourfile
$ more +N yourfile
Run Code Online (Sandbox Code Playgroud)

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

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

$ less +/Error logfile
$ less -i +/error logfile      # -i Causes less's searches to ignore case
$ vi +/open.*myfile myprog...
Run Code Online (Sandbox Code Playgroud)