我在我的.vimrc文件中设置了一行vimscript,以便很好地打印JavaScript文件:
nnoremap <leader>p :!js-beautify -r -j %<cr>我只想自动重新加载文件,而不是在vim从shell返回时被提示,这可能吗?谢谢。
发布于 2014-03-14 16:57:38
:!可用于( a)执行任意shell命令,或( b)用作筛选器。
您正在使用它对与当前缓冲区关联的文件运行js-beautify,结果如下:
因此出现了许多看似毫无意义的<CR>。
您真正想要的是将js-beautify作为对当前缓冲区的筛选器运行,这不需要您退出Vim或按<CR>
nnoremap <leader>p :%!js-beautify -f - -j<cr>%表示整个缓冲区,它是我们要应用过滤器的范围-f -通过stdin传递缓冲区的内容。就是这样:没有<CR>,没有提示,没有混乱。
另外,这里还有一个来自我的config的自定义命令(我不想要映射):
command! -buffer -range=% Format execute <line1> . "," . <line2> . "!js-beautify -f - -j -B -s " . &shiftwidth编辑
可以使用上下文标记将光标返回到其初始位置:
nnoremap <leader>p m`:%!js-beautify -f - -j<CR>``发布于 2014-03-14 16:23:27
正如:!的帮助所指出的:
Vim在命令完成后重新绘制屏幕,因为它可能已经打印了任何文本。这需要一个点击输入提示,这样您就可以读取任何消息.为避免这种使用: ::安静!{cmd} 因此,您必须使用CTRL或“:重绘!”如果命令确实显示了什么。
因此,如果您想要使用:redraw!方法,例如,您可以使用如下
nnoremap <leader>p :silent !js-beautify -r -j %<cr>:e!<cr>:redraw!<cr>https://stackoverflow.com/questions/22410266
复制相似问题