Vim:如何创建键映射到:编辑并跳转到最后一行?

时间:2011-11-02 03:50:46

标签: vim keymapping

我映射了键 F2 以刷新(:edit)当前打开的文件。当我在外面更新文件时(日志文件末尾添加了新行),我在观看日志文件时更新屏幕时使用此功能。

nnoremap <silent> <F2> :edit<CR>

我想在刷新后跳转到文件的末尾。

如何创建:edit并同时跳转到文件末尾(快捷G)的键映射?

5 个答案:

答案 0 :(得分:5)

将光标定位在刚刚打开(或重新打开)的文件中的惯用方法 是使用+命令的:edit - 参数(参见:help +cmd)。 虽然一般语法允许执行任何命令,但有一些特殊之处 通过与该行上的文本匹配的模式导航到某一行的情况 (+/后跟模式),或行号(+后跟 数)。如果在后一种形式中省略了数字,则假定为 文件的最后一行。

以这种方式,重新加载当前文件,将光标定位在最后 一行,可以使用命令

:edit +$

:edit + %

可以使用:e代替:edit来缩短这些命令 在+ - 参数之前省略一个可选空格。

:e+$

:e+ %

相应的映射采用

形式
:nnoremap <silent> <F2> :edit +$<CR>

:nnoremap <silent> <F2> :edit + %<CR>

请注意,此+ - 参数语法对于从中打开文件也有效 命令行,所以

$ vim + filename

也可以。

答案 1 :(得分:4)

这是我使用的:

nnoremap <silent><F2> :edit<bar>$<CR>

答案 2 :(得分:2)

您可以使用:normal来使用普通模式G motion

:nnoremap <silent> <F2> :edit<CR>:norm! G<CR>

或许更好的方法是使用:$命令转到文件的末尾:

:nnoremap <silent> <F2> :edit<CR>:$<CR>

答案 3 :(得分:2)

您可以使用<bar>在地图中链接命令。这种映射可以满足您的需求:

:nnoremap <silent> <F2> :edit <bar> :normal! G<enter>

在映射/脚本中使用normal!而不是normal非常重要,因为先前不会考虑用户定义的映射。即使在这种情况下存在G的映射,vim也会将G视为根本没有映射。

答案 4 :(得分:0)

在Vim '|'中可以用来分离命令,就像许多Linux / Unix版本一样。有关使用栏的更多信息,请查看:help bar

示例:

:edit | normal! G

如果您希望在键映射中使用此功能您可能会发现~/.vimrc不喜欢使用|\|的地图。为了完成这项工作,请使用等效的<bar>