[特殊字符] Linux 学习笔记(二):压缩、Vim 与配置

我最近在系统复习 Linux 基础,这次整理的是压缩解压、离线安装还有 Vim 编辑器。Vim 这块之前一直半懂不懂,这次终于把里面的细节搞明白了,顺便也踩了几个坑,比如压缩时忘记带 f 参数结果报错......下面把我的笔记和心得分给大家,希望能帮到同样在学 Linux 的同学。


一、压缩和解压缩

1.1 先了解背景

Linux 操作系统默认支持的压缩格式有 gzipbzip2 ,但有个坑------这两种格式只能压缩单体文件 ,不支持打包,而且压缩后原文件会消失。所以在 Linux 里,我们一般先用 tar 命令打包 ,再用 gzip/bzip2 压缩。tar 就是用来"打包"的。

1.2 压缩

压缩的格式是:

text 复制代码
tar zcvf 压缩包名.tar.gz 压缩原材料

参数说明:

  • z :使用 gzip 压缩格式;如果用 bzip2,把 z 换成 j
  • c:创建压缩包(create)
  • v:显示压缩过程(verbose)
  • f :指定压缩包名,f 必须是最后一个参数,后面紧跟压缩包名称

💡 踩坑提醒:压缩包的后缀名系统不做强制要求,但为了以后自己知道是什么格式 ,建议按实际压缩格式命名,比如 .tar.gz.tar.bz2

实际命令示例:

shell 复制代码
# gzip 格式
tar zcvf test2vim.tar.gz testdir test.txt

# bzip2 格式
tar jcvf test2vim.tar.bz2 testdir test.txt

1.3 解压缩

解压缩的格式:

text 复制代码
tar zxvf 压缩包名.tar.gz         # 直接解压到当前目录

参数 x 代表解压缩(extract)。示例如下:

shell 复制代码
tar zxvf test2vim.tar.gz

如果想解压到指定目录,用 -C 参数:

shell 复制代码
tar zxvf test2vim.tar.gz -C outdir

之前我老忘了加 -C,结果文件乱放,找半天。现在养成习惯,解压时先 mkdir 个目录再用 -C


二、离线安装(dpkg)

在 Linux 里离线安装 .deb 软件包用的是 dpkg 工具。

安装

shell 复制代码
sudo dpkg -i 安装包名.deb

卸载

shell 复制代码
sudo dpkg -r 软件名

注意卸载时用的是软件名 ,不是包名。比如 sudo dpkg -r vim,而不是 sudo dpkg -r vim.deb


三、Vim 编辑器

Vim 是我学习 Linux 以来最大的一道坎。刚接触时完全懵了,怎么退出都不知道。现在总算搞清楚了它的三种工作模式,下面详细说说。

3.1 Vim 的三种工作模式

  1. 命令模式:进入 vim 后默认的模式。所有输入都被当作命令执行。
  2. 编辑模式:可以输入文本、写代码。
  3. 末行模式 :输入以 : 开头的命令(如保存、退出、搜索替换)。

3.2 切换编辑模式

从命令模式进入编辑模式有很多方式,我常用的有:

按键 作用
i 在光标前插入(首选)
a 在光标后插入
o 在光标下一行插入(首选)
I 在光标所在行行首插入
A 在光标所在行行尾插入
O 在光标上一行插入
s 删除光标选中的字符并进入编辑模式
S 删除光标所在行的所有数据并进入编辑模式

我习惯用 io,尤其是写代码时,o 直接新起一行非常方便。

