2

我将键映射F2到刷新(:edit)当前打开的文件。当文件已在外部更新时(在日志文件末尾添加新行),我在观看日志文件以更新屏幕时使用它。

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

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

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

4

5 回答 5

5

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

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

:edit +$

或者

:edit + %

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

:e+$

或者

:e+ %

相应的映射将采用以下形式

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

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

请注意,此+-argument 语法对于从命令行打开文件也有效,因此

$ vim + filename

也可以。

于 2011-11-02T05:09:51.677 回答
4

这就是我要使用的:

nnoremap <silent><F2> :edit<bar>$<CR>
于 2011-11-02T04:10:45.567 回答
2

您可以使用:normal正常模式G运动

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

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

:nnoremap <silent> <F2> :edit<CR>:$<CR>
于 2011-11-02T03:56:30.463 回答
2

您可以使用<bar>. 此映射可以满足您的要求:

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

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

于 2011-11-02T03:57:30.173 回答
0

在 Vim'|'中可用于分隔命令,就像许多 Linux/Unix 风格一样。有关使用酒吧的更多信息,请查看:help bar

例子:

:edit | normal! G

如果您希望在键映射中使用它,您可能会发现您~/.vimrc不喜欢使用|或的映射\|。为了使这项工作使用等价物<bar>

于 2011-11-02T04:03:25.387 回答