($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;
}
?>
(6)centos7 Vim-软件玩家 - 软件改变生活!
一、模式间切换
正常模式->编辑模式
i #光标前等待输入
a #光标后等待输入
shift + i #行首等待输入
shift + a #行尾等待输入
o #光标下一行创建新行,相当于本行末尾按回车
shift + o #光标上一行创建新行
二、正常模式
1.选择
v #选择块
2.光标移动
H #当前屏幕第一行的第一个字符
M #当前屏幕中间行的第一个字符
L #当前屏幕最后一行的第一个字符
G #文本最后一行的第一个字符
gg #文档第一行的第一个字符
n+G #第n行的第一个字符
n+空格 #移动n个字符
n+回车 #向下移动n行
w #移动到下一个单词
h #左
j #下
k #上
l #右
Page Up #上一页
Page Down #下一页
3.查找
/word +回车 #光标向下查找单词,按n查找下一个单词,N上一个单词
?word +回车 #光标向上查找
:1,$s/word1/word2/g #全文搜索替换把word2换成word1
:n1,n2s/word1.word2/gc #从n1行到n2行搜索替换,末尾c提示用户确认
4.复制,粘贴
y #复制
yy #复制光标所在行
y^ #复制当前到行头的内容;
y$ #复制当前到行尾的内容;
yw #复制一个word (nyw或者ynw,复制n个word,n为数字);
yG #复制至档尾(nyG或者ynG,复制到第n行,例如1yG或者y1G,复制到档尾)
nyy #复制n行
p #粘贴到下一行
1,10 co 12 #复制1到10行,并粘贴在12行
5.删除
x #剪切光标位置一个字符
d #剪切选中
d + ← #剪切光标左边的一个字符
d + → #剪切光标右边的一个字符,等同于x(注意** 右的时候包括光标在内)
d + 数字 + → #剪切光标右边的一个字符(注意** 右的时候包括光标在内)
d + 数字 + ← #剪切光标左边的n个字符
d+ w #删除光标所在单词的后面部分,包括光标
d+d #剪切光标所在行
3+d+d #剪切光标行及后两行
d+i+" #删除" "之间的所有单词,还可以是 ' ) } ] 等
c #c操作和d一样,操作后会进入编辑模式
6.撤销
u #
7.返回撤销
ctrl+ r #
三、插入模式
四、命令行模式
1.退出
:q #退出
:q! #强制退出
:wq #保存退出
:wq! #强制保存退出,可以保存只读文件
ZZ #若没修改直接退出,若有修改保存自动保存并退出
2.文件
:w fils #文件另存为
:r files #打开另一个文件,追加到本文件后面
vim file1 file2 #打开多个文件
:ls #显示打开的文件
:open files #再打开一个文件,另一个后台
与后台文件间切换
ctrl+6 #两文件间切换
:bn #下一个文件
:bp #上一个文件
:b1 #切换到序号n个文件,ls查文件序号
同时显示多文件
:new files #垂直显示
:vnew files #水平显示新文件
:tabnew files #创建新文件,老文件切换到后台
:split #垂直分屏
:vsplit #水平分屏
:ctrl +ww #光标切换到下一个屏幕上
:ctrl +w+方向键 #切换屏幕
3.行号
:set nu #显示行号
:set nonu #取消行号
宏录制
转载于:https://wwwblogs/buchizaodian/p/7092491.html
本文标签:
vim
更多相关文章
Windows11之Vim超详细下载安装与使用教程
文章目录 前言零、DOSBox安装所需资源一、Vim的下载二、Vim的安装三、Vim的使用总结 前言 本博客的主要内容为在Windows11系统下的Vim软件的下载安装与使用教程,Vim软件在学习Linux或者汇编语言
linux里没有vi编辑器怎么办,如果是linux没有vi、vim等编辑器如何操作
cd etcapt 进入apt目录 echo deb http:mirrors.163ubuntu trusty main restricted universe multiverse >> sources.lis
Ubuntu下vim操作指南
声明 本博客所记录的关于正点原子i.MX6ULL开发板的学习笔记,(内容参照正点原子I.MX6U嵌入式linux驱动开发指南,可在正点原子官方获取正点原子Linux开发板
vim 高级用法
目录 基础模式(也叫一般模式) 1、光标移动 2、删除剪切 3、复制粘贴 4、替换 5、查找 末行模式 可视化 VISUAL 模式 其他 基础模式(也叫一般
发表评论