Vim 中使用被选择文本以 Shell 命令执行

在 Vi 中如果想选取文本作为 Shell 命令来执行该如何做呢? 想法的背景是想在 Vi 中编辑 Shell 命令,主要是对参数的修改,然后直接选择执行,而不希望复制再贴到 Terminal 下看结果。方法其实很简单,用不着使用 VimShell,关键这个插件的安装还依赖于另两个插件。方法就是:

1. 可视模式选择文本,选择技巧, 按 v 逐字选择,j 从光标位置到行尾,最有用的莫过于大 V,以行为单位选择,所以按一下大 V 直接选中当前行
2. Shift+; 进到 :'<,'> 提示符
3. 输入 w !sh, 回车即可,要用 fish 就用  w !fish

效果

vi-selection-shell

原理(这个表述其实不怎么准确):其实进行的是一个管道操作,把选择的文本内容输送给 sh 执行,相当于

echo "echo 'Hello world'" | sh

如果想把执行结果输出到文件或是剪贴板, 就可借题发挥下了,比如 阅读全文 >>

Vi 使用 Vundle 管理插件执行 PluginInstall 出错

Vi 有了 Vundle 这么一个总管(插件管理器),安装插件着实太省事了,再也不需要自己把 *.vim 文件放在各处。只需要做一次

$ git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

编辑好 ~/.vimrc 文件,装什么每次在这个文件中加上 Plugin 'scrooloose/nerdtree',运行 :PluginInstall 即可。

我第一次体验执行 vim +PluginInstall +qall (和在 Vi 中执行 :PluginInstall 同一效果), 总是得到类似这样的错误

Error detected while processing function vundle#installer#new..<SNR>46_process..vundle#installer#run..vundle#installe
r#install..<SNR>46_sync..<SNR>46_make_sync_command..<SNR>46_get_current_origin_url..<SNR>46_system:
line    1:
E484: Can't open file /var/folders/xz/vqv039517flcxtqzrq_jjy1xqzfzc0/T/v0rQ2fl/1
Error detected while processing function vundle#installer#new..<SNR>46_process..vundle#installer#run..vundle#installe
r#install..<SNR>46_sync: 阅读全文 >>