小编Tne*_*ppa的帖子

如何在vim中的多个选项卡中编辑同一个文件?

我经常在vim中编辑长文件,这些文件在文件中的多个不同位置都有代码块,我需要经常在它们之间来回切换.显然,解决这个问题的一种方法是将窗口拆分为:拆分并编辑不同拆分窗口中的每个部分,并且:w在任一窗口中都将保存整个文件.如果你有一个足够大的屏幕,这是好的,但有时我必须在低分辨率的笔记本电脑上使用vim,我不想通过分割窗口进一步减少我的屏幕空间.

在这种情况下,我真正想做的是在多个选项卡中编辑文件,并将每个单独的选项卡视为单独的视图拆分.我可以通过使用:tabopen <the same filename>一次打开文件的一个副本来模仿这个,但这有点hacky - 如果我已经对文件进行了更改,它就无法工作,因为vim认为我只是打开文件第二次.

有没有一个很好的方法来获得我想要的行为在vim中的标签?

vim tabs

27
推荐指数
2
解决办法
7736
查看次数

如何在ghci中的do块中使用let?

我正在尝试以交互方式在ghci中创建一个do块.只要我没有在块中定义变量,就可以了:

Prelude>let a = do putStrLn "test"; putStrLn "other test"
Prelude>
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何在交互式地在do块中定义let构造而不会出现解析错误:

Prelude> let a = do let b = 5; putStrLn $ show b

<interactive>:2:40:
    parse error (possibly incorrect indentation or mismatched brackets)
Run Code Online (Sandbox Code Playgroud)

明显

let a = do
     let b = 5
     putStrLn $ show b
Run Code Online (Sandbox Code Playgroud)

在Haskell源文件中完全没问题.我只是在弄清楚如何将其翻译成ghci.

haskell ghci

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

为什么指定协议但不实现所需的方法不是编译器错误?

在objective-c中,我可以做类似的事情

@interface MyViewController : UIViewController <UITextInputDelegate>
Run Code Online (Sandbox Code Playgroud)

为实现UITextInputDelegate协议的类MyViewController创建规范.现在,这个协议有几个必需的方法,所以我认为编译器根本不会让代码编译,除非这些方法确实在.m文件中实现了.无论如何,这编译.编译器会发出 spout 警告,所以很明显它检测到我没有实现所需的方法,但我想知道为什么在语言设计器方面允许这个编译是有意义的.

objective-c

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

无法使用cimg库将图像正确保存到文件中

这是我的全部代码:

#include "CImg.h"
#include <iostream>

using namespace cimg_library;
int main() {

CImg<float> image(100,100,1,3,0);
const float color[] = {1.0,1.0,0.0};
image.draw_point(50,50,color);
image.save("file.bmp");
CImgDisplay local(image, "Hah");
while (true) {
    local.wait();
    }   

}
Run Code Online (Sandbox Code Playgroud)

这成功地显示了我在窗口中所期望的内容,即一个白色像素为50,50的完全黑色正方形.但是,file.bmp只是一个黑色正方形,没有那个像素(并且保存了一个cimg图像,该图像已经通过在较大的程序中重复调用draw_point而修改,该程序执行一些有用的操作也会失败).这里发生了什么?

c++ cimg

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

与其他版本控制系统相比,git checkout 有多贵?

我不完全确定 git 如何实现签出,但大概它是删除磁盘上的文件(对应于工作副本),并将文件从其内部表示写入工作副本。所以在我看来,如果你的项目有很多文件,那么就磁盘 I/O 而言,git checkout 应该是一件昂贵的事情。但通常似乎不需要那么长时间(尽管也许我只是使用足够小的存储库,因此这并不重要)。那么 git 是否以比我想象的更智能的方式做到这一点,或者这里是否还有其他考虑因素,或者实际上 git checkout 很昂贵而我只是没有注意到,因为我有很好的硬件够用吗?

git

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

我可以直接链接到GPL的FSF副本吗?

我有一些代码我想在GPL v3下获得许可.FSF建议的标题是:

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more …
Run Code Online (Sandbox Code Playgroud)

gpl

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

无法从文件创建UIImageView

我在项目的同一目录中有一个带复选标记的图像作为.png,名为"checkbox.png".我想用该图像作为背景创建一个UIImageView,并将其设置为一组UITableViewCells的附件视图.我目前有:

UIView * v = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:@"checkmark.png"]];
v.backgroundColor = [UIColor redColor];
cell.accessoryView = v;
[v autorelease];
Run Code Online (Sandbox Code Playgroud)

