小编Ste*_* Lu的帖子

在vim的vim实例中移动vim中的缓冲区

这可能吗?

从概念上讲,解决方案应该适用于许多可能的配置,范围从在tmux窗口的窗格中的单独虚拟终端中运行的两个vim实例,到位于不同地理区域中的单独机器上的单独终端,一个或两个通过网络连接(换句话说,vims由两个独立的shell进程托管,无论如何它们已经在tmux下了.

这个案例促使我思考这个问题:

我有两个tmux面板,vim打开,我想使用Vim yank/paste来复制文件.

但它只有在我让它们都在Vim的同一个实例中运行时才有效,所以我不得不:

  1. 使用tmux的复制/粘贴功能来获取内容(这有点乏味和挑剔),或
  2. 使用终端(PuTTY,iTerm2)的复制/粘贴功能来获取内容(这同样繁琐但不受网络延迟的影响,但是这只能达到一定大小的文本有效负载才能复制此方法由于终端不知道文件中当前不可见部分的内容,所以根本不起作用,或者
  3. 丢失Vim缓冲区历史/上下文以及可能的shell历史/上下文,在分割缓冲区或选项卡中的一个Vim实例中手动重新打开文件,然后关闭另一个终端上下文(对于大型有效负载而言,更不用说1,但更多的是小型有效载荷).

这有点像PITA,如果我有远见切换到已经运行vim的合适终端来打开我的文件,但是工作流程和习惯的命运很少与本来很方便的相匹配,这一切都可以避免.

所以问题是,是否存在一个命令或者是一个直接构造(shell)脚本的可能性,它允许我在独立运行的vim实例之间加入缓冲区?我很难让Google充分回答这个问题.

如果没有足够的答案(或者如果确定Vim不具备在其实例中完成缓冲区转移的特征),则可以接受上述方法3的良好实施(可与键密接).

与此同时,我将继续进一步自定义我的vim配置,并强迫自己尽可能少地使用vim实例.

unix vim

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

如何执行`xargs`的反转?

我有一个我要反转的数字列表.

它们已经排序了.

35 53 102 342

我要这个:

342 102 53 35

所以我想到了这个:

echo $NUMBERS | ??? | tac | xargs

什么是???

它应该将空格分隔列表转换为行分隔列表.

我想避免设置IFS.

也许我可以使用bash数组,但是我希望有一个命令,其生命的目的是与xargs相反(也许xargs不仅仅是一个小技巧!)

unix linux bash

14
推荐指数
4
解决办法
4273
查看次数

了解低级鼠标和键盘钩子(win32)

我正在尝试捕获全局鼠标和键盘输入.

LRESULT CALLBACK MouseHookProc(int nCode, WPARAM wParam, LPARAM lParam) {
  if (nCode >= 0) {
    if (wParam == WM_RBUTTONDOWN) printf("right mouse down\n");
    if (wParam == WM_RBUTTONUP) printf("right mouse up\n");
  }
  return CallNextHookEx(0, nCode, wParam, lParam);
}

HHOOK mousehook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookProc, NULL, 0);
while(true) {
  MSG msg;
  if (PeekMessage(&msg,0,0,0,PM_REMOVE)) {
    printf("msg recvd\n");
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
#ifdef TEST
  Sleep(50);
#endif
}
Run Code Online (Sandbox Code Playgroud)

所以一切都在这里工作,除非我#define TEST放入Sleep,鼠标变得非常迟钝,如果我突然只允许鼠标每秒更新20次,可能会出现这种情况.没有睡眠,我将CPU固定在100%.但是现在这没关系(如果我使用的话就会消失GetMessage).

根据我的理解,低级钩子通过上下文切换到安装它的进程,然后发送进程某种消息让它执行钩子回调.令我困惑的是,为什么我的程序永远不会打印"msg recvd",但只要我点击鼠标右键,就会打印"鼠标右键/向上".这使我得出结论,我MouseHookProcPeekMessage呼叫期间被调用.它恰好是某种特殊的消息,并PeekMessage返回0.但我仍然需要打电话PeekMessage或一些等价物.

由于我的程序需要做很多事情,我显然不能通过PeekMessage …

c++ winapi multithreading

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

glTexStorage做什么?

文件表明,这种"分配"储存纹理和水平.提供的伪代码似乎表明这是针对mipmap级别的.

如何使用glTexStorage涉及glGenerateMipmapglTexStorage似乎"锁定"纹理的存储大小.在我看来,这只会使事情变得不那么灵活.是否意味着要在这里获得性能提升?

它是相当新的,只能在4.2中使用,所以我会尽量避免使用它,但我很困惑,因为它的描述使它听起来很重要.

如何在早期GL版本中管理纹理存储?当我打电话给glTexImage2D我有效擦除并释放以前与纹理手柄相关联的存储时,是吗?并且生成mipmap也会自动为我处理存储空间.

我记得使用老式的glTexSubImage2D方法来实现OpenGL 2风格的渲染到纹理,以便在我以前的引擎实验中做一些后期处理效果.这是有道理的,glTexStorage会带来管理纹理相关的资源,现在我们有更好的方法来做到RTT更明智的方式.

opengl

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

创建胖文件:libtool vs lipo(我应该更喜欢lipo吗?)

我想知道使用时会有什么不同:

lipo -create i386/libAwesome.a armv7/libAwesome.a -o fat/libAwesome.a
Run Code Online (Sandbox Code Playgroud)

libtool -static i386/libAwesome.a armv7/libAwesome.a -o fat/libAwesome.a
Run Code Online (Sandbox Code Playgroud)

我的印象lipo更为通用,它只会粘贴来自不同架构的两个文件,而libtool特定于库,这是真的吗?

在什么情况下我应该更喜欢Lipo而不是Libtool?

iphone macos ios libtool-xcode lipo

13
推荐指数
0
解决办法
1320
查看次数

跟踪Web应用程序中所有Javascript的执行情况

情况如下:复杂的Web应用程序无法正常工作,并且可能始终如一地产生不需要的行为.问题的原因尚不清楚.

建议:跟踪所有javascript代码的执行路径.本质上,生成两个怪异的日志,然后可以将其输入diff算法以确定与bug相关的行为开始发散的位置(因为应用程序行为不明显,并且理解并获取实际JS代码的副本)由于必须切换到Web检查器并从Web检查器中复制出许多页面,因此运行起来很困难.所有页面都与Perl代码动态拼接在一起这一事实,其中JS代码的重要部分仅存在于(动态......)Perl字符串).

Chrome中的Web Inspector没有关于记录执行跟踪的选项.基本上我想要的是按执行顺序执行的每一行JS的日志.鉴于JS VM是单线程的,我认为这不是一件难事.问题很简单,现有的面向用户的工具并不是为这么多的核心调试而设计的.如果我们在Dev Tools中查看Profiler,它显然能够提供我需要的那种仪器,但它基本上是为了进行分析而不是跟踪.

我怎么能开始这个?我可以通过某种方式从源代码构建Chrome

  • 在V8中关闭JIT?
  • 将V8评估的每个javascript表达式记录到一个文件中

我对Chrome的开发方面没有任何经验.那么例如链接到Chrome/Chromium/Canary的dev-builds/branches/versions/distros(有什么区别?)是受欢迎的.

在这一点上,似乎使用强大的js跟踪来检测浏览器仍然比重新设计有缺陷的应用程序更容易.页面的体系结构是一场灾难,但功能很复杂,几乎完全有效.我只需要找到一个缺失的部分.

或者,如果已存在此类工具,我可以搜索哪些其他关键字?"代码追踪"几乎是我唯一可以提出的.

我测试了dynaTrace,这是一个快乐的巧合,因为我们的应用程序支持IE(确实Chrome支持刚刚测试版),但这不会产生文本转储,它基本上产生了一个巨大的 Win32 UI expando-tree,这是不可能的差异.这让我非常难过,因为我知道让跟踪的表现形式显示出来更加困难,但事实证明它几乎完全无用.除了网络应用程序的玩具示例之外,谁会在树视图中上下滚动并查看其中真正有用的任何内容?

javascript browser trace google-chrome v8

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

使用nvm时管理全局npm包

我觉得我需要能够将全局npm软件包分别安装到NVM目录中.

$ nvm install v0.11
######################################################################## 100.0%
Now using node v0.11.16
$ node-inspector
Node Inspector v0.9.2
Visit http://127.0.0.1:8080/debug?port=5858 to start debugging.
Run Code Online (Sandbox Code Playgroud)

我的节点检查员停止了工作!

$ npm update -g
<bunch of updating, succeeds>
Run Code Online (Sandbox Code Playgroud)

也许这会有所帮助......不!仍然破碎.叹.也许...... node-inspector不适用于v0.11.16(在nvm上运行).也许.谁知道.好吧,是时候中止了.

$ nvm use system
Now using system version of node: v0.10.32.
$ node-inspector --version
dyld: lazy symbol binding failed: Symbol not found: _node_module_register
  Referenced from: /usr/local/lib/node_modules/node-inspector/node_modules/ws/build/Release/bufferutil.node
  Expected in: dynamic lookup

dyld: Symbol not found: _node_module_register
  Referenced from: /usr/local/lib/node_modules/node-inspector/node_modules/ws/build/Release/bufferutil.node
  Expected in: dynamic lookup

[1]    93845 trace trap  node-inspector --version …
Run Code Online (Sandbox Code Playgroud)

node.js npm

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

使用联合来简化演员表

我意识到我想做的事情并不安全.但我只是在做一些测试和图像处理,所以我的重点是速度.

现在,这段代码为我提供了32位像素值类型的相应字节.

struct Pixel {
    unsigned char b,g,r,a;
};
Run Code Online (Sandbox Code Playgroud)

我想检查一下像素是否低于某个值(例如r, g, b <= 0x10).我想我只想条件测试像素的位和位0x00E0E0E0(我可能有错误的字节顺序)来获得暗像素.

我没有使用这个丑陋的混乱(*((uint32_t*)&pixel))来获取32位无符号整数值,而是认为应该有一种方法让我设置它以便我可以使用pixel.i,同时保持使用引用绿色字节的能力pixel.g.

我可以这样做吗?这不起作用:

struct Pixel {
    unsigned char b,g,r,a;
};
union Pixel_u {
    Pixel p;
    uint32_t bits;
};
Run Code Online (Sandbox Code Playgroud)

我需要编辑我现有的代码来说明pixel.p.g绿色字节.如果我这样做会发生同样的情况

union Pixel {
    unsigned char c[4];
    uint32_t bits;
};
Run Code Online (Sandbox Code Playgroud)

这也可以工作,但我仍然需要更改所有索引到的内容c,这有点难看,但如果我真的需要,我可以使用宏.

c unions data-structures

12
推荐指数
3
解决办法
6037
查看次数

如何构建clang/examples/PrintFunctionNames?

我需要一些简单的例子来开始使用clang.我下载了llvm和clang并构建了:

mkdir llvm-build
cd llvm-build
../llvm/configure
make
Run Code Online (Sandbox Code Playgroud)

我试图从clang示例构建PrintFunctionNames但收到错误消息:

../../../../Makefile.common:61:../../../../Makefile.config:没有这样的文件或目录../../../ .. /Makefile.common:69:/Makefile.rules:没有这样的文件或目录make:*没有规则来制作目标`/Makefile.rules'.停止.

自述文件说只需要make.那么如何构建这个插件呢?

build clang

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

在String.split()中使用捕获组

$ node
> "ababaabab".split(/a{2}/)
[ 'abab', 'bab' ]
> "ababaabab".split(/(a){2}/)
[ 'abab', 'a', 'bab' ]
>
Run Code Online (Sandbox Code Playgroud)

所以,这对我来说没有意义.有人可以解释一下吗?我不明白为什么要'a'出现.

注意:我正在尝试匹配双倍的行结尾(可能在Windows文件中),所以我分裂/(\r?\n){2}/.但是我'\015\n'在我的数组中得到了无关的条目(注释\015 == \r).

为什么会出现这些?

注意:也影响浏览器中的JS引擎,因此这特定于JS而不是节点.

javascript regex

12
推荐指数
2
解决办法
4979
查看次数