我在Ubuntu 12.10上使用vi
。一些文件非常长,因此当我想要到达文件的中间位置时,必须向下翻页或滚动。
是否有VIM快捷键可以直接跳转到指定的行号?
:150
该命令将在vi中跳转到第150行
:1500
在vi中,以下命令可以跳转到第150行:
150G
相比于:150Enter这种方式,它需要的按键更少。 如果您不确定当前所在的行数,可以尝试使用该命令。
:set nu!
注意冒号:
如果您希望始终查看该行,请考虑编辑您的vim配置文件。通常情况下
vi ~/.vimrc
并添加
:set nu!
写入并退出
:wq
#or you could use :x
这可以在 vi 以外完成。例如,如果我想要删除文本文件中的第5000行,我可以使用脚本语言。例如,使用 sed,可以执行以下操作:
sed -i '5000d' filename
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行的文件,vi打开和遍历需要一些时间。如果你只想删除最后一行,你可以使用sed,在较短的时间内完成操作。
sed也可以在文件内进行搜索和替换。但也许awk、perl或python也是可行的解决方案。
总的来说,你可能需要找一个好的vi教程。成千上万个教程都存在。我建议你咨询谷歌。也许你可以找到一个VIM速查表。
150G
与 :150
的效果相同。它并不更快,但可能更容易记住。 - romainl其他vim技巧: 命令模式下
在打开的终端中,在bash shell中,只需运行以下命令即可编辑您的文件:
$ vi +N yourfile
其中N
代表行号。
查看时(使用 more
或 less
命令):
$ less +N yourfile
$ more +N yourfile
符号+
表示在启动时运行的命令。因此,如果命令只是一个数字,则vi
、less
和more
将跳转到该数字作为行号。
但您也可以使用/regex
来查找特定字符串或正则表达式的第一次出现:
$ less +/Error logfile
$ less -i +/error logfile # -i Causes less's searches to ignore case
$ vi +/open.*myfile myprog...