哪个不行.我可以制作另一个虚拟UIView(例如

v = [[UIView alloc] init]; 
v.backgroundColor = [UIColor redColor];
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,它在我的uitableviewcells的右侧显示一个小红框.我不确定为什么带有复选框的视图不起作用.我指定文件路径的方式有问题吗?

cocoa-touch ios xcode4

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

为什么这个堆栈溢出得这么快?

所以我写了一个玩具C程序,故意造成堆栈溢出,只是为了解决我的系统限制:

#include <stdio.h>

int kefladhen(int i) {
    int j = i + 1;
    printf("j is %d\n",j);
    kefladhen(j);
}

int main() {
    printf("Hello!:D\n");
    kefladhen(0);
}
Run Code Online (Sandbox Code Playgroud)

我惊讶地发现在分段错误之前打印的最后一行是"j是174651".当然,每次运行时它的确切数量都会有所变化,但总的来说,令我惊讶的是,在我的4GB linux笔记本电脑上进行处理耗尽了17,000多个堆栈帧就足以耗尽内存.我认为也许printf会产生一些开销,但printf会在我以递归方式调用kefladhen()之前返回,所以堆栈指针应该回到之前的位置.我每次调用只存储一个int,所以每个堆栈帧总共应该只有8个字节,对吧?所以它们中有174,000多个只有大约一兆字节和一半的实际内存,这对我来说似乎很低.我在这里误解了什么?

c memory

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

Objective-C消息是否有等效的方法声明/定义分离?

假设我有一个Objective-c .m文件,定义了以下方法:

- (void) doOneThing {
      [self doAnotherThing];
}

- (void) doAnotherThing {
       [self stillOtherThings];
}
Run Code Online (Sandbox Code Playgroud)

如果我编译它,xcode会向我发出警告,该类可能不响应-doAnotherThings,因为doAnotherThing定义在-doOneThing下面,并且编译器在编译-doOneThing时还不知道-doAnotherThing.当然,代码编译正确并且确实有效,但我想摆脱那条警告信息.

解决这个问题的简单方法是在-doOneThing之前定义-doAnotherThing,但有时我喜欢在源代码中对相关方法进行分组,使其难以重新排序.如果这是C,我可以这样做:

void doAnotherThing();

void doOneThing() {
    doAnotherThing();
}

void doAnotherThing() {
     ...still other things...
}
Run Code Online (Sandbox Code Playgroud)

将定义与声明分开.有没有办法在objective-c中做这样的事情,或以其他方式解决我的问题?

objective-c

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

使用setToolbarItems时如何控制布局?

我正在尝试以UIBarButtonItem编程方式从底部工具栏添加2 秒UIViewController.现在我正在创建按钮,将它们添加到a NSArray,然后调用[self setToolbarItems:buttonArray animated:YES].这会将按钮添加到工具栏的左下角,彼此相邻.我想要做的是在工具栏的左下角添加一个按钮,在右下角添加另一个按钮.我该怎么做呢?

cocoa-touch ios

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

为什么我不能设置大于2 ^ 32的time_t?

我在C中乱搞FUSE,我想创建一个看起来将在未来创建的文件.我在FUSE中编写的自定义stat()函数写入struct stat*stbuf,我想做类似的事情

stbuf->st_ctime = (1 << 39) - 1;
Run Code Online (Sandbox Code Playgroud)

为了创造一个创造日期,将来会有一段荒谬的时间.

我在64位Linux系统上运行它,所以我希望我的time_t是64位值,实际上,如果我只是printf("%d \n",(int)sizeof(x)); 为了测试我的程序中time_t的大小,我得到8.然而,当我编译我的代码并打开警告时,我得到了

warning: left shift count >= width of type [enabled by default]
Run Code Online (Sandbox Code Playgroud)

以及我在安装的文件系统中统计文件时的更改时间

1969-12-31 15:59:59.000000000 -0800
Run Code Online (Sandbox Code Playgroud)

好像实际值是0.有谁知道为什么这应该发生在一个应该有64位time_t的64位系统上?

c time-t fuse

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

标签 统计

c ×2

cocoa-touch ×2

ios ×2

objective-c ×2

c++ ×1

cimg ×1

fuse ×1

ghci ×1

git ×1

gpl ×1

haskell ×1

memory ×1

tabs ×1

time-t ×1

vim ×1

xcode4 ×1