Vim每个文件映射

时间:2014-05-02 16:59:34

标签: vim

我尝试将以下内容放入文件标题中:

#!/bin/sh
# vim:set ts=2 sts=2 sw=2 expandtab:
# vim:map <leader>t :w\|:!./script.sh <cr>:

但是Vim总是抱怨map,说它无效。我也试过nnoremap但没有成功。我该怎么做才能解决这个问题(我只想在这个文件中使用它)?

1 个答案:

答案 0 :(得分:4)

Modelines 用于选项。

如果您只想为该文件添加此映射,请将此代码段添加到~/.vimrc

augroup ThisFile
  autocmd!
  autocmd BufRead,BufNew /path/to/file nnoremap <buffer> <leader>t :w\|:!./script.sh <cr>:
augroup END

修改

看起来你想要一个映射来执行当前文件。如果是这样的话,你真的在​​这里追逐错误的兔子,并在the XY Problem墙上猛烈地撞击。

您可以使用%作为&#34;与当前缓冲区关联的文件的同义词&#34;因此,假设您的脚本是可执行的,此命令将执行它:

:w|!./%<CR>

因此,您可以简单地将此通用映射放在~/.vimrc

nnoremap <leader>t :w\|!./%<CR>

注1:请参阅:help c_%了解%的含义以及该背景。

注意2:在映射中使用栏时需要进行转义,请参阅:help map_bar