($width) AND $width .= 'px';
$style = " style=\"width: $width\"";
}
$value = $value ? $value : date('H:i');
$s = "";
return $s;
}
// form_date('start', '2018-07-05') 为空则当前日期
function form_date($name, $value = 0, $width = FALSE)
{
$style = '';
if (FALSE !== $width) {
is_numeric($width) AND $width .= 'px';
$style = " style=\"width: $width\"";
}
$value = $value ? $value : date('Y-m-d');
$s = "";
return $s;
}
/**用法
*
* echo form_radio_yes_no('radio1', 0);
* echo form_checkbox('aaa', array('无', '有'), 0);
*
* echo form_radio_yes_no('aaa', 0);
* echo form_radio('aaa', array('无', '有'), 0);
* echo form_radio('aaa', array('a'=>'aaa', 'b'=>'bbb', 'c'=>'ccc', ), 'b');
*
* echo form_select('aaa', array('a'=>'aaa', 'b'=>'bbb', 'c'=>'ccc', ), 'a');
*/
?>组保留的标签 余下为需要删除的标签
unset($oldtag[$key]);
}
}
}
if (!empty($oldtag)) {
$tagids = array();
foreach ($oldtag as $tagid => $tagname) {
$tagids[] = $tagid;
}
well_oldtag_delete($tagids, $tid);
}
$r = well_tag_process($tid, $fid, $create_tag, $tagarr);
return $r;
}
// 删除标签和绑定的主题
function well_oldtag_delete($tagids, $tid)
{
$pagesize = count($tagids);
$arrlist = well_tag_find_by_tagids($tagids, 1, $pagesize);
$delete_tagids = array(); // 删除
$tagids = array();
$n = 0;
foreach ($arrlist as $val) {
++$n;
if (1 == $val['count']) {
// 只有一个主题
$delete_tagids[] = $val['tagid'];
} else {
$tagids[] = $val['tagid'];
}
}
!empty($delete_tagids) and well_tag_delete($delete_tagids);
$arlist = well_tag_thread_find_by_tid($tid, 1, $n);
if ($arlist) {
$ids = array();
foreach ($arlist as $val) $ids[] = $val['id'];
well_tag_thread_delete($ids);
}
!empty($tagids) and well_tag_update($tagids, array('count-' => 1));
}
// 标签数据处理 $arr=新提交的数组 $tagarr=保留的旧标签
function well_tag_process($tid, $fid, $new_tags = array(), $tagarr = array())
{
if (empty($tid)) return '';
// 新标签处理入库
if ($new_tags) {
$threadarr = array();
$tagids = array();
$i = 0;
$size = 5;
$n = count($tagarr);
$n = $n > $size ? $size : $size - $n;
foreach ($new_tags as $name) {
++$i;
$name = trim($name);
$name = stripslashes($name);
$name = strip_tags($name);
$name = str_replace(array(' ', '#', "@", "$", "%", "^", '&', '·', '<', '>', ';', '`', '~', '!', '¥', '……', ';', '?', '?', '-', '—', '_', '=', '+', '.', '{', '}', '|', ':', ':', '、', '/', '。', '[', ']', '【', '】', '‘', ' ', ' ', ' ', ' ', ' '), '', $name);
$name = htmlspecialchars($name, ENT_QUOTES);
if ($name && $i <= $n) {
// 查询标签
$read = well_tag_read_name($name);
if ($read) {
// 存在 count+1
$tagids[] = $read['tagid'];
} else {
// 入库
$arr = array('name' => $name, 'count' => 1);
$tagid = well_tag_create($arr);
FALSE === $tagid and message(-1, lang('create_failed'));
$read = array('tagid' => $tagid, 'name' => $name);
}
$tag_thread = array('tagid' => $read['tagid'], 'tid' => $tid);
$threadarr[] = $tag_thread;
$tagarr[$read['tagid']] = $read['name'];
}
}
!empty($threadarr) and tag_thread_big_insert($threadarr);
!empty($tagids) and well_tag_update($tagids, array('count+' => 1));
}
$json = empty($tagarr) ? '' : xn_json_encode($tagarr);
return $json;
}
?>return $r;
}
/**
* @param int $page 页数
* @param int $pagesize 每页显示数量
* @return mixed
*/
function link_find($page = 1, $pagesize = 100)
{
$arr = link__find($cond = array(), array('rank' => -1), $page, $pagesize);
return $arr;
}
/**
* @param $id
* @return bool 返回FALSE失败 TRUE成功
*/
function link_delete($id)
{
if (empty($id)) return FALSE;
$r = link__delete(array('id' => $id));
link_delete_cache();
return $r;
}
//--------------------------kv + cache--------------------------
/**
* @return mixed 返回全部友情链接
*/
function link_get($page = 1, $pagesize = 100)
{
$g_link = website_get('friends_link');
if (empty($g_link)) {
$g_link = link_find($page, $pagesize);
$g_link AND website_set('friends_link', $g_link);
}
return $g_link;
}
// delete kv and cache
function link_delete_cache()
{
website_set('friends_link', '');
return TRUE;
}
?> $v = implode(",", $v);
$temp[] = $v;
}
// 去掉重复的字符串,也就是重复的一维数组
$temp = array_unique($temp);
// 再将拆开的数组重新组装
$output = array();
foreach ($temp as $k => $v) {
if ($stkeep) $k = $starr[$k];
if ($ndformat) {
$temparr = explode(",", $v);
foreach ($temparr as $ndkey => $ndval) $output[$k][$ndarr[$ndkey]] = $ndval;
} else $output[$k] = explode(",", $v);
}
return $output;
}
// 合并二维数组 如重复 值以第一个数组值为准
function array2_merge($array1, $array2, $key = '')
{
if (empty($array1) || empty($array2)) return NULL;
$arr = array();
foreach ($array1 as $k => $v) {
isset($v[$key]) ? $arr[$v[$key]] = array_merge($v, $array2[$k]) : $arr[] = array_merge($v, $array2[$k]);
}
return $arr;
}
/*
* 对二维数组排序 两个数组必须有一个相同的键值
* $array1 需要排序数组
* $array2 按照该数组key排序
* */
function array2_sort_key($array1, $array2, $key = '')
{
if (empty($array1) || empty($array2)) return NULL;
$arr = array();
foreach ($array2 as $k => $v) {
if (isset($v[$key]) && $v[$key] == $array1[$v[$key]][$key]) {
$arr[$v[$key]] = $array1[$v[$key]];
} else {
$arr[] = $v;
}
}
return $arr;
}
?>
Vim的学习总结-软件玩家 - 软件改变生活!
参考链接 http://www.runoob/linux/linux-vim.html
1 vi/vim共分三种模式,分别是命令模式,输入模式和底线命令模式。
2 命令模式下的常用命令
- " i " 切换到输入模式,以输入字符
- " x " 删除当前光标所在处的字符
- " h " 或向左箭头键,光标向左移动一个字符
- " j " 或向下箭头键,光标向下移动一个字符
- " k " 或向上箭头键,光标向上移动一个字符
- " l " 或向右箭头键,光标向右移动一个字符
注:hjkl或箭头键可以跟数字组合,如向下移动30行,可以使用" 30j "或"30向下箭头键"。
- [Ctrl] + f 屏幕向下移动一页,相当于下一页键
- [Ctrl] + b 屏幕向上移动一页,相当于上一页键
- [Ctrl] + d 屏幕向下移动半页
- [Ctrl] + u 屏幕向上移动半页
- + 光标移动到非空格符的下一行
- - 光标移动到非空格符的上一行
- 0 或功能键[Home] 将光标移动到这一行的最前面
- n<space> n表示数字,按下数字后再按空格键,光标会向右移动到这行的n个字符,如20<space>
- $ 或功能键[End] 将光标移动到这一行的最后面
- H 光标移动到屏幕最上方那一行的第一个字符
- M 光标移动到屏幕中央那一行的第一个字符
- L 光标移动到屏幕最下方那一行的第一个字符
- G 光标移动到最后一行
- nG n表示数字,移动到第n行,如20G移动到第20行
- gg 光标移动到第一行
- n<Enter> n表示数字,光标向下移动n行
- /word 从光标开始向下搜索一个名称为word的字符串
- ?word 从光标开始向上搜索一个名称为word的字符串
- :n1,n2s/word1/word2/g n1和n2是数字,在第n1行到第n2行之间寻找word1字符串,并将他们替换为word2,如在第100行到200行间搜寻vbird并替换为VBIRD,则 " :100,200s/vbird/VBIRD/g"
- :1,$s/word1/word2/g 从第1行到最后一行之间寻找word1字符串,并将他们替换为word2
- :1,$s/word1/word2/gc 从第1行到最后一行之间寻找word1字符串,并将他们替换为word2,并提示是否确认
- x 向后删除一个字符
- nx n为数字,连续向后删除n个字符,如10x表示向后连续删除10个字符
- dd 删除光标所在一整行
- ndd n为数字,删除光标所在向下n行,如10dd表示向下删除10行
- d1G 删除光标所在到第一行的所有数据
- dG 删除光标所在到最后一行的所有数据
- d$ 删除光标所在到该行最后一个字符
- yy 复制光标所在的那一行
- nyy n为数字,复制光标所在的向下n行,例如20yy则是复制向下20行
- y1G 复制光标所在到第一行的所有数据
- yG 复制光标所在到最后一行的所有数据
- y0 复制光标所在的那个字符到该行行首的所有数据
- y$ 复制光标所在的那个字符到该行行尾的所有数据
- p 或P p是将复制的数据粘贴在光标的下一行,P是将复制的数据粘贴在光标的上一行
- J 将光标所在行与下一行结合为一行
- c 重复删除多个数据,如向下删除10行,用 10cj
- u 撤销上一个动作
- [Ctril] + r 重做上一个动作
- i 或 I 进入输入模式,i 为从光标所在处开始输入,I 为光标所在行的第一个非空格符处开始输入
- a 或 A 进入输入模式,a 为从光标所在的下一个字符处开始输入,A 为光标所在行的最后一个字符处开始输入
- o 或 O 进入输入模式,o 为从光标所在的下一行处输入新的一行,O 为光标所在的上一行处开始输入新一行
- ZZ 如果文件内容没有改动,不储存离开,如果有改动则储存后离开
- :w [filename] 另存为一个filename文档
- :r [filename] 读入另一个文档内容,到光标所在的后面
- :n1,n2 w [filename] 将第n1行到第n2行的内容储存到filename文档中
- :set nu 显示行号
- :set nonu 不显示行号
本文标签:
vim
更多相关文章
LinuxVimSSH基本命令
目录 LinuxVimSSH Linux 目录结构远程连接xshell,finalshell 需要已知linux服务器的ip地址和ssh端口(默认是22) reboot #重启shutd
在Windows下安装和使用vim
安装 vim官网:welcome home : vim online 下载Windows版本:Releases · vimvim-win32-installer · GitHub 双击exe
【Linux基础】yum 与 vim 的操作
目录 Linux 应用商店——yum yum和yum源是什么 关于镜像的简单理解 yum 的基本操作 yum的安装 yum install 命令 yum查看软件包 yum list 命令 yum的卸载 yum remov
Vim相关使用命令学习
全文使用mapping.txt作为示例,全文区分大小写 1.查看mapping.txt vim mapping.txt 2.插入或编辑 i 3.光标到首行 gg 4.全选 ggVG 5.在vim中搜索ÿ
Mac 下 vim 常用命令
vim 三种模式:命令模式、插入模式、底线命令模式。 切换模式: 命令模式: 启动 vim 进入命令模式: i 切换到插入模式,
Windows10,11下Vim的安装与使用教程(超详细)
前言 Vim是一款古老而又强大的文本编辑器,至今仍有大量的用户存在,主要针对习惯Linux下使用Vim用户,日常使用Windows,在Windows文
Vim, Javascript, DoctorJS (jsctags) and Taglist (Source code browsing) - Stack Overflow
I've installed DoctorJS (previously jsctags) in an attempt to get some good source-code browsingt
Ubuntu下vim操作指南
声明 本博客所记录的关于正点原子i.MX6ULL开发板的学习笔记,(内容参照正点原子I.MX6U嵌入式linux驱动开发指南,可在正点原子官方获取正点原子Linux开发板
发表评论