我的vimrc中有以下内容:
nnoremap <F1> :!screen -S foo -p run -X stuff '!!^M'
然而,当点击F1时,我收到错误:没有上一个命令。
我想要的是告诉名为'foo'的屏幕会话中的'run'窗口运行我之前运行的任何内容。
答案 0 :(得分:3)
如果你想用bash执行!!
(因此“运行我在之前运行的那个屏幕实例”),你必须逃避它:
nnoremap <F1> :!screen -S foo -p run -X stuff $'\!\!\n'<CR>
或使用system()
:
nnoremap <F1> :call system('screen -S foo -p run -X stuff $''!!\n''')<CR>
。因为任何爆炸性事物中的!
意味着“无论我在之前使用其他爆炸物使用其他爆炸性物品”
答案 1 :(得分:0)
我尝试使用这样的技巧保存历史文件:http://www.cuberick.com/2008/11/update-bash-history-in-realtime.html
然后,获得历史记录后,使用命令作为参数运行屏幕 - 注意screen dmesg
将运行命令并终止。如果你不希望它终止,你可以screen bash -c "dmesg ; bash"
(或者你运行的任何shell)。所以,一旦你知道了这个技巧,重点是把`tail -n1 .bash_history`放在dmesg上。
修改强>
对不起,我后来注意到了“vim”标题。这种方式对我有用:
:nnoremap <F1> :!screen bash -c " '!!'"