我看到可以编辑Sublime Text主题(.config/sublime-text-2/Packages/Theme - Default/Default.sublime-theme)以使打开的选项卡更加明显.
为此,我使用
{
"class": "tab_control", "attributes": ["selected", "file_medium_dark"],
"tint_modifier": [0, 255, 0, 32]
/* ... */
},
Run Code Online (Sandbox Code Playgroud)
这使得标签更环保.
是否有类似的方法为已编辑(未保存)的文件/缓冲区的选项卡着色?
谢谢.
在DOS批处理文件中,实现某些事情的方法有些混淆.幸运的是,有一个很棒的批处理脚本参考站点:Simon Sheppard的SS64.(同一网站也有大量关于Bash的信息.)
一个难点是根据目录是否为空来分支执行.显而易见的if exist "%dir%\*.*"是行不通的.但是可以使用这个条件执行技巧来完成:
( dir /b /a "%dir%" | findstr . ) > nul && (
echo %dir% non-empty
) || (
echo %dir% empty
)
Run Code Online (Sandbox Code Playgroud)
另一个尴尬的问题是根据文件内容进行分支.再次,可以这样做:
( fc /B "%file1%" "%file2%" | find "FC: no differences encountered" ) > nul && (
echo "%file1%" and "%file2%" are the same
) || (
echo "%file1%" and "%file2%" are different
)
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是:
有没有办法根据文件的时间戳做分支?
这是我想要的东西:
REM *** pseudo-code!
if "%file1%" is_newer_than "%file2%" (
echo …Run Code Online (Sandbox Code Playgroud) 我有一个文件,我已重命名,然后编辑.我想告诉Git进行重命名,但不是内容修改.也就是说,我希望删除旧文件名,并添加旧文件内容和新文件名.
所以我有这个:
Changes not staged for commit:
deleted: old-name.txt
Untracked files:
new-name.txt
Run Code Online (Sandbox Code Playgroud)
但想要这个:
Changes to be committed:
new file: new-name.txt
deleted: old-name.txt
Changes not staged for commit:
modified: new-name.txt
Run Code Online (Sandbox Code Playgroud)
或这个:
Changes to be committed:
renamed: old-name.txt -> new-name.txt
Changes not staged for commit:
modified: new-name.txt
Run Code Online (Sandbox Code Playgroud)
(相似性度量应为100%).
我想不出一个直截了当的方法来做到这一点.
是否有获取特定文件的特定修订内容的语法,并将其添加到指定路径下的git临时区域?
删除部分,git rm很好:
$ git rm old-name.txt
Run Code Online (Sandbox Code Playgroud)
这是我正在努力的重命名的补充部分.(我可以保存新内容,mv在shell中签出一份新的副本(旧内容),git add然后恢复新内容,但这似乎有很长的路要走!)
谢谢!
如果我myarray在Python中有一个数组,我可以使用切片表示法
myarray[0::2]
Run Code Online (Sandbox Code Playgroud)
仅选择偶数索引元素.例如:
>>> ar = [ "zero", "one", "two", "three", "four", "five", "six" ]
>>> ar [ 0 : : 2 ]
['zero', 'two', 'four', 'six']
Run Code Online (Sandbox Code Playgroud)
Perl中有类似的设施吗?
谢谢.
以下(不是非常Perl-ish)代码
#!/usr/bin/perl
if (! -e "mydir/")
{
print "directory doesn't exist.\n";
}
open (my $fh, ">", "mydir/file.txt");
if ($fh)
{
print "file opened.\n";
print $fh;
print $fh "some text\n" or die "failed to write to file.\n";
close ($fh);
}
else
{
print "failed to open file.\n";
}
Run Code Online (Sandbox Code Playgroud)
产生这样的输出
directory doesn't exist.
file opened.
failed to write to file.
GLOB(0x...some-hex-digits...)
Run Code Online (Sandbox Code Playgroud)
为什么$ fh在公开通话后不等于假?由于mydir /不存在,我希望打开文件的尝试失败.
如果目录和文件存在,我会得到类似的结果,但文件是只读的.
我在Windows 7 x64上使用Perl 5.10.1,在Fedora-11 Linux上使用Perl 5.10.0.
我猜我的文件句柄测试是错误的.我试过谷歌没有运气.我希望它是显而易见的,但任何提示或链接都会非常感激.
谢谢,罗布.
我喜欢从版本控制系统(VCS)中区分出三种不同类型的冲突:
一个文本的冲突是一个由合并或更新过程中检测到.这是由系统标记的.在冲突解决之前,VCS不允许提交结果.
一个句法冲突不是由VCS标记,但结果将无法编译.因此,即使是一个稍微小心的程序员也应该这样做.(一个简单的例子可能是左边的变量重命名和一些使用右边的变量添加的行.合并可能有一个未解析的符号.或者,这可能会通过变量隐藏引入语义冲突.)
最后,VCS不会标记语义冲突,结果会编译,但代码可能会出现问题.在轻微的情况下,会产生不正确的结果.在严重的情况下,可能会引发崩溃.即使是这些也应该在非常谨慎的程序员提交之前通过代码审查或单元测试来检测.
我的语义冲突的例子使用SVN(Subversion)和C++,但这些选择与问题的本质并不相关.
基本代码是:
int i = 0;
int odds = 0;
while (i < 10)
{
if ((i & 1) != 0)
{
odds *= 10;
odds += i;
}
// next
++ i;
}
assert (odds == 13579)
Run Code Online (Sandbox Code Playgroud)
Left(L)和Right(R)更改如下.
左 ''优化'(改变循环变量的值):
int i = 1; // L
int odds = 0;
while (i < 10)
{
if …Run Code Online (Sandbox Code Playgroud) 我有一些代码在大型系统中崩溃.但是,代码基本上归结为以下伪代码.我已经删除了很多细节,因为我试图把它煮到骨头上; 我不认为这会错过任何重要的事情.
// in a DLL:
#ifdef _DLL
#define DLLEXP __declspec(dllexport)
#else
#define DLLEXP __declspec(dllimport)
#endif
class DLLEXP MyClass // base class; virtual
{
public:
MyClass() {};
virtual ~MyClass() {};
some_method () = 0; // pure virtual
// no member data
};
class DLLEXP MyClassImp : public MyClass
{
public:
MyClassImp( some_parameters )
{
// some assignments...
}
virtual ~MyClassImp() {};
private:
// some member data...
};
Run Code Online (Sandbox Code Playgroud)
和:
// in the EXE:
MyClassImp* myObj = new MyClassImp ( some_arguments ); …Run Code Online (Sandbox Code Playgroud) 我有一个问题,set没有在批处理文件中工作; 提出问题需要一段时间; 起初我以为这与子程序调用有关...
剧本
@echo off
setlocal
set a=aaa
echo a = "%a%"
(
set b=bbb
echo b = "%b%"
)
Run Code Online (Sandbox Code Playgroud)
产生输出
a = "aaa"
b = ""
Run Code Online (Sandbox Code Playgroud)
而我期待
a = "aaa"
b = "bbb"
Run Code Online (Sandbox Code Playgroud)
为什么这样好?这是DOS中的错误吗?也许有一些(...)我不知道的命令分组语法.
谢谢.
我经常使用Bash中的优秀查找程序列出具有特定过滤器的文件.例如,在Subversion(SVN)工作副本中,我有时希望以递归方式列出所有文件但排除.svn子目录,如下所示:
find . -name '.svn' -prune -o -type f -print
Run Code Online (Sandbox Code Playgroud)
今天,我想做类似的事情,但我也想影响列出目录内容的顺序:我希望'普通'文件后跟子目录(然后是递归内容).似乎没有这个选项.
该LS(列表)命令有一个选项,以递归列出.此命令有许多排序选项,包括按文件名列出,访问时间,大小等,但不是分类,尽管该-p选项将注释目录.
现在,我可以编写一个Python脚本来完成我想要的操作.但是,find几乎已经做了我想要的一切.通常的Bash shell中,可以结合你想要的东西,节目要做到:每个程序,如find,sort,uniq,ls,wc,执行简单的任务,但这样做很好.并非每个程序都需要能够排序,因为sort可以排序.所以,真的,我只是好奇......
我的问题是,你知道是否有办法做我想做的事情:只是通过组合Bash程序来过滤和排序递归文件列表?
例如,find给我这个按字母顺序排列的文件:
a.txt
b\file1.txt
b\subdir\file2.txt
b\then_file3.txt
c.txt
d\file4.txt
e.txt
Run Code Online (Sandbox Code Playgroud)
但我更喜欢它们的顺序,在每个目录中,普通文件首先按字母顺序排列,然后按字母顺序依次列出目录:
a.txt
c.txt
e.txt
b\file1.txt
b\then_file3.txt
b\subdir\file2.txt
d\file4.txt
Run Code Online (Sandbox Code Playgroud)
(我是Windows用户,但我在Cygwin中运行Bash shell .)
谢谢.
我在这里寻求意见.以下可以被认为是SVN特定问题或更一般的版本控制问题.
如果项目的来源要在与发布相对应的点上分支,也许是为了进行维护工作,那么它最好是:
(a)从标签分支,或
(b)标签复制的节点(例如主干上)的分支?
这两种方法的优点和缺点是什么?它有关系吗?
谢谢.
batch-file ×2
cmd ×2
perl ×2
svn ×2
bash ×1
branch ×1
c++ ×1
conflict ×1
debugging ×1
destructor ×1
file-io ×1
file-rename ×1
filesystems ×1
find ×1
git ×1
git-add ×1
msvcrt ×1
sorting ×1
sublimetext ×1
sublimetext2 ×1
syntax ×1
tags ×1
visual-c++ ×1