在 Vim 中执行 Shell 命令

Shell Tmux Vim 进程 快捷键

刚开始使用终端和 Vim 工作时,桌面上总是铺满了执行各种任务的终端窗口,任务切换极其困难。 尤其在使用 Vim 编辑文件时每次想执行一些 Shell 命令就会新开一个窗口。 虽然搭建终端工作环境的终极方式是终端复用,但有一些更加轻巧的办法可以在 Vim 中快速执行 Shell 命令。

比如 :!cmd Vim 命令和 :sh Vim 命令,以及 Ctrl+Z Shell 快捷键。 除此之外还可以使用 benmills/vimux 来在 Vim 中操作 Tmux, 这可以达到类似 IDE 的效果:按下编译快捷键打开命令窗格并开始编译, 编译过程中 Vim 不会失去焦点,编译成功后自动关闭命令窗格。

Vim 中的变量赋值、引用与作用域

Vim 作用域 寄存器 环境变量 变量

使用 let 进行变量赋值,echo 打印变量的值, unlet 销毁变量。 对于 Vim 选项还可用 set 来更方便地操作,比如 set {option}, set no{option}, set {option}?。 普通变量可以直接引用,环境变量要加前缀 $、寄存器变量要加前缀 @、Vim 选项要加前缀 &。 变量默认作用域取决于定义的位置,函数内则为函数作用域,外部则为全局变量。 赋值和引用变量时可以使用 b:,g:,l:,t: 等前缀来指定要操作哪个作用域的变量。

获取 DOM 内容的 API 接口

DOM HTML jQuery innerHTML textContent 重排

Web 开发者可能会使用 jQuery .html().text() 方法来设置 DOM 内容,但他们的实现仍然依赖于 DOM API。 本文来梳理一下这些用来获取 DOM 内容的 DOM 属性(attribute), 比较它们的区别:innerHTML, outerHTML, innerText, outerText, text, textContent, 以及 jQuery 中.html().text()的实现。

PWA 初探:基本特性与标准现状

Android Chrome PWA 缓存 Service-Worker

PWA(Progressive Web Apps)是 Google 最近在提的一种 Web App 形态 (或者如 Wikipedia 所称的“软件开发方法”)。 Harttle 能找到的关于 PWA 最早的一篇文章是 2015年6月 Alex Russell 的一篇博客: Progressive apps escaping tabs without losing our soul让 Web App 从标签页跳出来,同时保持 Web 的灵魂。

如 Alex 所述,PWA 意图让 Web 在保留其本质(开放平台、易于访问、可索引)的同时, 在离线、交互、通知等方面达到类似 App 的用户体验。按 Google 官方的解释 PWA 具有这些特性:Reliable, Fast, Engaging。

Progressive Web Apps use modern web capabilities to deliver an app-like user experience. They evolve from pages in browser tabs to immersive, top-level apps, maintaining the web's low friction at every moment. – Google PWA Tutorials

在 DOM 中动态执行脚本

DOM HTML JavaScript jQuery innerHTML

在 HTML 中脚本以 <script> 来标记,通过设置其内容或 src 属性执行内联脚本或外部脚本。 本文讨论动态地插入脚本标签时浏览器对它的解析、下载和执行行为。 动态插入脚本的场景可能包括使用 AJAX 获取脚本并动态执行(多用于性能优化), 以及运行时决定执行页面模板中的某段脚本(多用于单页异步)。

动态执行脚本还有其他方式,比如 evalnew Function,这些不在本文的讨论范围。

动态插入外部样式表

DOM HTML 事件 异步 CSS innerHTML

相比于动态插入外部脚本, 动态插入外部样式表(<link rel="stylesheet">)的行为简单很多: 只要插入到当前 DOM 树时,浏览器总会异步地立即下载并应用该样式表, 被从 DOM 树移除时样式消失并立即触发重绘。

内联样式表(这里指<style>标签)除了不需要去下载之外,其他行为与外部样式表相同。 因此下文略过对内联样式表的讨论。

Raspberry Pi 3 的 GPIO 串口配置

Raspberry GPIO UART

Raspberry Pi 开源硬件提供了 GPIO (General Purpose Input/Output) 接口, 但 Raspberry Pi 3 新增的蓝牙支持占用了原 GPIO 使用的 UART(PL011), 让 GPIO 14/15 引脚转而使用 Mini UART,因此对于不使用蓝牙的用户降低了 GPIO 的吞吐量。 为了使 GPIO 继续使用 UART 协议以及设置对应设备(/etc/ttyAMA0)权限笔者话费了不少功夫, 于是将串口配置过程记录在此。

如果你不是在使用 GPIO(比如连接 Arduino、传感器等等)引脚,本文基本与你无关。

上一页 下一页