3.3 保存和退出

  • 命令模式 下:按 ZZ(大写)直接保存退出。
  • 末行模式 下(按 : 进入):
    • w:保存
    • q:退出
    • q!:强制退出不保存
    • x:保存退出(相当于 wq

3.4 光标移动

操作 效果
h j k l 左下上右(熟练度要练到和 WASD 一样)
G 跳转到文件末行
gg 跳转到文件首行
gg=G 自动排版(缩进对齐)
0 移动到本行行首
$ 移动到本行行尾
NG 跳转到第 N 行(如 50G 跳到第 50 行)
:N 回车 末行模式跳转到第 N 行

3.5 复制粘贴

  • 单行复制 :光标移到行上任意位置,按 yy 复制,移动光标到目标行,按 p 向下粘贴,按 P 向上粘贴。
  • 多行复制Nyy,例如 3yy 复制光标所在行及以下 3 行。
  • 片段复制
    • 移动光标到要复制的首个字母,按 v 进入可视模式 ,移动光标选中文字,按 y 复制,然后 p/P 粘贴。
  • 复制一个单词 :光标移到单词首字母,按 yw,然后 p/P 粘贴。

3.6 撤销和反撤销

  • 撤销 :命令模式下按 u
  • 反撤销Ctrl + r

这个组合我记了好久,后来用多了就肌肉记忆了。

3.7 剪切、删除

Vim 中剪切后如果不粘贴,就是删除。操作和复制类似,只是把 y 换成 d

  • 单行剪切dd,然后 p/P 粘贴。
  • 多行剪切Ndd,例如 3dd 剪切 3 行。
  • 片段剪切 :可视模式下按 d
  • 剪切一个单词 :光标移到单词首字母,按 dw
  • 剪切光标至行首 :光标移动到起始位置,按 d0
  • 剪切光标至行尾 :光标移动到起始位置,按 D(大写的 D)。

3.8 查找和替换

查找
  • 正向查找 :命令模式下按 /,输入关键词,回车,按 n 找下一个,N 找上一个。找到文件末尾会循环。
  • 逆向查找 :光标放在单词上,按 * 向后查找,按 # 向前查找。
替换
  • 单行替换 :末行模式下输入 :s/旧/新,只替换该行第一个匹配。如果替换该行所有匹配,加 g:s/旧/新/g
  • 通篇替换: %s/旧/新/g
  • 多行替换起始行号,结束行号s/旧/新

例如将文件中的 printf 全部替换成 cout

shell 复制代码
:%s/printf/cout/g

3.9 分屏

Vim 可以分屏操作,特别适合对比文件或拷贝内容。

  • 水平分屏:sp (当前文件)或 :sp 新文件名
  • 垂直分屏:vsp:vsp 新文件名
  • 切换分屏Ctrl + w 后按 w(即 Ctrl-w-w
  • 退出分屏 :在某个窗口中执行 qwq 退出该窗口,wqall 退出所有窗口。

我经常用 vsp 同时打开两个文件,然后复制粘贴,非常高效。


四、Vim 配置

Vim 的配置主要在系统配置文件中,路径:/etc/vim/vimrc(系统级),或者自己在家目录下建 ~/.vimrc。每次启动 Vim 时都会执行这些配置。

下面是我整理的一份常用配置,可以直接复制到 .vimrc 里。注意:注释用双引号 " 开头。

shell 复制代码
" -------------------------- 基础设置 --------------------------
set nocompatible              " 关闭vi兼容模式,开启vim专属功能
filetype off                  " 先关闭文件类型检测
filetype plugin indent on     " 开启文件类型检测、插件、缩进支持
syntax enable                 " 开启语法高亮

" -------------------------- 界面优化 --------------------------
set number                    " 显示行号
set relativenumber            " 显示相对行号(可选jfka,不习惯可以删掉)
set cursorline                " 高亮当前行
set showcmd                   " 右下角显示输入的命令
set showmode                  " 左下角显示当前模式(插入/命令/可视)
set laststatus=2              " 始终显示状态栏
set ruler                     " 右下角显示光标位置
set scrolloff=5               " 光标上下至少保留5行
set sidescrolloff=5           " 光标左右至少保留5列
set termguicolors             " 开启真彩色(终端支持的话)
set background=dark           " 背景设为深色(可选,看终端主题)

" -------------------------- 缩进与格式 --------------------------
set tabstop=4                 " 一个tab显示为4个空格
set shiftwidth=4              " 自动缩进的宽度
set expandtab                 " 把tab自动替换为空格(可选,写Python建议开)
set autoindent                " 自动缩进
set smartindent               " 智能缩进(代码更规范)
set smarttab                  " 智能处理tab
set softtabstop=4             " 按退格键时删除4个空格

" -------------------------- 搜索优化 --------------------------
set hlsearch                  " 搜索结果高亮
set incsearch                 " 边输入边搜索
set ignorecase                " 搜索不区分大小写
set smartcase                 " 搜索包含大写字母时自动区分大小写

" -------------------------- 编辑体验 --------------------------
set encoding=utf-8            " 文件编码设为utf-8
set fileencodings=utf-8,gbk  " 支持打开gbk编码文件
set wrap                      " 自动换行
set linebreak                 " 不在单词中间换行
set clipboard=unnamedplus     " 开启系统剪贴板支持(Linux/macOS用unnamedplus,Windows用unnamed)
set mouse=a                   " 开启鼠标支持(点击、滚轮、选中)
set backup                    " 开启备份(可选,建议开启防误删)
set writebackup               " 写入前备份
set undofile                  " 开启持久化撤销(重启vim后仍可撤销)
set undodir=~/.vim/undo/      " 撤销文件保存路径(需要先mkdir ~/.vim/undo)
set backupdir=~/.vim/backup/  " 备份文件保存路径(需要先mkdir ~/.vim/backup)
set swapfile                  " 开启交换文件(防止崩溃丢失内容,建议开启)
set splitbelow                " 水平分屏时新窗口在下方
set splitright                " 垂直分屏时新窗口在右侧

" -------------------------- 快捷键映射 --------------------------
nnoremap <C-s> :w<CR>         " 普通模式下Ctrl+s保存
nnoremap <C-q> :q<CR>         " 普通模式下Ctrl+q退出
inoremap <C-s> <Esc>:w<CR>a   " 插入模式下Ctrl+s保存并回到插入模式
nnoremap <C-h> <C-w>h         " Ctrl+h切换到左分屏
nnoremap <C-j> <C-w>j         " Ctrl+j切换到下分屏
nnoremap <C-k> <C-w>k         " Ctrl+k切换到上分屏
nnoremap <C-l> <C-w>l         " Ctrl+l切换到右分屏

这段配置我是从网上学来再自己修改的,特别推荐 set clipboard=unnamedplus,这样可以直接用系统剪贴板复制粘贴,省去了很多麻烦。


小结

这次 Linux 笔记主要记录了:

  • tar 压缩解压 :注意参数顺序和 -C 指定目录。
  • dpkg 离线安装:简单但要注意软件名 vs 包名。
  • Vim:三种模式、光标移动、复制剪切、查找替换、分屏,这些是日常使用最频繁的功能。
  • Vim 配置:一份比较全面的配置,拿来即用,可以大幅提升编辑体验。

Vim 的学习曲线确实陡峭,但只要坚持用两天,就会觉得离不开了。我现在写代码、改配置文件都用 Vim,效率提升不少。如果大家有更好的配置或技巧,欢迎一起交流!

相关推荐
赛博三把手1 小时前
实操篇一:Claude Code + Token173 国内直连 Anthropic Fable 5 完整接入教程
linux·编辑器·vim
sbjdhjd1 小时前
企业级 Tomcat (上):WEB 技术栈 + 架构演进 + 生产级安装部署
linux·运维·云原生·开源·tomcat·云计算·负载均衡
KuaCpp1 小时前
C++进阶(上)
linux·c++
草莓熊Lotso1 小时前
【Linux网络】深入理解 TCP 协议(一):报头设计与可靠性基石
linux·运维·服务器·c语言·网络·c++·tcp/ip
风曦Kisaki1 小时前
#Linux监控与安全Day02:Zabbix 自动发现,Zabbix 报警机制,Zabbix 主动监控,监控 Nginx 服务
linux·运维·nginx·安全·自动化·云计算·zabbix
gis分享者1 小时前
Linux 网络层 IP 协议与网段划分实战指南
linux·运维·tcp/ip
加油码1 小时前
Linux 信号详解:从 Ctrl+C 到进程异常退出,真正理解信号机制
linux·服务器·c++
keyipatience2 小时前
27,28,29进程通信和匿名管道详解
linux·ubuntu·centos
载数而行5202 小时前
Linux 10 防火墙
linux