小编chp*_*013的帖子

是什么原因导致Vim中的替换只匹配每行一个元素?

我最近一直在做很多改动.vimrc,而且在某个地方,我引入了一个不受欢迎的功能.当执行替换命令时,搜索令牌每行出现多次,只更改第一个令牌(尽管其余的令牌因替换而突出显示).我在这里看到了一些关于如何根据具体情况启用此行为的帖子,但我还没有看到什么会导致这是默认行为或如何禁用它.如果有人有任何想法,他们将不胜感激.

作为参考,我的.vimrc(https://github.com/chpatton013/dotfiles/blob/master/vim/.vimrc):

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Autocommands
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

" Reread configuration of Vim if .vimrc is saved
augroup VimConfig
  au!
  au BufWritePost ~/.vimrc       so ~/.vimrc
  au BufWritePost _vimrc         so ~/_vimrc
  au BufWritePost vimrc          so ~/.vimrc
augroup END

" Set colorcolumn to 80 chars, or (if not supported) highlight lines > 80 chars
augroup ColorColumnConfig
   au!
   if exists('+colorcolumn')
      au BufWinEnter * set colorcolumn=80
      au BufWinEnter * hi ColorColumn ctermbg=lightgrey guibg=lightgrey
   else
      au BufWinEnter * let w:m2=matchadd('ErrorMsg', '\%>80v.\+', …
Run Code Online (Sandbox Code Playgroud)

vim substitution

8
推荐指数
1
解决办法
2271
查看次数

Bourne shell:将$ 2到$ N的参数发送到可变参数函数?

谷歌终于让我失望了.我似乎无法在Bourne shell脚本中找到如何执行此操作:

我正在编写一个shell脚本来处理我对项目的所有测试.我已经为这个脚本可以执行的每个任务(构建,运行,清理等)设置了函数,并且希望将任何其他命令行参数(除了命令本身)传递到所需的函数上.

例:

./test.sh build -j应该传递-jbuild函数.

此逻辑的伪代码版本如下所示:

function build() {
   make $*
}

if [ $1 == 'build' ]; then
   build $2 -> $N
fi
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?

shell sh variadic-functions

8
推荐指数
2
解决办法
2913
查看次数

Docker 中的 NFS:exportfs:<path> 不支持 NFS 导出

我正在使用 docker NFS 容器,但在安装导出的目录(甚至在本地主机上)时遇到问题。

问题

exportfs: <path> does not support NFS export
Run Code Online (Sandbox Code Playgroud)

设置

我的容器使用入口点脚本来

  • 将目录(通过命令行参数提供)写入/etc/exports
  • 调用rpcbindand service nfs-kernel-server start, and
  • 推迟inotifywait继续运行。

Dockerfile 没什么特别的。我安装inotify-toolsnfs-kernel-server公开端口 2049,并复制入口点脚本。

docker-machine我正在El Capitan Macbook 上使用。

我将卷从主机映射到容器中,以使 nfs 服务器能够访问我想要导出的目录。

入口点脚本

modprobe nfs
modprobe nfsd

for x in ${@}; do
   echo -e "$x\t*(rw,sync,no_subtree_check,crossmnt,fsid=root,no_root_squash)" >> /etc/exports
done

source /etc/default/nfs-kernel-server
source /etc/default/nfs-common

rpcbind
service nfs-kernel-server start

exec inotifywait --monitor /exports
Run Code Online (Sandbox Code Playgroud)

调试

这是我尝试导出的设置。

%> ls $HOME/mounts
a
%> ls $HOME/mounts/a …
Run Code Online (Sandbox Code Playgroud)

macos nfs docker docker-machine

6
推荐指数
1
解决办法
1万
查看次数

C++如何将std :: vector <Derived*>类型的指针设置为std :: vector <Base*>类型的对象

的背景:

我正在用C++构建一个物理引擎,它计算笛卡尔空间中n体系统的引力演化,然后将其转换为任何一组预定义的坐标系.最终目标是使起始坐标系任意(在坐标系'n'中计算而不是仅用笛卡尔坐标),但这是一个遥远的目标.

问题:

因为坐标系应该可以互换,所以我使笛卡尔坐标系扩展了一个基本坐标系:

class CoordMember {
}

class CoordState {
   public:
      /* methods to operate on members */

   protected:
      std::vector<CoordMember*> members;
}

class Particle : public CoordMember {
}

class CartState : public CoordState {
}
Run Code Online (Sandbox Code Playgroud)

尝试创建指向类型std::vector<Particle*>的成员对象的类型指针时出现错误std::vector<CoordMember*>:

CartState* state = new CartState(/* initialization vars */);
std::vector<Particle*>* parts = static_cast< std::vector<Particle*>* >(&state->members);
Run Code Online (Sandbox Code Playgroud)

编译器错误是:

error: static_cast from 'std::vector<CoordMember *> *' to 'std::vector<Particle *> *' is not allowed
error: no viable overloaded '='
Run Code Online (Sandbox Code Playgroud)

我知道此时的事实是数据state->members都是类型的Particle*.我不知道要做什么才能使这个演员成为可能.有任何想法吗? …

c++ polymorphism static-cast

1
推荐指数
1
解决办法
205
查看次数