LaTeX中插入网络图片
有时候在编写LaTeX文件时需要插入图片,但是图片源自网络,这时可以使用\write18
调用外部命令,下载图片,然后再插入到文件中,引用网络上的一个具体例子为:
1 | \documentclass{article} |
有时候在编写LaTeX文件时需要插入图片,但是图片源自网络,这时可以使用\write18
调用外部命令,下载图片,然后再插入到文件中,引用网络上的一个具体例子为:
1 | \documentclass{article} |
在日常编写脚本的过程中,不可避免的可打开一些文件进行编辑,对于一些特定的文件可以使用某相应的软件打开。但是,若脚本需要处理的有各种各样的文件,若针对每一个文件都设计一个对应程序来打开,原理上可行,但是比较麻烦。现在的Linux
基本都内置了命令xdg-open
,
它可以自动调用系统的默认程序打开文件,可以大大提高脚本的效率。为了方便查询,此贴出它的帮助文件:
1 | xdg-open -- opens a file or URL in the user's preferred |
提出这个要求是因为我今天在脚本xugit.sh
中加入了根据选项打开文件,避免每次都切换路径的麻烦。尽管有z-lua
等路径切换插件,但是在连接U盘
时,使用ugit -l
选择文件再打开,更加直接。
使用diary.sh
写博客已经有近两年了,对于菜单一直没有细致的设计,这主要是因为对Shell
理解的不够透彻。今天实现了真正意义上的可选择菜单,实现原理是:不再使用clear
每次按键后清屏,改用指定行输出来输出菜单!这样就可以避免每按一次键就闪烁一次的不好体验,同时对于一屏的信息,当只有一二行发生变化时,整体上看很流畅:
可选择菜单支持vim
的快捷键,即j
向下,k
向上,同时J
向下一页,K
向上一页.
1 | DY_FILES=($(ls /home/$USER/)) #设置用来列表输出的数组, 此处可以改为您自己的路径 |
在对函数进行命名时,每个人都有自己的标准。本书会推荐两种,希望这两种标准成为读者以后编程时的命名规范。比较著名的命名规则首推匈牙利命名法,这种命名方法是由Microsoft 程序员查尔斯·西蒙尼(Charles Simonyi)提出的。其主要思想是“在变量和函数名中加入前缀,以增进人们对程序的理解”。匈牙利命名法的关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。骆驼(Camel)命名法近年来越来越流行,在许多新的函数库和 Java 开发平台下使用得相当多。正如它的名称所表示的那样,骆驼命名法指的是混合使用大小写字母来构成标识符的名字,其中的第一个单词首字母小写,余下的单词首字母大写。帕斯卡(Pascal)命名法与骆驼命名法类似。只不过骆驼命名法是第一个单词首字母小写,而帕斯卡命名法则是第一个单词首字母大写。
对于以上的几种命名规则,本书认为对变量或函数进行描述时常用的是骆驼命名法和匈牙利命名法,因此,我们推荐使用这两种命名标准。
对于函数来说,一般是根据函数的功能来进行命名,通常有两种命名方式:
array_sort()
函数,从字面上就可以看出,该函数用于对数字进行排序。address()
,对该函数进行操作。对于变量来说, 一般通过匈牙利命名法命名:
average
可用于对变量“平均数”的命名。dir_num
可用于命名变量“目录个数”对于常量来说,可通过将该变量全部设置为大写与变量形成区别,下面是常量的命名方式:
TOTAL
可对常量“总数”进行命名。GLOBAL_CON
可以常量“全局常量”进行命名。注:上述引用自《LINUX SHELL 编程从初学到精通》
为了提高我们使用 Bash Shell 的效率,本文总结了一些 Bash 中常用的高效快捷键,可以帮助我们在快节奏的学习和工作环境中提高生产力。熟悉了这些常用的快捷键之后,将会极大的提升我们与终端交互的速度,从而有效利用时间。
快捷键 | 对应功能 |
---|---|
Ctrl + a 或 Home | 将光标移动到整行命令的开头 (#) |
Ctrl + e 或 End | 将光标移动到整行命令的末尾 (#) |
Ctrl + b 或 <- | 将光标向左移动一个字符 (#) |
Ctrl + f 或 -> | 将光标向右移动一个字符 (#) |
Alt + b 或 Ctrl + <- | 将光标向左移动到当前单词或前一个单词的第一个字母上 (#) |
Alt + f 或 Ctrl + -> | 将光标向右移动到当前单词或后一个单词的末尾的第一个空格处 (#) |
Alt + c | 将光标向右移动到当前单词或后一个单词的末尾的第一个空格处,并将对应单词的首字母大写 |
Alt + u | 将光标向右移动到当前单词或后一个单词的末尾的第一个空格处,并将对应单词的所有字母大写 |
Alt + l | 将光标向右移动到当前单词或后一个单词的末尾的第一个空格处,并将对应单词的所有字母小写 |
Alt + -> | 将光标向右移动到当前单词或后一个单词的末尾的第一个空格处 (#) |
Alt + <- | 将光标向左移动到当前单词或前一个单词的首字母处 (#) |
快捷键 | 对应功能 |
---|---|
Ctrl + u | 删除从命令开始位置到当前光标所在位置之前的所有字符(会保留当前光标所在位置的字符) (#)) |
Ctrl + k | 删除从当前光标位置到结尾的所有字符(不保留当前光标所在位置的字符) (#) |
Ctrl + w | 删除当前光标之前的第一个命令行参数或从光标位置往左删除至上一个空字符处(会保留当前光标位置的字符) (#) |
Ctrl + t | 交换当前光标之前和之后的两个字符 |
Ctrl + h 或 Backspace | 删除光标之前的单个字符 (#) |
Ctrl + d 或 Delete | 往后删除当前光标所在位置的字符 (#) |
Alt + d 或 Ctrl + Delete | 往右删除从当前光标到下一个单词结尾的所有字符(不会保留当前光标所在位置的字符) |
Alt + Backspace | 往左删除从当前光标到上一个单词开头的所有字符(会保留当前光标所在位置的字符) |
快捷键或命令 | 对应功能 |
---|---|
Ctrl + c | 通过向当前前台进程发送SIGINT信号来中断当前前台进程。默认行为是终止进程 (#) |
Ctrl + z | 向进程发送SIGTSTP信号,并挂起当前前台进程。可以使用fg命令将重新将进程拉回到前台 (#) |
[Command] & | 将Command命令放到后台执行,一般和nohup一起使用(eg: nohup ping http://www.baidu.com &) (#) |
jobs 或 jobs -l | 查看当前终端后台所执行的用户提交任务 (#) |
kill -9 PID | 杀掉进程ID号为PID的进程 (#) |
快捷键 | 对应功能 |
---|---|
Ctrl + l | 清除整个屏幕,与clear命令作用相同 (#) |
Ctrl + s | 暂停终端屏幕的显示 |
Ctrl + q | 终止Ctr |
旧版的Gnome3默认的终端叫gnome-terminal
,
新版(2023年5月之后)的新终端控制台启动命令叫kgx
,
于是解决方法为:
设置
→键盘
→自定义键盘
→设置自定义快捷键
今天有同学遇到一个问题,她的KDE-Plasma
桌面莫名其妙的变大了,一直不能设置回来,调显示器分辨率也不行。由于我平时使用Gnome作为主力,好久不使用KDE-Plasma了,所以一时也找不到症结所在。最初的判断是她误删除了配置文件,同时Endavour
也很长时间没有升级了,所以决定把系统升级到Plasma6.0,
如果是配置文件删除了的话,那系统升级后会重新建立的,但是重启后仍然不行!一时间解决不了问题,但是突然想起来,有可能是她误触了某些键导致开启了KDE-Plasma的屏幕缩放
功能,
于是按这个思路百度了一下,发现确实是她误触了。解决方法是:
Meta+=
放大屏幕, Meta+-
缩小屏幕,
Meta+0
恢复到初始,
真是”踏破铁鞋无密处,得来全不费工夫“!为了方便大家,特附上可以提高工作效率的快捷键如下:
通过将这些快捷方式融入到您的日常使用中,您可以更轻松、更高效地导航和控制 KDE Plasma。无论您是在处理复杂的项目还是只是浏览,这些快捷方式都旨在增强您在 KDE 环境中的整体体验。
掌握 KDE Plasma 的键盘快捷键是提高工作效率并简化与 Linux 桌面环境交互的有效方法。通过熟悉这 20 个最重要的快捷方式,您可以显着提高从简单的应用程序启动到复杂的工作区管理等任务的效率。这些知识不仅可以节省时间,还可以丰富您的整体用户体验,使 KDE Plasma 成为满足您日常计算需求的更强大且用户友好的界面。无论您是新用户还是经验丰富的 Linux 爱好者,这些快捷方式都是您更熟练、更愉快地使用 KDE Plasma 的宝贵工具。
之前一直使用有名的高亮缩进插件indent-blankline.nvim
, 同时也有一个专门用于配置indent-blankline
彩虹缩进的插件indent-rainbowline.
但是自从昨天升级后发现这个插件报错,而且我也不愿意再消耗时间去修复这个bug
,
于是经过搜索发现了另一个替代品hlchunk.nvim,
同时配置好以后发现还是挺好用的, 本文记录我的电脑配置以方便大众。
2024年05月31日,
由于官方对hlchunk.nvim
做了大量更新,所以其配置相应发生变化,为了确保最新版本的使用,今天更新为可用的配置。
在Lazy.nvim
中,找到文件~/.config/nvim/lua/lazy-init.lua
,
然后添加 1
2
3
4{
"shellRaining/hlchunk.nvim",
event = { "BufReadPre", "BufNewFile" }
},
编写配置文件~/.config/nvim/lua/plg/hlchunk.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61#! /usr/bin/env lua
-- hlchunk.lua
-- https://fengzhenhua.gitlab.io/2024/05/18/Neovim高亮缩进线插件hlchunk
-- Copyright (C) 2024 feng <feng@archlinux>
--
require('hlchunk').setup({
blank = {
enable = false,
chars = {
" ",
},
style = {
{ bg = "#434437" },
{ bg = "#2f4440" },
{ bg = "#433054" },
{ bg = "#284251" },
},
},
chunk = {
enable = true,
chars = {
horizontal_line = "─",
vertical_line = "│",
left_top = "┌",
left_bottom = "└",
right_arrow = "─",
},
style = "#00ffff",
},
indent = {
enable = true,
use_treesitter = false,
-- chars = { "│", "¦", "┆", "┊", }, -- more code can be found in https://unicodeplus.com/
chars = { "│" },
style = {
-- hlchunk 配色
"#8B00FF",
"#FF0000",
"#FF7F00",
"#FFFF00",
"#00FF00",
"#00FFFF",
"#0000FF",
"#8B00FF",
-- indent-blankline 配色
-- "#E06c75",
-- "#E5C07B",
-- "#61AFEF",
-- "#D19A66",
-- "#98C379",
-- "#C678DD",
-- "#56B6C2",
-- "#8B00FF",
},
},
line_num = {
style = "#806d9c",
priority = 10,
use_treesitter = false,
}
})
启用hlchunk
1
lua require('plg/hlchunk')
我们代码的缩进一般是由空格或者 tab 组成的,因此可以在这些空位上动一些手脚,比如添加特殊字符表示这是一个空格,或者添加背景颜色,做出彩虹的效果。这个 mod 实质上继承自 indent,重写了 render 方法而已。
由于继承自 indent,他们的配置几乎相似和通用。blank mod 的默认配置如下:
1 | local default_conf = { |
chars
是一个 lua 表,其中的字符用来指示如何渲染 blank
字符,你可以设置为下面这样,来循环使用这些字符(尽管这样设置并不会很好看):
1 | chars = { |
style
继承自 indent,因此和 indent
的颜色实际上是一样的,并且配置方式一样。详情见 indent
下面是默认的 blank 样式
1 | blank = { |
你也可以将空格设置的像是彩虹一般 🌈
1 | blank = { |
1 | indent = { |
你也可以设置多种字符类型
1 | indent = { |
最后,他还可以设置背景颜色
1 | blank = { |
这个 mod 可以用来指示当前光标所在的一个 chunk(比如 function_declaration,if_statement)等。并且提供了 textobject 方便你快速的操作这个 chunk。
该 mod 的默认配置如下:
1 | local default_conf = { |
独有的配置项为
use_treesitter
,chars
,textobject
,max_file_size
,error_sign
use_treesitter
是用来控制是否使用 treesitter
来高亮代码块,默认为 true。 如果该项被设置为
true,他是通过自底向上的查找树的节点,直至找到匹配的节点类型,以此获取相应的
chunk 范围的。而如果设置为 false,将使用 vim 的 searchpair
来查找最近的相邻大括号来推断位置(也因此导致 Python
等脚本语言无法正常使用该 mod)
chars
是一个表,其中的字符用来指示用哪些字符来渲染
chunk,这个表中包含五个部分
textobject
是一个字符串,默认没有值。他用来表示想要用哪些字符来表示
textobject,比如我使用的就是 ic
,意为
inner chunk
,你也可以修改为其他顺手的字符
max_file_size
是一个数字,默认为
1MB
,当打开的文件大小超过这个值时,将自动关闭该
mod
error_sign
是一个布尔值,默认为 true,如果你使用
treesitter 来高亮代码块,当遇到错误的代码块时,它将会把 chunk
的颜色设置为枫叶红(或者你想要的其他颜色),要启用这个选项,style
应该有两个颜色, 默认的 style 为
1 | style = { |
对于通用的配置(在 README 中有提到),仅有部分需要特别注意:
style
是一个字符串或者 Lua 表。如果是字符串,必须是一个
RGB
十六进制字符串。如果是一个表,接收一到两个表示十六进制颜色的字符串,如果只有一个颜色,那么只会使用一个颜色来渲染
chunk,如果有两个颜色,那么会使用两个颜色来渲染
chunk,第一个颜色用来渲染正常的 chunk,第二个颜色用来渲染错误的
chunk。除此之外,还可以使用这样的配置来动态的切换 chunk 的颜色,这是为了解决这个 issue
1 | local cb = function() |
下面是默认的 chunk 样式
他的配置方式为
1 | chunk = { |
你可以按照下面的配置来使你的样式看起来像是 GIF 里演示的那样
1 | chunk = { |
我们写代码有时候会遇到嵌套很多层等情况,而为了确定某些代码是否在同一层级,我们需要缩进线来帮助定位。
该 mod 的默认配置如下:
1 | local default_conf = { |
独有的配置为
use_treesitter
,chars
,ahead_lines
use_treesitter
是用来控制是否使用 treesitter 来判断
indent 的层数,默认为
false(因为性能问题)。如果你对缩进的精确要求很高,你可以尝试设置为
true,详情见这个 issue
chars
是一个表,其中的字符用来指示用什么字符来渲染
indent line,你可以尝试设置为下面这样:
1 | chars = { |
实际渲染的时候,第一个层级会采用第一个字符,第二个层级会采用第二个字符,以此类推,如果层级超过了你设置的字符数,那么会循环使用这些字符。
ahead_lines
是一个数字,用来控制缩进线超前查看和渲染范围,默认为 5和 chunk 一样,我们需要额外注意 style 这个通用配置:
这里的 style
是一个 RGB
字符串或者一个表。如果是字符串,那么所有的缩进线将会采用这一种颜色来渲染,如果是表,可以有这两种写法:
1 | style = { |
或者
1 | style = { |
如果你设置了背景颜色,那么缩进线将会采用背景颜色来渲染。
下面是默认的 indent 样式
1 | indent = { |
你也可以将缩进线设置的像是彩虹一般 🌈
1 | indent = { |
你也可以设置多种字符类型
1 | indent = { |
如果你喜欢更粗的显示效果,你可以设置渲染的背景颜色
1 | indent = { |
其实他和 chunk 的功能相同,只是可能有些人不喜欢 chunk,偏好高亮行号的形式,因此有了这个 mod
该 mod 的默认配置如下:
1 | local default_conf = { |
独有的配置项为 use_treesitter
,用法和 chunk
的该项一样,详情见 chunk
和 chunk 一样,我们需要额外注意 style 这个通用配置:他只接收一个字符串,表示十六进制颜色,来表示行号的颜色
下面是默认的 line_num 样式
1 | line_num = { |
一直使用vim-latex
作为编写LaTeX
文件的主力,但是虽然之前设置好了Alt
键,但是一直用的较少,今天试用了一下Alt
相关智能键,特别好用,查阅手册后将这部分使用规则记录下来。
1 | let g:Tex_AdvancedMath = 1 |
由于我使用的是neovim
,
所以设置了上述路径,如果您使用vim
请找到对应路径设置即可。缺省时,如果某菜单对应了热键<key>
,那么在
Vim
中按Alt-<key>
将使得屏幕焦点转移到菜单栏(menu bar
)上。如果因此而产生了冲突,那么需要在$VIM/ftplugin/tex.vim
文件中设置set winaltkeys=no
,以使用这些Alt
键相关的宏映射。
,而我们一般没有这个需要,所以放心开启Alt
键即可。
这是一个多态的、插入模式下的宏映射,根据处于光标之前的字符展开为下列形式之一。光标之前的字符 展开
光标前的字符 | 替换为相应字符 |
---|---|
( 或 ) | \left(<++>\right) |
[ 或 ] | \left[<++>\right] |
| | \left|<++>\right| |
{ | \left{<++>\right} |
< 或 > | \langle<++>\rangle |
q | \lefteqn{<++>}<++> |
其他 | \label{<++>} |
此插入模式宏映射将前一个字符包括进\mathbf{}
中。
插入模式下,该键的多态性如下所示:
\mathcal{}
。\cite{}
。在可视模式下,它简单地将所选部分包括进\mathcal{}
。
此宏映射根据光标包括在哪个环境中在光标处插入\item
命令。\item
命令的风格(style)取决于包括它的环境。缺省时,Alt-I
为下列环境定义了风格:
Environment | Stle |
---|---|
itemize | \item |
enumerate | \item |
theindex | \item |
thebibliography | \item[<+biblabel+>]{<+bibkey+>} <++> |
description | \item[<+label+>] <++> |
Alt-I
拥有智能处理嵌套环境的能力。
HEU KMS Activator是知彼而知己开发的KMS激活工具,最新版增加了OEM激活功能,支持Vista/Win7/Server 2008/2012等系统的永久激活,无需联网即可一键激活Windows和Office VL版本。新增Win10数字许可证激活,可用于系统封装后完美激活。此工具无广告、无捆绑、无后门,完全出自“知彼而知己”的正版,适合系统封装爱好者使用。
注意:高级功能的按钮以“灰色”图标显示,建议详细阅读《用户使用手册》后再行使用。
Windows10可以通过Windows 7 / 8.1升级、购买的零售版、或OEM等的方式激活,微软会收集计算机的硬件信息并上传到服务器,将其转化为数字许可证,下次重装系统时,联网后微软服务器将重新比对硬件信息,若主要硬件信息不变,系统就会自动予以激活。
例如已永久激活的Windows7升级到Windows10后,会自动永久激活,基于这种思路,通过从微软服务器获取数字门票(GenuineTicket.xml),完成数字许可证激活(又名数字权利激活)。
综上,数字许可证激活的方式必须连接到互联网,一旦激活成功,以后重装系统联网后即自动永久激活。
假如使用软件永久激活了Windows7,目前来看,升级到Windows10后会自动激活。此时这台计算机就已经获取到了“数字许可证”,不需要任何其他软件,也不需要安装密钥,只要以后在这台计算机上安装Windows10,联网自动激活。数字许可证激活方式,微软只需一个系统更新即可轻易封杀,然而为了扩大Windows10的市场占有率,此方式被默许。
通常企业、学校等拥有多台计算机,设想如果安装了 Windows,然后管理员一台一台的去激活,管理起来十分不方便。为了解决这种问题,微软定制了一种 批量授权(Volume)的方法:局域网内的一台计算机作为服务器首先连接到微软的服务器进行激活,然后局域网内的其他计算机向局域网内的这台服务器请求激 活。这种方法即为 Key Management Service,简称 KMS,是微软定制的一种正规 激活方式,下面简要介绍一下激活流程。
大客户首先购买微软正版“CSVLK”密钥,然后将一台计算机永久激活(联网 或者拨打微软客服电话),这台计算机即可作为服务器(KMS Host),始终保持 开机联网(局域网连接通畅即可)的状态。局域网内的其他计算机(KMS Client)向服务器请求激活,当达到一定数量(激活 Windows 需要 25 台计算机、激活 Office 需要 5 台计算机)的客户端计算机请求激活后,服务器就向客户端注入激 活信息。
KMS 激活后有效期 180 天。默认设置下 KMS Client 会自动向可用的 KMS Host 请求激活(未激活的客户端尝试连接 KMS 的时间间隔为 2 小时,已激活的 客户端尝试连接 KMS 的续订时间间隔为 7 天)。即 KMS Client 激活有效期会始 终保持 173 天以上,前提是 KMS Host 是可用的。