小编ksh*_*noy的帖子

试图映射| (管)钥匙

我正在尝试重新映射| (管道)键,(逗号),我尝试了以下

nnoremap | ,
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用并按下| 带我到线的起点.我在这里错过了什么?

vim

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

为什么我不能使用可选的UnaryPredicate参数创建模板函数?

我正在尝试使用可选参数创建模板化函数,但我无法理解编译失败的原因.这是我的测试(人为)代码:

#include <iostream>
#include <vector>

template <class UnaryPredicate>
int GetCountIf(std::vector<int> v, UnaryPredicate pred = [](auto) { return true; }) {
  int count=0;
  for (auto i: v) {
    if (pred(i)) {
      count++;
    }
  }
  return count;
}

int main() {
  auto v = std::vector<int>{0, 1, 2, 3, 4, 5};
  std::cout << "NumOddElements=" << GetCountIf(v, [](auto val) { return (val % 2 == 1); }) << '\n';
  // std::cout << "NumElements=" << GetCountIf(v) << '\n';
}

Run Code Online (Sandbox Code Playgroud)

只有在我GetCountIf()使用两个参数调用时,代码才会编译.如果我尝试仅传递1个参数,编译将失败并显示以下错误:

main.cpp:18:34:错误:没有匹配函数来调用'GetCountIf'std
:: cout …

c++ templates template-argument-deduction

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

在Vim中导航跳转列表,其中Tab映射到别处

我已经映射了<Tab>切换缓冲区的密钥.但是,<Tab>相当于<Ctrl-I>,我无法浏览跳转列表.

有什么办法来映射跳转列表导航到其他一些重要的(比如g,g.举例),这样我可以使用<Tab>独立?

vim

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

无法弄清楚一些vimrc设置

我在vimrc文件中遇到了以下几行,无法弄清楚它们应该做什么或它们应该如何工作.因使用$符号而被抛弃.它是否有任何特殊含义,或者像其他角色一样以常规方式使用?

