I tried to put the following in my file header:
#!/bin/sh
# vim:set ts=2 sts=2 sw=2 expandtab:
# vim:map <leader>t :w\|:!./script.sh <cr>:
But Vim always complains about the map
, saying that it's invalid. I also tried nnoremap
with no success. What should I do to fix this (I want it in this file only)?
Modelines are only for options.
If you want this mapping only for that file, add this snippet to your ~/.vimrc
:
augroup ThisFile
autocmd!
autocmd BufRead,BufNew /path/to/file nnoremap <buffer> <leader>t :w\|:!./script.sh <cr>:
augroup END
edit
It looks like you want a mapping for executing the current file. If so, you are really chasing the wrong rabbit, here, and also crashing real hard in the XY Problem wall.
You can use %
as a synonym for "the file associated with the current buffer" so, assuming your script is executable, this command would execute it:
:w|!./%<CR>
Therefore, you could simply put this generic mapping in your ~/.vimrc
:
nnoremap <leader>t :w\|!./%<CR>
Note 1: See :help c_%
for the meaning of %
and in that context.
Note 2: The bar needs to be escaped when used in a mapping, see :help map_bar
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.