linux vim的全目录搜索 和 hostname的设置?
-
vim下的搜索命令是: vimgrep, 简写就是vim. 关于这个全局搜索的用法根grep的差不多, 但是, 如果你直接使用 grep的话 就会在vim的外部执行,
根vim内部就没有什么关系了, 所以, 要使用vimgrep, 这样搜索的结果会显式在 vim的quickfix窗口中 -
关于搜索的格式, 跟grep差不多:
vim /搜索内容/ 搜索范围
只是跟grep不同的是, 搜索内容要用 /... / 阔起来.
范围的表示方法:
- % 表示当前文件
-
- 表示当前目录(不包含子目录)
- ** 表示当前目录及其下的所有递归 子目录
- 可以使用多个路径, 用空格来隔开.
-
搜索和quickfix窗口结合使用?
你可以直接的/单独使用vim命令来搜索, 这时候, 搜索结果是保持在另外一个缓冲区,但是他不会被 直接显示出来 当然你可以用 cn, cp 来切换
但是毕竟不是很直观, 要显示更直观, 就要结合copen命令, 将搜索结果用管道命令 传递给copen打开. 即:vim /tags.php/ ** | copen
-
注意, 如果在vim冒号命令的前面 指定了范围, 比如 %, 比如1,10等这些, 就表示的是 对当前缓冲区中的内容进行操作, 就不会 "临时地"返回到控制台. 而是直接对当前缓冲区进行操作.
-
:%!nl
跟set nu
的区别是: 前者的行号是作为这一行的内容而存在, 而后者的行号不是内容的一部分.
vim中如何引用xdebug的函数命令?
是通过 冒号命令中的 :python ..., 这里好像一定要加python, 否则就是错误的.
命令中, 使用的对象是debugger, 不是 xdebug.
比如: 要单步执行调试命令, 使用的命令是: :python debugger.step_into()
逐过程执行: : python debugger.step_over()
==================================================
单纯地用mysql原生语句书写的连接/查询数据库
<?php
header('Content-type: text/html; charset=utf8');
$conn = mysql_connect('localhost', 'root', '') or die('failed to connect!');
mysql_select_db('test', $conn); // 注意,这里的参数, 一定是'db'数据库名称 在前面, $conn在后 大于符号 的后面,不能写反了!
$sql = "insert into foo(id, name) values('', '张三'), ('', '李四'), ('', '王五')";
if(mysql_query($sql)) {echo 'insert 3 rows successfully this time';}
$sql = "select * from foo";
$result = mysql_query($sql);
while($row = mysql_fetch_row($result)){
foreach($row as $val){
echo $val.' : ';
}
echo '<br>';
}
可以看作一个空白的汉字 php echo $e['line'
语义化的输出很重要!
linux的主机名, 有三种: 一是static静态主机名,二是 动态/瞬态/临时transient hostname主机名; 三是灵活主机名:pretty ['priti]
在前面两种主机名设置中, 不能包含"特殊字符或空白字符",否则会报错,而设置失败. 而pretty主机名则可以使用特殊字符或空白字符.
要注意在不同的linux发行版和版本中, 主机名使用的文件可能不同, 有的是/etc/hostname文件, 但是fedora23中使用的是/etc/sysconfig/network文件
注意linux的选项[options] 和 表达式[expression]的区别, 看以 横线开头的 究竟是 选项还是 参数?
- 通常, 选项是要放在 紧跟着 命令后面的, 而又在参数之前的, 比如:
cat -n filename
有时候, 选项也可以放在 参数的后面... - 然而,如果 所写内容不是 "选项" , 而是 参数/表达式的 一部分, 那么就 不能 紧跟着放在 命令后, 而应该 放在命令格式 所规定的位置, 而不能乱放,否则可能会 产生错误
比如 find 命令, 因为选项是可以随意放的(通常情况下是这样的), 所以 如果find -name /etc 'rc.sysinit'
这个命令就会出错, 误以为 -name是选项 而实际上 -name是参数[表达式 expression] 的一部分, 而find的格式是 find [path] [expression], 要求 path必须放在 表达式的前面, 所以 必须将-name 放在路径后面 , 作为查找条件表达式的一部分:find /etc -name 'rc.sysinit'
命令就是正确的. - 事实上, find的格式是: find [查找目录/路径] [表达式expression]
表达式包括三种: 一种是 options 查找选项,比如 -maxdepth最大查找深度, 第二种是test, 即查找条件conditions, 这个也是我们用得最多的;第三种是操作后的动作actions
要注意: 几乎linux的所有命令和程序都遵循一个概念: 程序的参数包括选项(参数)和 非选项non-option参数. option 约束程序的行为, non-option规定程序的输入值等 通常要求 option参数 应该放在 non-option参数之前. 有些程序/命令, 即使没有这样的硬性规定, 但是最好还是按照这样的顺序写. 比如find如果不按照这样写就会报错: warning, you have specified the -maxdepth option after a non-option argument, but the -maxdepth option is not positional.
默认的查找目录是当前目录.或./, 默认的表达式是 -print,直接输出到屏幕终端
查找条件有很多方式, 比如按名字查找 -name foo, 按类型查找 -type *type, 还有按时间查询等.
-type c
File is of type c:
b block (buffered) special
c character (unbuffered) special
d directory
p named pipe (FIFO)
f regular file
l symbolic link; this is never true if the -L option or the -follow option is in effect, unless the symbolic link is broken. If you want to search for symbolic links when -L is in effect, use -xtype.
s socket
D door (Solaris)
关于linux的hostname? 参考: http://blog.sina.com.cn/s/blog_d83f9fc50102w52w.html
有三种, static hostname, transient临时的, 瞬态的名字和 pretty灵活的名字, 可能通过 hostaname, 文件 /etc/hostname, /etc/sysconfig/network 等 都无法设置成功 , 不会生效. 而是要通过命令 hostnamectl [命令包括: status, set-hostname等等)
- transient名字 , 可能是由 dhcp或 dns服务器 临时分配的, 比如可能是 当前的ip地址, 而有时 终端terminal 使用的主机名 就是 transient名字, 所以会出现
[root@192.168.1.102 ~ ] #
这样的 提示符. - hostnamectl set-hostname .... 命令是即时生效的, 不需要重启机器.