iTerm2 都不会用,还敢自称老司机?(上)
liuian 2024-11-28 00:50 24 浏览
对于需要长期与终端打交道的工程师来说,拥有一款称手的终端管理器是很有必要的,对于 Windows 用户来说,最好的选择是 Xshell,这个大家都没有异议。但对于 MacOS 用户来说,仍然毋庸置疑,iTerm2 就是你要的利器,如果你觉得不是,那是你的问题,不是 iTerm2 的问题。今天我就来告诉你问题出在哪里,我将要向你展示的基本上都是你没见过的配方,擦亮眼睛吧!
本教程总共分为三个部分:第一部分关于 iTerm 自身的设置和优化;第二部分关于连接远程服务器的设置和优化;第三部分关于 zsh 的设置和优化。
今天来讲第一部分。
1. 悬浮窗口
首先我们来解决第一个问题:如何在任何界面呼入呼出 iTerm2 的窗口,并且悬浮在界面的顶部?
相信每个人都会有这样的使用场景:你正在全屏浏览器浏览网页,或者正在全屏编辑器写代码写文章之类的,突然想到了什么,或发现了什么,想快速打开终端,执行一两条命令(诸如打开文件、启动服务等),然后关闭。
对于这种情况,我们的愿景是可以通过快捷键迅速打开终端,然后用同样的快捷键迅速隐藏它,直到我需要时再次来到我面前。至于实现方式,虽繁琐但并不复杂,下面跟着我的步骤走:
创建新的 Profile
首先打开 Preperence → Profiles,新建一个 Profiles,取名 HotKey Window。
背景透明与模糊设置
在Preperence → Profiles → Window → Window Appearance 进行设置
窗口风格配置
在Preperence → Profiles → Window → Settings for New Windows 进行设置
解释一下这几个参数:
- Full-Width Top of Screen : 这个很好理解,让终端显示在屏幕顶部,并占满整个宽度。
- Current Spce : 表示只显示在当前的工作空间,举个例子吧,假设你在当前屏幕打开了终端,你切换到下一个屏幕时它就不会跟到下一个屏幕。
- Screen width Cursor : 这个和上面的参数搭配,用来判定哪个屏幕属于当前的工作空间,表示你的鼠标在哪,哪里就是当前的工作空间。
设置 HotKey
在 Preperence → Profiles → Keys → HotKey Window 进行设置
选中 A hotkey opens a dedicated window with this profile,表示此 profile 可以通过快捷键快速打开快速关闭。
然后点击 Configure Hotkey Window,设置快捷键。
为了只使用一个键,可以使用功能键作为快捷键,我选择的是 F12。
这里需要说明一点,功能键只适用于没有 Touch Bar 的 MacBook,对于新款的带 Touch Bar 的 MacBook,只能使用其他的组合快捷键,比如 Cmd+P 什么的。至于原因嘛,那是因为新款 MacBook 的功能键只能显示在 Touch Bar 上,你只能分别针对应用打开功能键,也就是说,你只有打开这个应用时,才会在 Touch Bar 上显示功能键,可是我们要的是在任何地方通过快捷键呼出终端,我不能先打开终端,再使用功能键打开终端。。。这是个先有鸡还是先有蛋的问题,所以还是选其他快捷键吧。
对于没有 Touch Bar 的 MacBook,我们可以这么设置,首先打开系统偏好设置,选择键盘设置。
选中 将 F1、F2 等键用作标准功能键。
这样你就可以通过 F12 来快速打开关闭终端了。
请注意:打开了标准功能键之后,以后再想使用功能键的特殊功能,比如 F11 减小音量、F12 增大音量,必须得和 Fn 键组合使用,例如增大音量就是 Fn+F12。
对于新款带 Touch Bar 的 MacBook,可以这么设置,首先打开系统偏好设置,选择键盘设置。
"按下 Fn 键以" 选择 “显示F1、F2等键”:
这样就可以使用 Fn+F12 来快速打开终端。
同时在 快捷键 → 功能键 设置中添加 iTerm 应用,这样打开 iTerm2 窗口时就可以直接使用 F12 键来关闭窗口。
到目前为止,悬浮终端的 Profile 就配置完成了,你可以按下你设置的HotKey来方便快速打开和隐藏命令行。如果你想新建标签页也用这个 Profile,可以将 Hotkey Window 设为默认的 Profile:
下面我们来做一些优化工作。
2. 改变光标形状
在 Preperence → Profiles → Text 进行设置。
默认光标形状是酱紫的:
更改设置之后光标形状就顺眼多了:
3. 为自己袋盐
如果你要为自己袋盐,新建任何一个终端窗口都想打上自己的 Logo,可以在 Preperence → Profiles → General 进行设置。

