当前位置: 首页 > web >正文

WSL 安装 Debian 12 后,Linux 如何安装 vim ?

在 WSL 的 Debian 12 中安装 Vim 非常简单,只需使用 apt 包管理器即可。以下是详细步骤:


1. 更新软件包列表

首先打开终端,确保系统包列表是最新的:

sudo apt update

2. 安装 Vim

直接通过 apt 安装 Vim:

sudo apt install vim -y
  • -y 参数表示自动确认安装,避免手动输入确认。

3. 验证安装

安装完成后,检查 Vim 版本以确认安装成功:

vim --version

如果看到版本信息(如 VIM - Vi IMproved 9.0),则说明安装成功。


4. 使用 Vim

直接输入 vim 命令即可启动编辑器:

vim 文件名
  • 基础操作
    • i 进入编辑模式。
    • Esc 退出编辑模式。
    • 输入 :wq 保存并退出,:q! 不保存强制退出。

可能出现的问题

  1. 安装失败

    • 检查网络连接(WSL 需依赖 Windows 网络)。
    • 确保已正确执行 sudo apt update
  2. 命令未找到

    • 确认安装包名正确,Debian 中包名为 vim,而非 vim-tiny(精简版)。

通过以上步骤,你可以在 Debian 12 中快速安装并使用 Vim。


vim 与 vi 有什么不同 ?

vim(Vi IMproved)是 vi 的增强版本,两者在功能和用户体验上有显著区别。以下是具体差异:


1. 历史背景

  • vi
    诞生于 1976 年(Bill Joy 开发),是 Unix 系统的经典文本编辑器,功能简单但高效。
  • vim
    由 Bram Moolenaar 于 1991 年开发,目标是改进 vi,提供更丰富的功能,同时保持兼容性。

2. 功能差异