" Parenthesis/bracket expanding
vnoremap $1 <esc>`>a)<esc>`<i(<esc>
vnoremap $2 <esc>`>a]<esc>`<i[<esc>
vnoremap $3 <esc>`>a}<esc>`<i{<esc>
vnoremap $$ <esc>`>a"<esc>`<i"<esc>
vnoremap $q <esc>`>a'<esc>`<i'<esc>
vnoremap $e <esc>`>a"<esc>`<i"<esc>

" Map auto complete of (, ", ', [
inoremap $1 ()<esc>i
inoremap $2 []<esc>i
inoremap $3 {}<esc>i
inoremap $4 {<esc>o}<esc>O
inoremap $q ''<esc>i
inoremap $e ""<esc>i
inoremap $t <><esc>i
Run Code Online (Sandbox Code Playgroud)

如果有人有兴趣.是vimrc的链接

vim

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

从Python脚本运行shell命令

我正在尝试从python脚本中运行一个shell命令,需要做几件事
1. shell命令是'hspice tran.deck>!tran.lis'2
.脚本应该在继续执行之前等待shell命令完成
3.我需要检查命令中的返回代码和
4.如果成功完成则捕获STDOUT否则捕获STDERR

我经历了子进程模块并尝试了一些事情,但无法找到完成上述所有操作的方法.
- 使用subprocess.call()我可以检查返回代码但不捕获输出.
- 使用subprocess.check_output()我可以捕获输出而不是代码.
- 使用subprocess.Popen()和Popen.communicate(),我可以捕获STDOUT和STDERR,但不能捕获返回码.
我不知道如何使用Popen.wait()或returncode属性.我也无法让Popen接受'>!' 或'|' 作为参数.

有人可以指点我正确的方向吗?我正在使用Python 2.7.1

编辑:使用以下代码

process = subprocess.Popen('ls | tee out.txt', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = process.communicate()
if(process.returncode==0):
  print out
else:
  print err
Run Code Online (Sandbox Code Playgroud)

另外,我应该在process = line之后使用process.wait()还是默认等待?

python

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

为什么不能在类的另一个函数的声明中使用静态constexpr的结果?

这是我的准系统代码:

#include <iostream>
#include <array>

class cColor {
  public:
  enum eValue { k_Red, k_Green, k_Blue };
  static constexpr std::size_t NumValues() { return 3; }
  static constexpr std::array<eValue, NumValues()> Values()  { return {k_Red, k_Green, k_Blue}; }
};

int main() {
  std::cout << "NumColors=" << cColor::NumValues() << '\n';
}
Run Code Online (Sandbox Code Playgroud)

我试图声明Values()为静态constexpr,我认为我也应该能够使用,NumValues()因为它也是静态constexpr。但是,该程序无法编译,并引发以下错误:

main.cpp:8:39: error: non-type template argument is not a constant expression
  static constexpr std::array<eValue, NumValues()> Values()  { return {k_Red, k_Green, k_Blue}; }
                                      ^~~~~~~~~~~
main.cpp:8:39: note: undefined function …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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

在 Ruby 中为散列的散列指定默认值

假设我有一个名为 person 的哈希,其键是名称,值是具有键“年龄”和“爱好”的哈希。散列人员中的条目看起来像

=> person["some_guy"] = {:hobby => "biking", :age => 30}
Run Code Online (Sandbox Code Playgroud)

我将如何指定散列“人”的默认值?我尝试了以下

=> person.default = {:hobby => "none", :age => 20}
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

编辑:

我正在设置一个属性,并希望自动填充其他属性。例如。

=> person["dude"][:age] += 5
Run Code Online (Sandbox Code Playgroud)

这就是我所看到的

=> person["dude"]
=> {:hobby => "none", :age => 25}
Run Code Online (Sandbox Code Playgroud)

这很好。但是,person在提示符下键入,我得到一个空的哈希值。

=> person
=> {}
Run Code Online (Sandbox Code Playgroud)

然而,我所期待的是

=> person
=> {"dude" => {:hobby => "none", :age => 25}}
Run Code Online (Sandbox Code Playgroud)

ruby

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

Vim - 插件中"vim:fdm = syntax ..."行的含义

我见过一些脚本包含以下行

vim: fdm=syntax:et:ts=4:sw=4:sts=4
Run Code Online (Sandbox Code Playgroud)

最初,我认为在打开文件时它会覆盖用户的现有设置.但是,当我使用将它包含在我的文件中时,它不会像我预期的那样工作.所以我现在想知道它到底是做什么的?

vim

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

bash getopts 无法识别第二个参数

这是我最简单形式的整个脚本。

#!/bin/bash
src=""
targ=${PWD}

while getopts "s:t:" opt; do
  case $opt in
    s)
      src=$OPTARG
      ;;
    t)
      targ=$OPTARG
      ;;
  esac
  shift $((OPTIND-1))
done

echo "Source: $src"
echo "Target: $targ"
Run Code Online (Sandbox Code Playgroud)

我运行这个脚本作为getopts_test -s a -t b

然而,它总是pwd在 the 前面打印 theTarget:并且从不打印b

我在这里缺少什么?

bash getopts

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

使用默认参数调用函数时出现编译错误

调用使用默认参数的函数时出现错误。

这两个文件是cache.cppcache.h

我用来编译的命令是

g++ -c cache.cpp
Run Code Online (Sandbox Code Playgroud)

错误是:

cache.cpp: In member function ‘bool mem::read(long unsigned int)’:
cache.cpp:205:88: error: no matching function for call to ‘vcache::swap(long unsigned int&, bool&)’
cache.h:97:23: note: candidate is: long unsigned int vcache::swap(long unsigned int, bool, int)
cache.cpp: In member function ‘void mem::write(long unsigned int)’:
cache.cpp:367:92: error: no matching function for call to ‘vcache::swap(long unsigned int&, bool&)’
cache.h:97:23: note: candidate is: long unsigned int vcache::swap(long unsigned int, bool, int)
Run Code Online (Sandbox Code Playgroud)

正如您在第569行上看到的,其中已定义函数vcache :: swap的地方,我为第3个参数提供了默认值。当我在函数调用期间未指定第三个参数时,就会出现问题。如果我通过显式指定第3个参数来运行它,则它将正确编译。

无法理解为什么会这样。

c++

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