【发布时间】:2011-11-02 03:50:46
【问题描述】:
我将键 F2 映射到刷新 (:edit) 当前打开的文件。当文件在外部更新时(在日志文件末尾添加新行),我在观看日志文件时使用它来更新屏幕。
nnoremap <silent> <F2> :edit<CR>
我想在文件刷新后跳转到文件末尾。
如何创建同时执行:edit 并跳转到文件末尾的键映射(快捷方式G)?
【问题讨论】:
标签: vim keymapping
我将键 F2 映射到刷新 (:edit) 当前打开的文件。当文件在外部更新时(在日志文件末尾添加新行),我在观看日志文件时使用它来更新屏幕。
nnoremap <silent> <F2> :edit<CR>
我想在文件刷新后跳转到文件末尾。
如何创建同时执行:edit 并跳转到文件末尾的键映射(快捷方式G)?
【问题讨论】:
标签: vim keymapping
将光标定位在刚刚打开(或重新打开)的文件中的惯用方式
是使用+-:edit 命令的参数(参见:help +cmd)。
虽然通用语法允许执行任何命令,但也有特殊的
通过该行上的模式匹配文本导航到该行的情况
(+/ 后跟模式)或行号(+ 后跟
数字)。如果在后一种形式中省略了数字,则假定为
文件的最后一行。
这样,重新加载当前文件,将光标定位在最后一个 行,可以使用命令
:edit +$
或
:edit + %
可以通过使用:e 而不是:edit 来缩短这些命令,并且
在+-argument 之前省略一个可选空格。
:e+$
或
:e+ %
相应的映射将采用以下形式
:nnoremap <silent> <F2> :edit +$<CR>
和
:nnoremap <silent> <F2> :edit + %<CR>
请注意,此+-argument 语法对于从
命令行,所以
$ vim + filename
同样有效。
【讨论】:
这是我会使用的:
nnoremap <silent><F2> :edit<bar>$<CR>
【讨论】:
您可以使用<bar> 在地图中链接命令。此映射可以满足您的要求:
:nnoremap <silent> <F2> :edit <bar> :normal! G<enter>
在映射/脚本中使用normal! 而不是normal 很重要,因为先验不会考虑用户定义的映射。即使在这种情况下存在G 的映射,vim 也会将G 视为根本没有映射。
【讨论】:
在 Vim 中,'|' 可用于分隔命令,就像许多 Linux/Unix 风格一样。有关酒吧使用的更多信息,请查看:help bar
例子:
:edit | normal! G
如果您希望在键映射中使用它,您可能会发现您的~/.vimrc 不喜欢使用| 或\| 的映射。为了完成这项工作,请改用等效的 <bar>。
【讨论】: