Commit graph

26 commits

Author SHA1 Message Date
7a5affe71e audit: wrap loose autocmds in augroups, fix install.sh robustness
.vimrc:
- Wrap all loose autocmds in named augroups with autocmd! (prevents
  doubling on :source $MYVIMRC): ChopstickTabHistory, ChopstickResize,
  ChopstickStdin, CocHighlight, ChopstickCleanup, ChopstickFiletype,
  ChopstickTTYLargeFile, ChopstickWhichKey, ChopstickStartify

install.sh:
- Add Arch Linux (pacman) branch for system tools
- Add hadolint to system tools (brew/apt binary download/pacman)
- Add staticcheck to Go tools
- Add yamllint to pip tools
- Remove sqlfmt from npm (SQL unified to sqlfluff via pip)
- Remove coc-marksman (package does not exist on npm)
- Add coc-settings.json symlink step with backup
- Add pip3 bootstrap when python3 present but pip3 absent
- Fix PlugInstall and CocInstall to use </dev/null (TTY-safe)

coc-settings.json:
- New file: configures marksman as Markdown LSP server for CoC
  (replaces the broken coc-marksman npm package approach)
2026-03-29 16:18:23 +08:00
db16c2f8fc
fix: vim-go startup hang, E495 errors, and afile guard safety (#12)
vim-go / install hang:
- Remove { 'do': ':GoUpdateBinaries' } from vim-go Plug declaration.
  This hook downloads gopls, dlv, gotest and ~10 other binaries during
  PlugInstall, causing multi-minute hangs that look like vim is frozen.
  Run :GoUpdateBinaries manually if Go debugging tools are needed.

vim-go / CoC conflict:
- Add g:go_gopls_enabled = 0 — disables vim-go's own gopls client.
  Without this, vim-go registers a BufWinEnter * autocmd that calls
  go#lsp#DidOpen(expand('<afile>:p')), which fires on NERDTree/Startify
  buffers (no file name), triggers E495, and makes vim wait for Enter.
- g:go_fmt_autosave = 0, g:go_imports_autosave = 0 — CoC/ALE handle
  format-on-save; vim-go's auto-save would double-format.
- g:go_code_completion_enabled = 0 — CoC handles completion.
- Keep vim-go syntax highlights (go_highlight_*) which CoC doesn't provide.

<afile> guard (E495 hardening):
- BWCCreateDir (BufWritePre): wrap in !empty(expand('<afile>')) guard.
- LargeFile (BufReadPre): same guard — special buffers have no file name.
- CleanExtraSpaces (BufWritePre): guard with empty(&buftype) in addition,
  so it only runs for normal file buffers, not terminals or help windows.
- TTY BufReadPre size check: same guard.
2026-03-29 12:22:21 +08:00
d8eee9dc23
install.sh: automate linter/formatter installation (fixes #10)
Rewrite install.sh from a tool-listing script into an actual installer.
Tools are now installed automatically in grouped, prompted steps.

New sections:
- System tools (ripgrep, fzf, ctags, shellcheck, marksman)
  macOS: brew | Debian/Ubuntu: apt | Fedora: dnf
  marksman on Linux: auto-downloads binary from GitHub releases

- npm tools (prettier, markdownlint-cli, stylelint,
  stylelint-config-standard, eslint, typescript, sqlfmt)

- Python tools (black, isort, flake8, pylint, sqlfluff)

- Go tools (gopls, goimports)
  Adds GOPATH/bin to PATH for the session; warns if not in shell profile

- CoC language server extensions (unchanged, now last step)

Other changes:
- --yes flag for non-interactive/CI installs
- try_install / pip_install / npm_install / go_install helpers with
  already-installed detection to avoid redundant reinstalls
- End-of-run summary: Installed / Skipped / Failed lists
- Symlink step now always points to $SCRIPT_DIR/.vimrc (the repo),
  ensuring the right version is always linked regardless of clone path
2026-03-29 11:42:11 +08:00
6b8d691c61
UX audit: startup experience, ergonomics, and interaction fixes (#9)
Startup / welcome screen:
- Startify header is now dynamic: shows config name, Vim version,
  current dir, git branch, and key usage hints (leader, Ctrl-p, ,rg)
- Reorder Startify sections: Sessions first (project restore), then
  directory files, recent files, bookmarks
- Add default bookmarks: ~/.vimrc, ~/.zshrc, ~/.bashrc
- vim <dir>: NERDTree opens left, Startify opens right (replaces the
  broken `ene` empty-buffer hack that left an unnamed buffer)
- vim (no args): NERDTree opens alongside Startify via User Startified
  event, keeping Startify focused — both panels visible from the start
- Consolidate StdinReadPre into a single top-level autocmd so pipe/
  heredoc input is correctly detected in all startup branches

Mapping fixes:
- <leader>bd: remove `:tabclose<cr>gT` chain — it was closing the
  entire tab on every buffer close regardless of other open buffers
- tnoremap <Esc>: change to <Esc><Esc> — single Esc now passes through
  to the running terminal program (fzf, htop, etc.); double Esc exits
- <C-p>: smart file search — uses GFiles (respects .gitignore) inside
  git repos, falls back to Files outside git trees

General UX:
- set lazyredraw moved to TTY-only block — it caused CoC floating
  window flicker in capable terminals; still active in TTY for perf
- Markdown FileType: add tw=0 — prevents global tw=500 from mangling
  gq line wrapping in markdown buffers
- CleanExtraSpaces: expand from 6 hardcoded extensions to all files;
  function is cursor-safe (saves/restores position) so it is harmless
  when ALE trim_whitespace also runs

which-key:
- Add 'd': 'diagnostics' to [a] group — <leader>ad was mapped to
  CocDiagnostics but invisible in the key hint overlay
2026-03-28 18:45:25 +08:00
b329c5f301
docs: sync README with expanded language coverage (#8)
- Add coc-marksman and coc-sql to manual CocInstall example
- Note that install.sh handles all extensions automatically
- Update vim-lsp supported languages list (6 → 12 languages)
- Expand language support table: add CSS/SCSS, Less, SQL rows;
  fill in linters for CSS (stylelint), Markdown (markdownlint), SQL (sqlfluff)
- Clarify ALE fix_on_save behavior note
2026-03-28 18:32:52 +08:00
43baa9753a
Expand LSP and lint coverage for full-stack development languages (#7)
ALE linters:
- Add css/scss: stylelint
- Add markdown: markdownlint
- Add sql: sqlfluff

ALE fixers:
- Add scss, less: prettier
- Add sql: sqlfmt

vim-lsp fallback (no Node.js path):
- Add html, css, scss, json, yaml: vscode language servers
- Add markdown: marksman
- Add sql: sqls

install.sh (CoC path):
- Add coc-go, coc-rust-analyzer, coc-marksman, coc-sql to auto-install
- Expand optional tools section with stylelint, markdownlint, sqlfluff, marksman
2026-03-28 18:30:19 +08:00
323bf4a6b3
LSP 分层后端、UI 增强、UX 修复与完整文档
合并 PR #5:tiered LSP backend (CoC/vim-lsp), vim-which-key, vim-startify, indentLine, 修复按键冲突,UX 改进。
2026-02-21 12:30:06 +08:00
b2ccc50b4d
Merge pull request #4 from m1ngsama/claude/bugfix-installation-validation
Fix critical installation and configuration bugs
2025-12-30 09:56:13 +08:00
0e61537142 Fix critical installation and configuration bugs
This commit addresses multiple issues discovered during code review:

1. Fix variable definition order in .vimrc
   - Move g:is_tty and g:has_true_color definitions to top of file
   - Previously used at line 32 but defined at line 263
   - Ensures variables are available before first use

2. Remove duplicate configuration settings in .vimrc
   - Remove duplicate set number, wildmenu, ruler
   - Remove duplicate search settings (ignorecase, smartcase, hlsearch, incsearch)
   - Remove duplicate backspace and wildignore settings
   - Reduces file size and eliminates confusion

3. Enhance install.sh reliability
   - Add directory validation to ensure script runs from ~/.vim
   - Add symlink validation after creation
   - Fix CoC installation command syntax (vim -c to vim +)
   - Move helper functions before usage
   - Prevents symlink-to-self errors

4. Improve installation documentation
   - Add warnings in README.md about running from correct directory
   - Add IMPORTANT notes in QUICKSTART.md
   - Update installation step descriptions
   - Prevents common user installation mistakes

These fixes improve installation reliability and prevent configuration errors.
2025-12-30 09:53:14 +08:00
51ac142b39
Merge pull request #3 from m1ngsama/claude/tty-optimization-siZCJ 2025-12-30 08:44:55 +08:00
5ef24a5679
Merge pull request #2 from m1ngsama/claude/engineering-optimizations-siZCJ 2025-12-30 08:35:50 +08:00
Claude
3bb1a442c7
Optimize for basic terminal environments (TTY users)
Changes:
- Add automatic TTY detection (TERM=linux, screen, builtin)
- Disable true color mode in TTY for compatibility
- Use ASCII separators instead of powerline fonts in TTY
- Fallback to default colorscheme for 16-color terminals
- Disable cursorline in TTY for better performance
- Simplify signcolumn to 'auto' in TTY
- Disable FZF preview windows in TTY
- Skip auto-opening NERDTree in TTY for faster startup
- Use simpler status line in TTY environments
- Reduce syntax highlighting complexity (synmaxcol=120)
- Disable syntax for files >512KB in TTY
- Add informative message on first TTY run

Benefits for TTY users:
- Faster startup time
- Better performance in resource-constrained environments
- No font dependency issues
- Compatible with basic 16-color terminals
- Works on Linux console, serial terminals
- Optimized for remote sessions over slow connections

All optimizations are automatic - no configuration needed.
2025-12-30 00:32:33 +00:00
Claude
0ea76e6ae7
Remove all icons and emojis - keep it simple (KISS principle)
Changes:
- Replaced checkmarks with plain text in README.md
- Replaced emoji icons with [OK] in install.sh
- Changed ALE error/warning signs from unicode to ASCII (X and !)
- Removed rocket emoji from QUICKSTART.md
- All output now uses simple ASCII characters

Follows KISS (Keep It Simple, Stupid) principle for better:
- Terminal compatibility
- Accessibility
- Readability in all environments
- No font dependencies
2025-12-30 00:29:35 +00:00
Claude
2941614b45
工程化优化:添加快速安装脚本和企业级开发功能
新增功能:
 一键安装脚本 (install.sh)
  - 自动备份现有配置
  - 自动安装 vim-plug
  - 自动安装所有插件
  - 可选安装 CoC 语言服务器
  - 美化的安装界面和详细提示

 快速开始指南 (QUICKSTART.md)
  - 5分钟上手教程
  - 常用工作流程示例
  - 语言特定配置说明
  - 故障排除指南
  - 快速参考卡片

配置增强:
📦 新增插件
  - vim-obsession: 会话管理
  - vim-prosession: 项目会话
  - vim-unimpaired: 便捷的括号映射
  - targets.vim: 额外的文本对象
  - vim-snippets: 代码片段集合

🛠️ 工程化特性
  - 项目特定配置支持 (.vimrc in project root)
  - 大文件自动优化 (>10MB)
  - 终端集成 (,tv, ,th)
  - 会话自动保存
  - 父目录自动创建

⌨️ 新增快捷键
  Git 工作流:
    ,gs - Git status
    ,gc - Git commit
    ,gp - Git push
    ,gl - Git pull
    ,gd - Git diff
    ,gb - Git blame

  工程实用工具:
    ,ev - 编辑 .vimrc
    ,sv - 重载 .vimrc
    ,F  - 格式化整个文件
    ,wa - 保存所有缓冲区
    ,cp - 复制文件路径
    ,cf - 复制文件名
    ,*  - 搜索并替换光标下的单词
    ,,  - 切换到上一个文件

  窗口管理:
    ,=  - 增大窗口高度
    ,-  - 减小窗口高度
    ,+  - 增大窗口宽度
    ,_  - 减小窗口宽度

🌐 语言支持增强
  新增语言配置:
    - Rust (rustfmt, cargo)
    - Shell (shellcheck)
    - YAML (yamllint)
    - Docker (hadolint)
    - HTML/CSS (prettier)
    - Markdown (spell check, prettier)

  改进的 ALE 配置:
    - 更多语言的 linters
    - 优化的性能设置
    - 详细错误显示 (,ad)

🔍 增强的 FZF 集成
  - 改进的预览窗口
  - Git 文件搜索命令
  - 更好的 Ripgrep 集成
  - 自定义布局

📝 NERDTree 优化
  - 自动打开项目目录
  - 忽略 node_modules, __pycache__ 等
  - 可配置窗口大小

文档改进:
📚 README.md 重大更新
  - 添加快速开始章节
  - 详细的工程特性说明
  - 完整的键位映射表
  - 项目配置示例
  - 会话管理说明
  - 大文件处理说明
  - 终端集成文档

适用场景:
 企业级开发团队
 多语言项目
 大型代码库
 持续集成环境
 远程开发
 代码审查

性能优化:
 大文件自动禁用重度功能
 ALE 按需 lint (不在输入时)
 优化的语法高亮
 更快的启动时间
2025-12-30 00:17:46 +00:00
ff27025cbb
Merge pull request #1 from m1ngsama/claude/vim-config-setup-siZCJ 2025-12-30 08:09:45 +08:00
Claude
d457e832be
完全重构:从Neovim迁移到原生Vim配置
重大变更:
- 移除所有Neovim Lua配置(init.lua, lua/目录)
- 创建全新的.vimrc配置文件,汲取互联网优秀实践
- 使用vim-plug作为插件管理器
- 集成20+精选插件,涵盖文件导航、Git、代码编辑、语法检查等

核心特性:
- NERDTree文件浏览器
- FZF模糊查找
- vim-fugitive Git集成
- ALE异步语法检查
- CoC智能补全和LSP支持
- vim-airline美化状态栏
- Gruvbox配色方案

插件列表:
- 文件导航:NERDTree, FZF, CtrlP
- Git工具:vim-fugitive, vim-gitgutter
- 代码编辑:vim-surround, vim-commentary, auto-pairs
- 语言支持:vim-polyglot, vim-go
- 生产力工具:UndoTree, Tagbar, EasyMotion
- 配色方案:Gruvbox, Dracula, Solarized, OneDark

配置亮点:
- 智能行号(绝对+相对)
- 自动安装vim-plug
- 丰富的键位映射(leader键为逗号)
- 多语言支持和自动格式化
- 详细的功能分区和注释

文档:
- 全新的README.md,包含详细的安装指南
- 完整的键位映射表
- 插件配置说明
- 故障排除指南

参考来源:
- amix/vimrc
- vim-plug官方文档
- 2025年现代Vim最佳实践
2025-12-29 14:15:46 +00:00
d919afda5d update config 2025-06-25 09:48:07 +08:00
m1ngsama
07b0e85b01 add lsp plugins 2025-04-09 19:18:55 +08:00
m1ngsama
6200fbfb71 clean json 2024-12-10 00:57:10 +08:00
m1ngsama
3dde844782 lazyvim, autocmds, options, keymaps, plugins added 2024-12-10 00:40:12 +08:00
m1ngsama
b65992aa82 add telescope and some related keymap 2024-11-17 03:52:03 +08:00
m1ngsama
2d28df9891 Merged remote LICENSE file and kept local source code 2024-11-16 18:10:26 +08:00
m1ng
6d71f274bf
Initial commit 2024-11-16 17:57:38 +08:00
miam1gh0st
f41cf69a1a update colorscheme & init README 2024-11-16 17:46:07 +08:00
miam1gh0st
6d8dc3f72d add lazy nvim 2024-11-16 17:28:19 +08:00
miam1gh0st
e1dde8a5d2 init 2024-11-16 16:57:12 +08:00