3

我试图在 Vim 中映射 Alt-r 以保存然后执行当前文件,并使用 Alt-R 保存然后执行,但允许将额外参数传递给脚本。

在我的 vimrc 中,我有以下内容(文件末尾的键映射):

" Basic setup
set modeline
syntax on
filetype plugin indent on

" Load pathoen
execute pathogen#infect()

" Solarized colourscheme
if has('gui_running')
    set background=light
else
    set background=dark
endif
colorscheme solarized

" Map Alt-r to run current file as if it were a script
nmap <M-r> :w<CR>:!./%<CR>
nmap <M-R> :w<CR>:!./%<Space>

" Allow Alt-<CursorKey> to move around windows
nmap <M-Up> :wincmd k<CR>
nmap <M-Down> :wincmd j<CR>
nmap <M-Left> :wincmd h<CR>
nmap <M-Right> :wincmd l<CR>

窗口移动的键映射工作正常,但 Alt-R 似乎没有做任何事情,而 Alt-R 将 Vim 置于替换模式。我检查了 :help M^r 和 :help M^R 但他们没有列出任何映射, :map 也没有列出这些键。我还已经在 Gnome 终端中禁用了 Alt 键映射。

有什么建议么??

4

1 回答 1

3

这可能是您的终端仿真器的问题,它可能对与 vim 预期不同的 alt 键进行编码

Ctrl+v导致 vim(和大多数 shell)逐字(字面意思)输出下一个字符或组合键。这样,您可以通过添加将直接按下时产生的键码插入Alt+r到配置文件中

set <M-r>=^[r
set <M-R>=^[R

其中^[x必须通过按Ctrl+v然后输入转义字符,Alt+x并且可能会在不同的终端仿真器上产生不同的结果。

请注意,等号周围没有空格。Vim 会将额外的空格解释为赋值的一部分,这会使指令行为异常。

于 2013-09-05T09:57:57.457 回答