($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常用命令 移动搜索删除插入-软件玩家 - 软件改变生活!
文章目录
- 1. 背景
- 2. 模式切换
- 3. 移动
- 3.1. 搜索
- 3.2. 按字符移动
- 3.3. 按单词移动
- 3.4. 按句子移动
- 3.5. 按行移动
- 3.6. 按段落移动
- 3.7. 按页移动
- 3.8. 移动到顶部/底部
- 4. 编辑
- 4.1. 复制
- 4.2. 粘贴
- 4.3. 插入
- 4.4. 替换
- 4.5. 删除
1. 背景
我发现笔记本电脑接外接键盘以后,使用触控板和操作鼠标都变得比较麻烦,所以想要学习一下 Vim,写一篇笔记记录常用命令。
2. 模式切换
基本上 vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
启动 vim,便进入了命令模式。
i 切换到输入模式,以输入字符。: 切换到底线命令模式,以在最底一行输入命令。
3. 移动
3.1. 搜索
如果要搜索字符串str,在命令模式下,输入:/str。
n 跳转下一个匹配。N 跳转到上一个匹配。:noh 、关闭高亮:set hls 开启高亮
3.2. 按字符移动
h 向左移动一个字符j 向下移动一个字符k 向上移动一个字符l 向右移动一个字符
3.3. 按单词移动
w 向后移动一个单词位置,光标在词首e 向后移动一个单词位置,光标在词尾b 向前移动一个单词
3.4. 按句子移动
3.5. 按行移动
0移动当行首$ 移动光标到行尾^ 移动光标到行首非空白字符
3.6. 按段落移动
{ 向前移动一个段落的位置} 向后移动一个段落的位置
3.7. 按页移动
ctrl + u 向上移动半页 (up)ctrl + d 向下移动半页 (down)ctrl + b 移动到上一页 (back)ctrl + f 移动到下一页 (foward)
3.8. 移动到顶部/底部
4. 编辑
4.1. 复制
-
yap 复制光标所在段落
-
yy 复制当前行
-
yw 复制单词
-
yl 复制当前字符
4.2. 粘贴
4.3. 插入
-
I 在当前行首插入字符
-
i 在当前光标之前插入字符
-
a 在当前光标之后插入字符
-
A 在当前行尾插入字符
-
o 在当前光标下方插入新行
-
O 在当前光标上方插入新行
4.4. 替换
-
s 替换当前光标所在字符
-
S 替换当前光标所在行
-
r 替换当前光标所在字符并返回命令模式
-
R 连续替换当前光标所在字符
4.5. 删除
x 删除当前字符dl 删除当前字符dw 删除当前单词dd 删除当前行d + 数字 + 方向键 往指定方向删除若干次
联系邮箱:curren_wong@163
CSDN:https://me.csdn/qq_41729780
知乎:https://zhuanlan.zhihu/c_1225417532351741952
公众号:复杂网络与机器学习
欢迎关注/转载,有问题欢迎通过邮箱交流。
本文标签:
常用命令vim
更多相关文章
Linux命令、vim使用及文件目录管理
〇、计算机发展简史 程序:指令数据 缓存用于两个数的操作的时候临时存放其中一个数 最早的计算机诞生于美国宾夕法尼亚大学 早期计算机无操作系统是单任务的,因为早期的输入空间不是磁盘ÿ
Vim按了Ctrl+S,卡死了怎么办?
在Vim中按了CtrlS,卡死、停止了怎么办? 在Linux下,CtrlS是让屏幕暂停输入(但是键盘输入还是可以用的),而不是vi
Linux常用命令--系统管理之(用户管理、用户组管理)
目录 配置文件 用户信息文件 用户密码文件 组信息文件 组密码文件 用户管理命令 useradd passwd usermod chage userdel id su who w 用户组管理命令 groupa
程序员必看 Linux 常用命令(重要)
文件操作命令 find find 用于在指定目录下查找文件或子目录,如果不指定查找目录,则在当前目录下查找命令格式:find path -option [-print] [
ssh-keygen产生公钥与私钥对,及密钥分发,ssh远程执行常用命令方法,和如何防止SSH登录入侵或被破解
前言 SSH是安全的加密协议,用于远程连接Linux服务器,默认端口是22,安全协议版本是SSH2 。 SSH原理 SSH(远程连接工具)连接原理࿱
【Linux】Linux的常用命令、Vi和Vim编辑器
1. 操作目录的相关命令 1.1 目录操作命令 # ls 查看当前目录有哪些文件夹和文件ls#ls -a 显示所有的文件和文件夹.开头隐藏文件# cd 目录进入一个目录cd .. 退到上级目录~代表现在在用户目录的根目录下面最
Linux常用命令汇总
文章目录 前言1. 终极命令2. 基础命令2.1 C系2.2 E系2.3 F系2.4 K系2.5 L系2.6 M系2.7 N系2.8 P系2.9 R系2.10 T系2.11 W系 3. 文件与文档4. 压缩与解压5. 系统设置与管理6. 命
Windows 命令行界面常用命令
Windows 命令行界面常用命令 首先我们通过WINR,输入cmd进入命令行界面。 1. dir - 列出当前目录下的文件和子目录 用法: dir2. cd - 切换目录 用法&am
Vim相关使用命令学习
全文使用mapping.txt作为示例,全文区分大小写 1.查看mapping.txt vim mapping.txt 2.插入或编辑 i 3.光标到首行 gg 4.全选 ggVG 5.在vim中搜索ÿ
DOS常用命令大全:从基础到高级技巧
本文还有配套的精品资源,点击获取 简介:DOS操作系统虽然被现代图形用户界面取代,但在某些特定情况下,如系统维护和自动化任务中,
FFMpeg 常用命令格式转换,视频合成
FFmpeg都是命令行的,用起来肯定不方便。但是,这对技术宅应该不成问题。下面,我就罗列一些比较实用的使用方法吧。 FFmpeg的下载与安装 FFmpeg是开源的。但我们不必去下载它的源代码。下载已经编译好的exedll即可。可以到D
windows电脑安装系统、重装系统步骤、cmd常用命令等
一、CMD窗口常用命令,如下: calc:打开计算器 mstsc:打开远程连接窗口 control:打开控制面板 serv
Ubuntu下vim操作指南
声明 本博客所记录的关于正点原子i.MX6ULL开发板的学习笔记,(内容参照正点原子I.MX6U嵌入式linux驱动开发指南,可在正点原子官方获取正点原子Linux开发板
常用日志查询命令详解(vim、tail、cat、grep、less、more、sed、xargs)
Linux-系统日志查询命令详解 一、tail & head tail主要用于显示文件的末尾内容。 将每个FILE的最后10行打印到标准输出。如果有多个文件,在每个文件之前加上一个头文件ÿ
Windows系统cmd常用命令详解_cmddir命令详解
刚接触电脑的的时候是DOS系统, 根本就没有Windows系统这样的图形化操作界面, 只有一个黑漆漆的窗口,让你输入命令. 大多数程序员或计算机专家在DOS系统下的操作是非常了得的, 所以想要成为计算机高手, DOS命令是非学不可的. 直到
发表评论