小编Nat*_*man的帖子

跳转到Vim中匹配的XML标记

Vim %操作符跳转到匹配的括号,注释结束和其他一些东西.但是,它并不符合XML标记(或任何其他标记,据我所知).

使用Vim跳转到匹配的XML标记的最佳方法是什么?

注意:真正想要做的是复制XML文件中的一个部分,而无需手动查找匹配的标记.

xml vim

138
推荐指数
4
解决办法
3万
查看次数

如何使用VIM的撤消树?

这个答案说:

Vim的撤销/重做系统是无与伦比的.键入内容,撤消,键入其他内容,您仍然可以取回键入的第一个内容,因为Vim使用撤消树而不是堆栈.在几乎所有其他程序中,您输入的第一件事的历史在这种情况下都会丢失.

这是我第一次听到这个.我怎么能沿着树回溯呢?

vim undo

129
推荐指数
7
解决办法
2万
查看次数

你能在vi/vim中的括号中抓取或删除吗?

鉴于C中的这行代码:

printf("%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32)));

有没有办法从第一个粗体括号中删除或抽出其匹配的括号?我想过df),但这只会让你在9.0之后.

有没有类似的方法让vim抓住匹配大括号之间的所有内容,无论换行?

vim editor

117
推荐指数
5
解决办法
5万
查看次数

x86中"非暂时"内存访问的含义是什么?

这是一个有点低级别的问题.在x86程序集中有两个SSE指令:

MOVDQA xmmi, m128

MOVNTDQA xmmi, m128

IA-32软件开发人员手册说MOVNTDQA 中的NT代表非时间性,否则它与MOVDQA相同.

我的问题是,非时间意味着什么?

x86 assembly sse

111
推荐指数
3
解决办法
3万
查看次数

Pythonic方法检查条件是否适用于列表的任何元素

我有一个Python列表,我想检查是否有任何元素是否定的.Specman有has()列表的方法:

x: list of uint;
if (x.has(it < 0)) {
    // do something
};
Run Code Online (Sandbox Code Playgroud)

itSpecman关键字在哪里依次映射到列表的每个元素.

我觉得这很优雅.我查看了Python文档,找不到类似的东西.我能想到的最好的是:

if (True in [t < 0 for t in x]):
    # do something
Run Code Online (Sandbox Code Playgroud)

我发现这相当不优雅.有没有更好的方法在Python中执行此操作?

python list

100
推荐指数
3
解决办法
9万
查看次数

如何在Python中处理列表解析中的异常?

我在Python中有一些列表理解,其中每次迭代都会抛出异常.

例如,如果我有:

eggs = (1,3,0,3,2)

[1/egg for egg in eggs]
Run Code Online (Sandbox Code Playgroud)

我会ZeroDivisionError在第3个元素中得到一个例外.

如何处理此异常并继续执行列表推导?

我能想到的唯一方法是使用辅助函数:

def spam(egg):
    try:
        return 1/egg
    except ZeroDivisionError:
        # handle division by zero error
        # leave empty for now
        pass
Run Code Online (Sandbox Code Playgroud)

但这对我来说看起来有点麻烦.

有没有更好的方法在Python中执行此操作?

注意: 这是我设计的一个简单示例(参见上面的" 例如 "),因为我的真实示例需要一些上下文.我不想避免除零错误,而是处理列表理解中的异常.

python list-comprehension exception

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

用C或C++打印调用堆栈

有没有办法在每次调用某个函数时在C或C++中正在运行的进程中转储调用堆栈?我的想法是这样的:

void foo()
{
   print_stack_trace();

   // foo's body

   return
}
Run Code Online (Sandbox Code Playgroud)

其中的print_stack_trace工作方式类似于callerPerl.

或类似的东西:

int main (void)
{
    // will print out debug info every time foo() is called
    register_stack_trace_function(foo); 

    // etc...
}
Run Code Online (Sandbox Code Playgroud)

在哪里register_stack_trace_function放置某种内部断点,这将导致在调用时打印堆栈跟踪foo.

在某些标准C库中是否存在这样的事情?

我正在使用GCC在Linux上工作.


背景

我有一个测试运行,基于一些不应该影响此行为的命令行开关,行为不同.我的代码有一个伪随机数生成器,我假设它是基于这些开关被不同地调用的.我希望能够使用每组开关运行测试,并查看随机数生成器是否针对每个开关进行不同的调用.

c c++ linux callstack

98
推荐指数
8
解决办法
15万
查看次数

MATLAB中的哈希表

MATLAB是否支持哈希表?


一些背景

我正在研究Matlab中需要图像的缩放空间表示的问题.为此,我创建具有方差2-d高斯滤波器sigma*s^k用于k在一定范围内.,然后我使用每一个依次进行过滤图像.现在,我希望从k过滤后的图像中进行某种映射.

如果k总是一个整数,我只需创建一个3D数组,这样:

arr[k] = <image filtered with k-th guassian>
Run Code Online (Sandbox Code Playgroud)

但是,k不一定是整数,所以我不能这样做.我想做的是保持一系列的ks:

arr[find(array_of_ks_ = k)] = <image filtered with k-th guassian>
Run Code Online (Sandbox Code Playgroud)

一开始看起来似乎相当不错,除了我将使用大约20或30个值进行此次查找可能几千次k,并且我担心这会损害性能.

我想知道我是否会更好地使用某种哈希表来做这件事,这样我的查找时间就是O(1)而不是O(n).


现在,我知道我不应该过早优化,我可能根本没有这个问题,但请记住,这只是背景,并且可能存在这种情况,这确实是最佳解决方案,无论是否是我的问题的最佳解决方案.

matlab hashtable

89
推荐指数
5
解决办法
5万
查看次数

如何在VIM的命令行上指定"光标下的单词"?

我想在VIM中编写一个指定"光标下的单词"的命令.例如,假设我将光标放在一个单词上,然后让它出现两次.例如,如果单词是"abc"而我想要"abcabc",那么我可以输入:

:s/\(abc\)/\1\1/
Run Code Online (Sandbox Code Playgroud)

但是我希望能够将光标移动到"def"并使用相同的命令将其更改为"defdef":

:s/\(def\)/\1\1/
Run Code Online (Sandbox Code Playgroud)

如何在命令行中编写命令以便执行此操作?

:s/\(*whatever is under the commandline*\)/\1\1
Run Code Online (Sandbox Code Playgroud)

vim command-line

81
推荐指数
4
解决办法
3万
查看次数

反向调试如何工作?

GDB有一个支持反向调试的新版本(参见http://www.gnu.org/software/gdb/news/reversible.html).我想知道它是如何工作的.

为了使反向调试工作,在我看来,您需要存储整个机器状态,包括每个步骤的内存.这会使性能变得非常慢,更不用说使用大量内存了.这些问题是如何解决的?

reverse-debugging

80
推荐指数
5
解决办法
2万
查看次数