with app.app_context():
q些最为奇怪的E序语言的特性,来自stackoverflow.comQ原贴在q里。我摘选了一些例子,的确是比较怪异Q让我们一个一个来看看?/p>
在C/C++中,a[10] 可以写成 10[a]
“Hello World”[i] 也可以写?nbsp;i["Hello World"]
’5′ + 3 的结果是Q?#8217;53′
’5′ – 3 的结果是Q? 更多javascript点击q里
上面的这D늨序会(x)输出Q?nbsp;“LOL|”Q这是因???! 被{成了 | Q关于TrigraphsQ下面有个表|(x)
??= | # |
??( | [ |
??/ | \ |
??) | ] |
??’ | ^ |
??< | { |
??! | | |
??> | } |
??- | ~ |
看到下面q个表,不难理解Z么JavascriptE序员ؓ(f)什么痛苦了
Z么会(x)q样呢?你需要了解一下Java Interger CacheQ下面是相关的程序,注意其中的注?/p>
其所有的q些怪异的变量请参看Q?a style="color: #2970a6; text-decoration: none" >http://www.kichwa.com/quik_ref/spec_variables.html
L(fng)下面q段E序Q你觉得其返回trueq是falseQ?/p>
?nbsp;javascript 和python下,其行为和Java的是一L(fng)?nbsp;
下面的这D늨序你能看得懂吗?q就是所谓的Duff DeviceQ相当的怪异?/p>
PHP中的某些用法也是很怪异?/p>
呵呵。的是挺怪异的?
q入vi的命?
vi filename :打开或新建文Ӟq将光标|于W一行首
vi +n filename Q打开文gQƈ光标置于第n行首
vi + filename Q打开文gQƈ光标置于最后一行首
vi +/pattern filenameQ打开文gQƈ光标置于第一个与pattern匚w的串?
vi -r filename Q在上次正用vi~辑时发生系l崩溃,恢复filename
vi filename....filename Q打开多个文gQ依ơ进行编?
Ud光标cd?br />h Q光标左UM个字W?
l Q光标右UM个字W?
spaceQ光标右UM个字W?
BackspaceQ光标左UM个字W?
k或Ctrl+pQ光标上UM?
j或Ctrl+n Q光标下UM?
Enter Q光标下UM?
w或W Q光标右UM个字臛_?
b或B Q光标左UM个字臛_?
e或E Q光标右UM个字臛_?
) Q光标移臛_?
( Q光标移臛_?
}Q光标移x落开?
{Q光标移x落结?
nGQ光标移至第n行首
n+Q光标下Un?
n-Q光标上Un?
n$Q光标移至第n行尾
H Q光标移臛_q顶?
M Q光标移臛_q中间行
L Q光标移臛_q最后行
0Q(注意是数字零Q光标移臛_前行?
$Q光标移臛_前行?
屏幕Lcd?
Ctrl+uQ向文g首翻半屏
Ctrl+dQ向文g半屏
Ctrl+fQ向文g一?
CtrlQbQ向文g首翻一?
nzQ将Wn行滚臛_q顶部,不指定n时将当前行滚臛_q顶部?
插入文本cd?
i Q在光标?
I Q在当前行首
aQ光标后
AQ在当前行尾
oQ在当前行之下新开一?
OQ在当前行之上新开一?
rQ替换当前字W?
RQ替换当前字W及(qing)其后的字W,直至按ESC?
sQ从当前光标位置处开始,以输入的文本替代指定数目的字W?
SQ删除指定数目的行,q以所输入文本代替?
ncw或nCWQ修Ҏ(gu)定数目的?
nCCQ修Ҏ(gu)定数目的?
删除命o(h)
ndw或ndWQ删除光标处开始及(qing)其后的n-1个字
doQ删臌?
d$Q删臌?
nddQ删除当前行?qing)其后n-1?
x或XQ删除一个字W,x删除光标后的Q而X删除光标前的
Ctrl+uQ删除输入方式下所输入的文?
搜烦?qing)替换命?
/patternQ从光标开始处向文件尾搜烦pattern
?patternQ从光标开始处向文仉搜烦pattern
nQ在同一方向重复上一ơ搜索命?
NQ在反方向上重复上一ơ搜索命?
Qs/p1/p2/gQ将当前行中所有p1均用p2替代
Qn1,n2s/p1/p2/gQ将Wn1至n2行中所有p1均用p2替代
Qg/p1/s//p2/gQ将文g中所有p1均用p2替换
选项讄
allQ列出所有选项讄情况
termQ设|终端类?
ignoranceQ在搜烦中忽略大写
listQ显C制表位(Ctrl+I)和行标志($)
numberQ显C?
reportQ显C由面向行的命o(h)修改q的数目
terseQ显C简短的警告信息
warnQ在转到别的文g时若没保存当前文件则昄NO write信息
nomagicQ允许在搜烦模式中,使用前面不带“\”的特D字W?
nowrapscanQ禁止vi在搜索到达文件两端时Q又从另一端开?
mesgQ允许vi昄其他用户用write写到自己l端上的信息
最后行方式命o(h)
Qn1,n2 co n3Q将n1行到n2行之间的内容拯到第n3行下
Qn1,n2 m n3Q将n1行到n2行之间的内容U至到第n3行下
Qn1,n2 d Q将n1行到n2行之间的内容删除
Qw Q保存当前文?
Qe filenameQ打开文gfilenameq行~辑
QxQ保存当前文件ƈ退?
QqQ退出vi
Qq!Q不保存文gq出vi
Q?commandQ执行shell命o(h)command
Qn1,n2 w!commandQ将文g中n1行至n2行的内容作ؓ(f)command的输入ƈ执行之,若不指定n1Qn2Q则表示整个文件内容作为command的输?
Qr!commandQ将命o(h)command的输出结果放到当前行
寄存器操?
"?nyyQ将当前行及(qing)其下n行的内容保存到寄存器Q中Q其?Z个字母,nZ个数?
"?nywQ将当前行及(qing)其下n个字保存到寄存器Q中Q其?Z个字母,nZ个数?
"?nylQ将当前行及(qing)其下n个字W保存到寄存器?中,其中?Z个字母,nZ个数?
"?pQ取出寄存器Q中的内容ƈ其攑ֈ光标位置处。这里?可以是一个字母,也可以是一个数?
nddQ将当前行及(qing)其下共n行文本删除,q将所删内Ҏ(gu)?号删除寄存器中?br />
VI的?br />--------------------------------------------------------------------------------
一、插入文?
┌──┬────────────┐
│命o(h)│描述 │
├──┼────────────┤
│i │在当前字W前插入文本 │
├──┼────────────┤
│I │在行首插入文? │
├──┼────────────┤
│a │在当前字W后d文本 │
├──┼────────────┤
│A │在行末添加文本 │
├──┼────────────┤
│o │在当前行后面插入一I │
├──┼────────────┤
│O │在当前行前面插入一I │
├──┼────────────┤
│R │以改写方式输入文本 │
└──┴────────────┘
二、移动光?
┌─────┬───────────┐
│命o(h) │描述 │
├─────┼───────────┤
│j或下头 │向下Ud一行 │
├─────┼───────────┤
│k或上头 │向上Ud一行 │
├─────┼───────────┤
│h或左头 │左移一个字W │
├─────┼───────────┤
│l或右头 │右移一个字W │
├─────┼───────────┤
│w │右移一个词 │
├─────┼───────────┤
│W │右移一个以I格分隔的词│
├─────┼───────────┤
│b │左移一个词 │
├─────┼───────────┤
│B │左移一个以I格分隔的词│
├─────┼───────────┤
│0 │Ud行首 │
│Ctrl-F │向前页 │
├─────┼───────────┤
│Ctrl-B │向后页 │
├─────┼───────────┤
│nG │到第n? │
├─────┼───────────┤
│G │到最后一行 │
└─────┴───────────┘
三、替换文?
┌─────┬──────┐
│命o(h) │描述 │
├─────┼──────┤
│$ │到行 │
├─────┼──────┤
│( │到句子的开?#9474;
├─────┼──────┤
│) │到句子的末尾│
├─────┼──────┤
│{ │到段落的开?#9474;
├─────┼──────┤
│} │到段落的末尾│
└─────┴──────┘
四、删除文?
┌───┬───────────┐
│命o(h) │描述 │
├───┼───────────┤
│r │替换一个字W? │
├───┼───────────┤
│c │修改文本直到按下Esc?│
├───┼───────────┤
│cw │修改下一个词 │
├───┼───────────┤
│cnw │修改接下来的n个词 │
└───┴───────────┘
五、文本编?
┌──┬──────────────────────┐
│命寺│描述 │
├──┼──────────────────────┤
│yy │一行文本移到缺省缓冲区? │
├──┼──────────────────────┤
│yn │下一个词Ud~省~冲Z │
├──┼──────────────────────┤
│ynw │后面的n个词Ud~省~冲Z │
├──┼──────────────────────┤
│p │如果~省~冲Z包含一行文本,则在当前 │
│ │行后面插入一个空行井缺省缓冲区中的声 │
│ │容粘贴到q一行中Q如果缺省缓冲区中包含 │
│ │多个词,把这些词_脓(chung)到光标的双Q │
├──┼──────────────────────┤
│P │如果~省~冲Z包含一行文本,则正当前 │
│ │行前面插入一个空行井缺省缓冲区中的? │
│ │容粘贴到q一行中Q如果缺省缓冲区中包? │
│ │多个词,把这些词_脓(chung)到光标的左边
│
└──┴──────────────────────┘
六、保存退?
┌───────────┬───────────────┐
│命o(h) │描述 │
├───────────┼───────────────┤
│zz │保存q出 │
├───────────┼───────────────┤
│:w filename │写入文g │
├───────────┼───────────────┤
│:W │写入文g │
├───────────┼───────────────┤
│:x │保存(如果当前文g修改q?q?#9474;
├───────────┼───────────────┤
│:q! │不保存文Ӟ直接退出 │
├───────────┼───────────────┤
│:q │退出vi │
VI常用技?br />
VI命o(h)可以说是Unix/Linux世界里最常用的编辑文件的命o(h)了,但是因ؓ(f)它的命o(h)集众多,很多人都不习(fn)惯用它Q其实?zhn)只需要掌握基本命令,然后加以灉|q用Q就?x)发现它的优势,q会(x)逐渐喜欢使用q种Ҏ(gu)。本文旨在介lVI的一些最常用命o(h)和高U应用技巧?
一、基本命令介l?
---- 1Q光标命?
k、j、h、l——上、下、左、右光标Ud命o(h)。虽然?zhn)可以在Linux中用键盘右边的4个光标键Q但是记住这4个命令还是非常有用的。这4个键正是x在键盘上攄的基本位|?
nG——跌{命o(h)。n敎ͼ该命令立即光标跛_指定行?
Ctrl+G——光标所在位|的行数和列数报告?
w、b——使光标向前或向后跌一个单词?
---- 2Q编辑命?
i、a、r——在光标的前、后以及(qing)所在处插入字符命o(h)(i=insert、a=append、r=replace)?
cw、dw——改变(|换)/删除光标所在处的单词的命o(h) (c=change、d=delete)?
x、d$、dd——删除一个字W、删除光标所在处到行所有字W以?qing)删除整行的命o(h)?
---- 3Q查扑֑?
---- /string?string——从光标所在处向后或向前查扄应的字符串的命o(h)?
---- 4Q拷贝复制命?
---- yy、p——拯一行到剪脓(chung)板或取出剪脓(chung)板中内容的命令?
二、常见问题及(qing)应用技?
---- 1Q在一个新文g中读/etc/passwd中的内容Q取出用户名部分?
---- vi file
---- :r /etc/passwd 在打开的文件file中光标所在处d/etc/passwd
---- :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行所有部分?
---- (zhn)也可以在指定的行号后读入文件内容,例如使用命o(h)“:3r /etc/passwd”从新文g的第3行开始读?/etc/passwd的所有内宏V?
---- 我们q可以用以下方法删掉文件中所有的I?qing)?开始的注释行?
---- #cat squid.conf.default | grep -v ^$ | grep -v ^#
---- 2Q在打开一个文件编辑后才知道登录的用户对该文g没有写的权限Q不能存盘,需要将所做修改存入(f)时文件?
---- vi file
---- :w /tmp/1 保存所做的所有修改,也可以将其中的某一部分修改保存C(f)时文Ӟ例如仅仅把第20?9行之间的内容存盘成文?tmp/1Q我们可以键入如下命令?
---- vi file
---- :20,59w /tmp/1
---- 3Q用VI~辑一个文Ӟ但需要删除大D늚内容?
---- 首先利用~辑命o(h)“vi file”打开文gQ然后将光标Ud需要删除的行处按Ctrl+G昄行号Q再到结֤再按Ctrl+GQ显C文件结行号?
---- :23,1045d 假定2ơ得到的行号?3?045Q则把这期间的内容全删除Q也可以在要删除的开始行和结束行中用ma、mb命o(h)标记Q然后利?#8220;:a,bd”命o(h)删除?
---- 4Q在整个文g的各行或某几行的行首或行֊一些字W串?
---- vi file
---- :3,$s/^/some string / 在文件的W一行至最后一行的行首插入“some string”?
---- :%s/$/some string/g 在整个文件每一行的行尾d“some string”?
---- :%s/string1/string2/g 在整个文件中替换“string1”?#8220;string2”?
---- :3,7s/string1/string2/ 仅替换文件中的第3行到W?行中?#8220;string1”?#8220;string2”?
---- 注意: 其中s为substituteQ?表示所有行Qg表示global?
---- 5Q同时编?个文Ӟ拯一个文件中的文本ƈ_脓(chung)到另一个文件中?
---- vi file1 file2
---- yy 在文?的光标处拯所在行
---- :n 切换到文? (n=next)
---- p 在文?的光标所在处_脓(chung)所拯的行
---- :n 切换回文?
---- 6Q替换文件中的\径?
---- 使用命o(h)“:%s#/usr/bin#/bin#g”可以把文件中所有\?usr/bin换成/bin。也可以使用命o(h)“:%s//usr/bin//bin/g”实现Q其?#8220;”是{义字W,表明其后?#8220;/”字符是具有实际意义的字符Q不是分隔符?/p>