这样不管我切换到哪个终端,都可以 fuck cloud native!
4. 自定义标签页标题
在 Preperence → Profiles → General 进行设置。
取消勾选 Applications in terminal may change the title:
Title 选择 Profile Name,取消勾选 Job Name:
这样每个标签页的标题都会显示为对应的 Profile Name:
5. 自定义配色方案
网上有现成的配色方案,我们可以直接拿来主义,地址在这里:https://iterm2colorschemes.com/。
下载压缩包,解压后,打开 iTerm2 的设置:Preperence → Profiles → Colors → Color Presets。点击 import 选择解压好的主题目录下 schemes 目录下的你想要的主题导入。
导入之后,再选择你想要的主题就好了,我当然选的是 Ubuntu 骚紫~~
6. 统一配色
默认情况下标签的颜色是黑的,即使你改了配色也没用:
如果想统一配色,需要稍微调整一下配置,打开 Appearence → General,将 Theme 改为 Minimal:
7. 关闭启动界面
如果你不想每次打开 iTerm2 都打开默认的窗口,也就是静默打开程序,可以在 Appearence → General 设置:
勾选 Exclude from Dock and ...,更改设置之后下次你再重新打开 iTerm2 就会变成这个样子:
它再也不会出现在 Dock 中,也不会在启动时给你打开一个默认的窗口,你可以优雅地通过快捷键呼入呼出窗口,完美。
8. 使用 shell integration
iTerm2 可以与 unix shell 集成在一起,在安装了 iTerm2 的 shell 集成工具后,可以在 iTerm2 中看到命令历史、当前工作目录、主机名、上传下载文件等。
可以点击菜单栏 iTerm2 > Install Shell Integration 或者终端输入指令:
# 如果你的默认 shell 是 bash,请将 zsh 换成 bash
$ curl -L https://iterm2.com/misc/install_shell_integration.sh | zsh
该脚本会自动安装当前终端 shell 的对应脚本,并写入到对应的 shell 配置文件中。例如在 zsh shell 中执行完脚本后,.zshrc 中间中写入了下面语句:
$ test -e "${HOME}/.iterm2_shell_integration.zsh" && source "${HOME}/.iterm2_shell_integration.zsh"
在安装完 iTerm2 的 shell integration 后会在终端界面中最左侧多出一个蓝色三角形的标记。如图:
有蓝色三角形的标记说明当前 shell 支持 shell integration。如需关闭标记,可以在 iTerm2 > Preferences > Profiles > (your profile) > Terminal 最下面 > Shell Integration 关闭 Show mark indicators 。
所有工具:
imgcat filename
Displays the image inline.
imgls
Shows a directory listing with image thumbnails.
it2api
Command-line utility to manipulate iTerm2.
it2attention start|stop|fireworks
Gets your attention.
it2check
Checks if the terminal is iTerm2.
it2copy [filename]
Copies to the pasteboard.
it2dl filename
Downloads the specified file, saving it in your Downloads folder.
it2setcolor ...
Changes individual color settings or loads a color preset.
it2setkeylabel ...
Changes Touch Bar function key labels.
it2ul
Uploads a file.
it2universion
Sets the current unicode version.
例如,可以用 imgcat 直接在终端显示图片:
9. 奇技淫巧
最后介绍一些 iTerm2 的奇技淫巧。
剪贴板历史记录
iTerm2 允许我们快速查看剪贴板内容 只需使用 Command + Shift + h 可以呼出粘贴历史,支持模糊检索。还可以设置将粘贴历史保存在磁盘上(Preferences -> General)
智能选中
在 iTerm2 中,双击选中,三击选中整行,四击智能选中(智能规则可配置),可以识别网址,引号引起的字符串,邮箱地址等。(很多时候双击的选中就已经很智能了)
巧用 Command 键
按住 ? 键:
- 可以拖拽选中的字符串;
- 点击 url:调用默认浏览器访问该网址;
- 点击文件:调用默认程序打开文件;
- 点击文件夹:在 finder 中打开该文件夹;
- 同时按住 option 键,可以以矩形选中,类似于 vim 中的 ctrl v 操作。
将文本内容复制到剪切板
$ pbcopy < text.md
在 Finder 中打开当前目录
$ open .
ok,关于 iTerm 自身的设置和优化到这里就结束了,下一篇将会介绍关于连接远程服务器的设置和优化,敬请期待。
最后放个福利!
我精心整理的 Kubernetes 知识图谱的下载地址,可以私信回复我“图谱”获得!
- 上一篇:浅谈Linux中的环境变量
- 下一篇:Linux环境变量详解
相关推荐
- 使用Assembly打包和部署Spring Boot工程
-
SpringBoot项目的2种部署方式目前来说,SpringBoot项目有如下2种常见的部署方式一种是使用docker容器去部署。将SpringBoot的应用构建成一个docke...
- java高级用法之:调用本地方法的利器JNA
-
简介JAVA是可以调用本地方法的,官方提供的调用方式叫做JNI,全称叫做javanativeinterface。要想使用JNI,我们需要在JAVA代码中定义native方法,然后通过javah命令...
- Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
-
SpringBoot项目在为开发者带来方便的同时,也带来了一个新的问题就是Jar包如何启动?在一般情况下我们都是采用了最为经典的java-jar命令来进行启动。然后通过ps命令找到对应的应用线程通...
- 牛逼!自己手写一个热加载(人民币手写符号一个横还是两个横)
-
热加载:在不停止程序运行的情况下,对类(对象)的动态替换JavaClassLoader简述Java中的类从被加载到内存中到卸载出内存为止,一共经历了七个阶段:加载、验证、准备、解析、初始化、使用、...
- java 错误: 找不到或无法加载主类?看看怎么解决吧!
-
问题扫述:项目名称调整,由原来的com.mp.qms.report.biz调整为com.mp.busicen.mec.qms.report.biz后。项目在IDEA直接运行,但打包部署到服务器...
- 如何将 Spring Boot 工程打包成独立的可执行 JAR 包
-
导语:通过将SpringBoot项目打包成独立的可执行JAR包,可以方便地在任何支持Java环境的机器上运行项目。本文将详细介绍如何通过Maven构建插件将SpringBoot...
- class 增量发包改造为 jar 包方式发布
-
大纲class增量发包介绍项目目录结构介绍jar包方式发布落地方案class增量发包介绍当前项目的迭代修复都是通过class增量包来发版本的将改动的代码class增量打包,如下图cla...
- Jar启动和IDE里启动Sprintboot的区别
-
想聊明白这个问题,需要补充一些前提条件,比如Fatjar、类加载机制等1、Fatjar我们在开发业务程序的时候,经常需要引用第三方的jar包,最终程序开发完成之后,通过打包程序,会把自己的代码和三...
- Java 20年,以后将往哪儿走?(java还能流行多久)
-
在今年的Java20周年的庆祝大会中,JavaOne2015的中心议题是“Java的20年”。甲骨文公司Java平台软件开发部的副总裁GeorgesSaab的主题演讲就将关注点放在了java...
- Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
-
你是否在互联网大厂后端开发工作中,遇到过这样的困扰?当完成一个SpringBoot项目开发,准备将Jar包部署到不同环境时,却发现各个环境依赖不同、配置复杂,部署过程繁琐又容易出错,不仅耗费...
- 从0开始,让你的Spring Boot项目跑在Linux服务器
-
1搭建Linux服务器1.1购买阿里云服务器或安装虚拟机这里建议是CentOS7.X或CentOS8.X,当然其他的Linux如deepin、Ubuntu也可以,只是软件环境的安装包和安装方式...
- 【技术】Maven 上传第三方jar包到私服
-
通过nexus后台上传私服以NexusRepositoryManagerOSS2.14.5-02为例。登录nexus后台。定义Maven坐标Maven坐标有两种方式:1.自定义参数;2....
- JVM参数、main方法的args参数使用
-
一、前言我们知道JVM参数分为自定义参数、JVM系统参数,Javamain方法的参数。今天就谈谈怎么使用吧。二、查看jvm参数定义自定义参数我们打开cmd窗口,输入java,就能看到自定义参数的格式...
- Maven项目如何发布jar包到Nexus私服
-
Maven项目发布jar包到Nexus私服在编码过程中,有些通用的代码模块,有时候我们不想通过复制粘贴来粗暴地复用。因为这样不仅体现不了变化,也不利于统一管理。这里我们使用mavendeploy的方...
- 干货丨Hadoop安装步骤!详解各目录内容及作用
-
Hadoop是Apache基金会面向全球开源的产品之一,任何用户都可以从ApacheHadoop官网下载使用。今天,播妞将以编写时较为稳定的Hadoop2.7.4版本为例,详细讲解Hadoop的安...
- 一周热门
-
-
Python实现人事自动打卡,再也不会被批评
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
系统C盘清理:微信PC端文件清理,扩大C盘可用空间步骤
-
10款高性能NAS丨双十一必看,轻松搞定虚拟机、Docker、软路由
-
python使用fitz模块提取pdf中的图片
-
- 最近发表
-
- 使用Assembly打包和部署Spring Boot工程
- java高级用法之:调用本地方法的利器JNA
- Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 牛逼!自己手写一个热加载(人民币手写符号一个横还是两个横)
- java 错误: 找不到或无法加载主类?看看怎么解决吧!
- 如何将 Spring Boot 工程打包成独立的可执行 JAR 包
- class 增量发包改造为 jar 包方式发布
- Jar启动和IDE里启动Sprintboot的区别
- Java 20年,以后将往哪儿走?(java还能流行多久)
- Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- table.render (33)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)