功能vivim
语法高亮❌ 不支持✅ 支持多种编程语言的语法高亮
多级撤销(Undo)❌ 仅支持单步撤销✅ 支持无限次撤销
插件系统❌ 不支持✅ 可通过插件扩展功能(如代码补全、版本控制)
多窗口/分屏❌ 不支持✅ 支持横向/纵向分屏编辑
脚本支持❌ 不支持复杂脚本✅ 支持 Vimscript/Lua/Python 等脚本语言
搜索高亮❌ 无✅ 可高亮所有匹配项
图形界面❌ 纯命令行✅ 支持 GUI 版本(如 gvim

3. 兼容性

  • vim 几乎完全兼容 vi 的语法和操作(例如 h/j/k/l 移动、:wq 保存退出等)。
  • 在多数 Linux 系统中,vi 命令实际指向 vim 的简化版(如 vim.tiny),可通过以下命令验证:
    ls -l /usr/bin/vi   # 通常显示链接到 vim.tiny 或类似路径
    

4. 用户界面

  • vi
    界面简洁,适合快速编辑小文件,但对复杂任务(如编程)不够友好。
  • vim
    提供状态栏、行号显示、错误提示等,且支持鼠标操作(需在配置中启用 set mouse=a)。

实际使用场景

  • 推荐 vi 的场景
    • 紧急修复系统文件(例如在最小化安装的服务器环境中)。
  • 推荐 vim 的场景
    • 编程、编辑配置文件、需要语法高亮和多窗口操作的任务。
    • 自定义配置(如通过 ~/.vimrc 文件优化体验)。

总结

  • vi:轻量、快速,适合基础编辑。
  • vim:功能全面,适合开发者和进阶用户。
  • 建议:在支持 vim 的环境中优先使用它,通过 vimtutor 命令学习其强大功能。

vim 如何配置 编辑 python ?

以下是针对 Python 开发的 Vim 配置指南,涵盖语法高亮、自动补全、代码检查等常用功能:


1. 基础配置(.vimrc 文件)

在用户目录下创建或编辑 Vim 配置文件:

vim ~/.vimrc

添加以下基础配置:

" 通用设置
set number              " 显示行号
set tabstop=4           " Tab 显示为 4 空格
set shiftwidth=4        " 自动缩进时每层缩进 4 空格
set expandtab           " 将 Tab 转换为空格(符合 PEP8)
syntax on               " 开启语法高亮
filetype plugin indent on " 根据文件类型加载插件和缩进规则" Python 专用设置
autocmd FileType python setlocal foldmethod=indent  " 按缩进折叠代码
autocmd FileType python setlocal colorcolumn=80     " 显示第80列参考线(PEP8)

2. 插件管理(推荐使用 Vim-Plug)

(1) 安装插件管理器 Vim-Plug

在终端执行:

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
(2) 在 .vimrc 中添加插件

~/.vimrc 中添加以下内容:

call plug#begin('~/.vim/plugged')" Python 开发必备插件
Plug 'davidhalter/jedi-vim'            " 自动补全和函数跳转
Plug 'vim-python/python-syntax'        " 增强的 Python 语法高亮
Plug 'Vimjas/vim-python-pep8-indent'   " 符合 PEP8 的缩进规则
Plug 'dense-analysis/ale'              " 实时语法检查(支持 flake8/pylint)
Plug 'Yggdroot/indentLine'             " 显示缩进参考线call plug#end()
(3) 安装插件

重启 Vim 后执行:

:PlugInstall

3. 关键插件配置

(1) Jedi-vim(自动补全)

.vimrc 中添加:

let g:jedi#popup_on_dot = 0           " 输入 `.` 时不自动弹出补全
let g:jedi#use_tabs_not_buffers = 1    " 使用标签页跳转定义
(2) ALE(语法检查)

配置检查工具(如 flake8mypy):

let g:ale_linters = {'python': ['flake8', 'mypy']}
let g:ale_fixers = {'python': ['black']}  " 保存时自动用 black 格式化
let g:ale_fix_on_save = 1

确保已安装工具:

pip install flake8 mypy black
(3) Python 语法高亮增强

.vimrc 中启用增强高亮:

let g:python_highlight_all = 1

4. 虚拟环境支持

若使用虚拟环境(如 venvconda),在 .vimrc 中指定 Python 解释器路径:

let g:python3_host_prog = '/path/to/your/venv/bin/python3'

5. 调试支持(可选)

(1) 集成 pdb 调试

在代码中插入断点:

import pdb; pdb.set_trace()

在 Vim 中使用 :!python % 运行脚本,进入调试模式。

(2) 使用 vim-terminal

安装终端插件(如 vim-terminal):

Plug 'vimlab/split-term.vim'  " 添加至插件列表

在 Vim 中通过 :Term 打开终端,直接运行 Python 代码。


6. 学习资源

  • 在 Vim 内学习基础操作:终端输入 vimtutor
  • Jedi-vim 文档::help jedi-vim
  • ALE 配置::help ale

通过以上配置,你的 Vim 将具备现代 Python IDE 的核心功能!

http://www.xdnf.cn/news/5833.html

相关文章:

  • OpenVLA (2) 机器人环境和环境数据
  • 【UAP】《Empirical Upper Bound in Object Detection and More》
  • 【HTML5】【AJAX的几种封装方法详解】
  • 【deekseek】TCP Offload Engine
  • LeetCode 648 单词替换题解
  • Baklib智能云平台加速企业数据治理
  • 桑德拉精神与开源链动2+1模式AI智能名片S2B2C商城小程序的协同价值研究
  • 01.类型转换+Scanner+制表符嫦娥例题
  • dockers笔记
  • FastDDS Transport功能模块初步整理
  • 《医院网络安全运营能力成熟度评估指南》(试行版)研究解读
  • Spring Boot 的自动配置为 Spring MVC 做了哪些事情?
  • matlab多智能体网络一致性研究
  • 【C++详解】类和对象(上)类的定义、实例化、this指针
  • C++11 ——右值引用和移动语义
  • 手动硬密封固定式对夹V型球阀:复杂介质工况下的高性价比流体控制方案-耀圣
  • 深度学习基础
  • Kotlin-类和对象
  • Angular | 利用 `ChangeDetectorRef` 解决 Angular 动态显示输入框的聚焦问题
  • Java后端开发day48--反射动态代理
  • 【速写】TRL:Trainer的细节与思考(PPO/DPO+LoRA可行性)
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】金融风控分析案例-10.4 模型部署与定期评估
  • 虹科技术 | 简化汽车零部件测试:LIN/CAN总线设备的按键触发功能实现
  • C/C++内存管理
  • const char* 指向字符串数组和字符串的区别
  • css3基于伸缩盒模型生成一个小案例
  • 华三路由器单臂路由配置
  • 数字IC后端培训教程之数字后端项目典型案例分析
  • Spring Boot 的 CommandLineRunner
  • 【爬虫】12306查票