Skip to content

Latest commit

History

116 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

简体中文

nvim-config

This is my Neovim configuration, using Lazy for plugin management

  • Environment: MacOS + iTerm2

Plugin List

PluginDescription
tokyonight.nvimColor scheme
nvim-tree.luaFile explorer
telescope.nvimFuzzy finder
nvim-lspconfigLSP configuration
mason.nvimLSP server manager
blink.cmpAuto completion
nvim-treesitterSyntax highlighting
lualine.nvimStatus line
gitsigns.nvimGit integration
diffview.nvimMulti-file Git diff viewer
Neovim built-in gc/gccCode commenting
leap.nvimQuick motion
mini.pairsAuto pairs
mini.iconsFile icons
render-markdown.nvimMarkdown in-buffer rendering
markdown-preview.nvimMarkdown / Mermaid browser preview

Initialization Process

  1. Make sure your terminal uses JetBrains Mono Nerd Font Mono (required for icons; covers both ASCII and CJK). Recommended: set up your terminal first with my dotfiles — https://github.com/specode/dotfiles
  2. Clone the project and create a symlink to /Users/{your user}/.config/nvim/
  3. Open lua/config/lang.lua in nvim config directory to configure development languages
  4. Install lsp-server via :Mason
  5. Install ripgrep for global search: brew install ripgrep
  6. Install tree-sitter CLI for AST compilation support: npm install -g tree-sitter-cli (or via Homebrew: brew install tree-sitter-cli)

Keybindings Reference

Basic Operations

KeybindingFunction
,Leader key
YYank from current position to end of line
gbGo back to previous position (<C-o>)
<leader>eShow diagnostic float window

Window & Tab Management

KeybindingFunction
<C-t>Open new tab
<S-H>Switch to previous tab
<S-L>Switch to next tab
<C-h>Switch to left window
<C-j>Switch to bottom window
<C-k>Switch to top window
<C-l>Switch to right window

Quick Motion (Leap)

KeybindingFunction
sLeap (quick jump in normal/visual/operator mode)
SLeap from other windows

File Explorer (nvim-tree)

KeybindingFunction
<C-e>Toggle file tree
,nfLocate current file in file tree
<CR>Open file/directory
hClose directory
vOpen file in vertical split
sOpen file in horizontal split
tOpen file in new tab
aCreate file/directory
dDelete file/directory
rRename file/directory
xCut file/directory
cCopy file/directory
pPaste file/directory
RRefresh file tree
?Show help

Search (Telescope)

KeybindingFunction
<C-p>Find files
<C-g>Global text search
,fbFind buffer
,fhFind help tags
,fdFind diagnostics

Code Navigation (LSP)

KeybindingFunction
gdGo to definition
,dtOpen definition in new tab
,dvOpen definition in vertical split
grFind references
giFind implementations
KShow hover documentation
,rnRename symbol
,caCode actions
[dGo to previous diagnostic
]dGo to next diagnostic
,fFormat code

Code Commenting (Built-in)

KeybindingFunction
//Toggle line comment
/bToggle block comment

Git Operations (Gitsigns)

KeybindingFunction
]cGo to next hunk
[cGo to previous hunk
,hsStage current hunk
,hrReset current hunk
,hSStage entire buffer
,huUndo stage current hunk
,hRReset entire buffer
,hpPreview current hunk
,hbShow blame info for current line
,tbToggle blame info for current line
,hdShow diff for current file
,tdToggle deleted lines

Git Diff View (Diffview)

KeybindingFunction
,gdOpen working tree diff view
,gDOpen staged diff view
,gmDiff view against main branch
,ghShow current file history
,gHShow repository history
,gqClose diff view

Markdown Preview

KeybindingFunction
,mdToggle Markdown preview in browser (includes Mermaid)

Code Completion (blink.cmp)

KeybindingFunction
<C-Space>Manual trigger completion
<C-y>Accept completion item
<C-n>Select next completion item
<C-p>Select previous completion item
<C-e>Cancel completion

About

My Neovim configuration

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - specode/nvim-config: My Neovim configuration · GitHub
Skip to content

Latest commit

History

116 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

简体中文

nvim-config

This is my Neovim configuration, using Lazy for plugin management

  • Environment: MacOS + iTerm2

Plugin List

PluginDescription
tokyonight.nvimColor scheme
nvim-tree.luaFile explorer
telescope.nvimFuzzy finder
nvim-lspconfigLSP configuration
mason.nvimLSP server manager
blink.cmpAuto completion
nvim-treesitterSyntax highlighting
lualine.nvimStatus line
gitsigns.nvimGit integration
diffview.nvimMulti-file Git diff viewer
Neovim built-in gc/gccCode commenting
leap.nvimQuick motion
mini.pairsAuto pairs
mini.iconsFile icons
render-markdown.nvimMarkdown in-buffer rendering
markdown-preview.nvimMarkdown / Mermaid browser preview

Initialization Process

  1. Make sure your terminal uses JetBrains Mono Nerd Font Mono (required for icons; covers both ASCII and CJK). Recommended: set up your terminal first with my dotfiles — https://github.com/specode/dotfiles
  2. Clone the project and create a symlink to /Users/{your user}/.config/nvim/
  3. Open lua/config/lang.lua in nvim config directory to configure development languages
  4. Install lsp-server via :Mason
  5. Install ripgrep for global search: brew install ripgrep
  6. Install tree-sitter CLI for AST compilation support: npm install -g tree-sitter-cli (or via Homebrew: brew install tree-sitter-cli)

Keybindings Reference

Basic Operations

KeybindingFunction
,Leader key
YYank from current position to end of line
gbGo back to previous position (<C-o>)
<leader>eShow diagnostic float window

Window & Tab Management

KeybindingFunction
<C-t>Open new tab
<S-H>Switch to previous tab
<S-L>Switch to next tab
<C-h>Switch to left window
<C-j>Switch to bottom window
<C-k>Switch to top window
<C-l>Switch to right window

Quick Motion (Leap)

KeybindingFunction
sLeap (quick jump in normal/visual/operator mode)
SLeap from other windows

File Explorer (nvim-tree)

KeybindingFunction
<C-e>Toggle file tree
,nfLocate current file in file tree
<CR>Open file/directory
hClose directory
vOpen file in vertical split
sOpen file in horizontal split
tOpen file in new tab
aCreate file/directory
dDelete file/directory
rRename file/directory
xCut file/directory
cCopy file/directory
pPaste file/directory
RRefresh file tree
?Show help

Search (Telescope)

KeybindingFunction
<C-p>Find files
<C-g>Global text search
,fbFind buffer
,fhFind help tags
,fdFind diagnostics

Code Navigation (LSP)

KeybindingFunction
gdGo to definition
,dtOpen definition in new tab
,dvOpen definition in vertical split
grFind references
giFind implementations
KShow hover documentation
,rnRename symbol
,caCode actions
[dGo to previous diagnostic
]dGo to next diagnostic
,fFormat code

Code Commenting (Built-in)

KeybindingFunction
//Toggle line comment
/bToggle block comment

Git Operations (Gitsigns)

KeybindingFunction
]cGo to next hunk
[cGo to previous hunk
,hsStage current hunk
,hrReset current hunk
,hSStage entire buffer
,huUndo stage current hunk
,hRReset entire buffer
,hpPreview current hunk
,hbShow blame info for current line
,tbToggle blame info for current line
,hdShow diff for current file
,tdToggle deleted lines

Git Diff View (Diffview)

KeybindingFunction
,gdOpen working tree diff view
,gDOpen staged diff view
,gmDiff view against main branch
,ghShow current file history
,gHShow repository history
,gqClose diff view

Markdown Preview

KeybindingFunction
,mdToggle Markdown preview in browser (includes Mermaid)

Code Completion (blink.cmp)

KeybindingFunction
<C-Space>Manual trigger completion
<C-y>Accept completion item
<C-n>Select next completion item
<C-p>Select previous completion item
<C-e>Cancel completion

About

My Neovim configuration

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - specode/nvim-config: My Neovim configuration · GitHub
Skip to content

Latest commit

History

116 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

简体中文

nvim-config

This is my Neovim configuration, using Lazy for plugin management

  • Environment: MacOS + iTerm2

Plugin List

PluginDescription
tokyonight.nvimColor scheme
nvim-tree.luaFile explorer
telescope.nvimFuzzy finder
nvim-lspconfigLSP configuration
mason.nvimLSP server manager
blink.cmpAuto completion
nvim-treesitterSyntax highlighting
lualine.nvimStatus line
gitsigns.nvimGit integration
diffview.nvimMulti-file Git diff viewer
Neovim built-in gc/gccCode commenting
leap.nvimQuick motion
mini.pairsAuto pairs
mini.iconsFile icons
render-markdown.nvimMarkdown in-buffer rendering
markdown-preview.nvimMarkdown / Mermaid browser preview

Initialization Process

  1. Make sure your terminal uses JetBrains Mono Nerd Font Mono (required for icons; covers both ASCII and CJK). Recommended: set up your terminal first with my dotfiles — https://github.com/specode/dotfiles
  2. Clone the project and create a symlink to /Users/{your user}/.config/nvim/
  3. Open lua/config/lang.lua in nvim config directory to configure development languages
  4. Install lsp-server via :Mason
  5. Install ripgrep for global search: brew install ripgrep
  6. Install tree-sitter CLI for AST compilation support: npm install -g tree-sitter-cli (or via Homebrew: brew install tree-sitter-cli)

Keybindings Reference

Basic Operations

KeybindingFunction
,Leader key
YYank from current position to end of line
gbGo back to previous position (<C-o>)
<leader>eShow diagnostic float window

Window & Tab Management

KeybindingFunction
<C-t>Open new tab
<S-H>Switch to previous tab
<S-L>Switch to next tab
<C-h>Switch to left window
<C-j>Switch to bottom window
<C-k>Switch to top window
<C-l>Switch to right window

Quick Motion (Leap)

KeybindingFunction
sLeap (quick jump in normal/visual/operator mode)
SLeap from other windows

File Explorer (nvim-tree)

KeybindingFunction
<C-e>Toggle file tree
,nfLocate current file in file tree
<CR>Open file/directory
hClose directory
vOpen file in vertical split
sOpen file in horizontal split
tOpen file in new tab
aCreate file/directory
dDelete file/directory
rRename file/directory
xCut file/directory
cCopy file/directory
pPaste file/directory
RRefresh file tree
?Show help

Search (Telescope)

KeybindingFunction
<C-p>Find files
<C-g>Global text search
,fbFind buffer
,fhFind help tags
,fdFind diagnostics

Code Navigation (LSP)

KeybindingFunction
gdGo to definition
,dtOpen definition in new tab
,dvOpen definition in vertical split
grFind references
giFind implementations
KShow hover documentation
,rnRename symbol
,caCode actions
[dGo to previous diagnostic
]dGo to next diagnostic
,fFormat code

Code Commenting (Built-in)

KeybindingFunction
//Toggle line comment
/bToggle block comment

Git Operations (Gitsigns)

KeybindingFunction
]cGo to next hunk
[cGo to previous hunk
,hsStage current hunk
,hrReset current hunk
,hSStage entire buffer
,huUndo stage current hunk
,hRReset entire buffer
,hpPreview current hunk
,hbShow blame info for current line
,tbToggle blame info for current line
,hdShow diff for current file
,tdToggle deleted lines

Git Diff View (Diffview)

KeybindingFunction
,gdOpen working tree diff view
,gDOpen staged diff view
,gmDiff view against main branch
,ghShow current file history
,gHShow repository history
,gqClose diff view

Markdown Preview

KeybindingFunction
,mdToggle Markdown preview in browser (includes Mermaid)

Code Completion (blink.cmp)

KeybindingFunction
<C-Space>Manual trigger completion
<C-y>Accept completion item
<C-n>Select next completion item
<C-p>Select previous completion item
<C-e>Cancel completion

About

My Neovim configuration

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - specode/nvim-config: My Neovim configuration · GitHub
Skip to content

Latest commit

History

116 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

简体中文

nvim-config

This is my Neovim configuration, using Lazy for plugin management

  • Environment: MacOS + iTerm2

Plugin List

PluginDescription
tokyonight.nvimColor scheme
nvim-tree.luaFile explorer
telescope.nvimFuzzy finder
nvim-lspconfigLSP configuration
mason.nvimLSP server manager
blink.cmpAuto completion
nvim-treesitterSyntax highlighting
lualine.nvimStatus line
gitsigns.nvimGit integration
diffview.nvimMulti-file Git diff viewer
Neovim built-in gc/gccCode commenting
leap.nvimQuick motion
mini.pairsAuto pairs
mini.iconsFile icons
render-markdown.nvimMarkdown in-buffer rendering
markdown-preview.nvimMarkdown / Mermaid browser preview

Initialization Process

  1. Make sure your terminal uses JetBrains Mono Nerd Font Mono (required for icons; covers both ASCII and CJK). Recommended: set up your terminal first with my dotfiles — https://github.com/specode/dotfiles
  2. Clone the project and create a symlink to /Users/{your user}/.config/nvim/
  3. Open lua/config/lang.lua in nvim config directory to configure development languages
  4. Install lsp-server via :Mason
  5. Install ripgrep for global search: brew install ripgrep
  6. Install tree-sitter CLI for AST compilation support: npm install -g tree-sitter-cli (or via Homebrew: brew install tree-sitter-cli)

Keybindings Reference

Basic Operations

KeybindingFunction
,Leader key
YYank from current position to end of line
gbGo back to previous position (<C-o>)
<leader>eShow diagnostic float window

Window & Tab Management

KeybindingFunction
<C-t>Open new tab
<S-H>Switch to previous tab
<S-L>Switch to next tab
<C-h>Switch to left window
<C-j>Switch to bottom window
<C-k>Switch to top window
<C-l>Switch to right window

Quick Motion (Leap)

KeybindingFunction
sLeap (quick jump in normal/visual/operator mode)
SLeap from other windows

File Explorer (nvim-tree)

KeybindingFunction
<C-e>Toggle file tree
,nfLocate current file in file tree
<CR>Open file/directory
hClose directory
vOpen file in vertical split
sOpen file in horizontal split
tOpen file in new tab
aCreate file/directory
dDelete file/directory
rRename file/directory
xCut file/directory
cCopy file/directory
pPaste file/directory
RRefresh file tree
?Show help

Search (Telescope)

KeybindingFunction
<C-p>Find files
<C-g>Global text search
,fbFind buffer
,fhFind help tags
,fdFind diagnostics

Code Navigation (LSP)

KeybindingFunction
gdGo to definition
,dtOpen definition in new tab
,dvOpen definition in vertical split
grFind references
giFind implementations
KShow hover documentation
,rnRename symbol
,caCode actions
[dGo to previous diagnostic
]dGo to next diagnostic
,fFormat code

Code Commenting (Built-in)

KeybindingFunction
//Toggle line comment
/bToggle block comment

Git Operations (Gitsigns)

KeybindingFunction
]cGo to next hunk
[cGo to previous hunk
,hsStage current hunk
,hrReset current hunk
,hSStage entire buffer
,huUndo stage current hunk
,hRReset entire buffer
,hpPreview current hunk
,hbShow blame info for current line
,tbToggle blame info for current line
,hdShow diff for current file
,tdToggle deleted lines

Git Diff View (Diffview)

KeybindingFunction
,gdOpen working tree diff view
,gDOpen staged diff view
,gmDiff view against main branch
,ghShow current file history
,gHShow repository history
,gqClose diff view

Markdown Preview

KeybindingFunction
,mdToggle Markdown preview in browser (includes Mermaid)

Code Completion (blink.cmp)

KeybindingFunction
<C-Space>Manual trigger completion
<C-y>Accept completion item
<C-n>Select next completion item
<C-p>Select previous completion item
<C-e>Cancel completion

About

My Neovim configuration

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - specode/nvim-config: My Neovim configuration · GitHub
Skip to content

Latest commit

History

116 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

简体中文

nvim-config

This is my Neovim configuration, using Lazy for plugin management

  • Environment: MacOS + iTerm2

Plugin List

PluginDescription
tokyonight.nvimColor scheme
nvim-tree.luaFile explorer
telescope.nvimFuzzy finder
nvim-lspconfigLSP configuration
mason.nvimLSP server manager
blink.cmpAuto completion
nvim-treesitterSyntax highlighting
lualine.nvimStatus line
gitsigns.nvimGit integration
diffview.nvimMulti-file Git diff viewer
Neovim built-in gc/gccCode commenting
leap.nvimQuick motion
mini.pairsAuto pairs
mini.iconsFile icons
render-markdown.nvimMarkdown in-buffer rendering
markdown-preview.nvimMarkdown / Mermaid browser preview

Initialization Process

  1. Make sure your terminal uses JetBrains Mono Nerd Font Mono (required for icons; covers both ASCII and CJK). Recommended: set up your terminal first with my dotfiles — https://github.com/specode/dotfiles
  2. Clone the project and create a symlink to /Users/{your user}/.config/nvim/
  3. Open lua/config/lang.lua in nvim config directory to configure development languages
  4. Install lsp-server via :Mason
  5. Install ripgrep for global search: brew install ripgrep
  6. Install tree-sitter CLI for AST compilation support: npm install -g tree-sitter-cli (or via Homebrew: brew install tree-sitter-cli)

Keybindings Reference

Basic Operations

KeybindingFunction
,Leader key
YYank from current position to end of line
gbGo back to previous position (<C-o>)
<leader>eShow diagnostic float window

Window & Tab Management

KeybindingFunction
<C-t>Open new tab
<S-H>Switch to previous tab
<S-L>Switch to next tab
<C-h>Switch to left window
<C-j>Switch to bottom window
<C-k>Switch to top window
<C-l>Switch to right window

Quick Motion (Leap)

KeybindingFunction
sLeap (quick jump in normal/visual/operator mode)
SLeap from other windows

File Explorer (nvim-tree)

KeybindingFunction
<C-e>Toggle file tree
,nfLocate current file in file tree
<CR>Open file/directory
hClose directory
vOpen file in vertical split
sOpen file in horizontal split
tOpen file in new tab
aCreate file/directory
dDelete file/directory
rRename file/directory
xCut file/directory
cCopy file/directory
pPaste file/directory
RRefresh file tree
?Show help

Search (Telescope)

KeybindingFunction
<C-p>Find files
<C-g>Global text search
,fbFind buffer
,fhFind help tags
,fdFind diagnostics

Code Navigation (LSP)

KeybindingFunction
gdGo to definition
,dtOpen definition in new tab
,dvOpen definition in vertical split
grFind references
giFind implementations
KShow hover documentation
,rnRename symbol
,caCode actions
[dGo to previous diagnostic
]dGo to next diagnostic
,fFormat code

Code Commenting (Built-in)

KeybindingFunction
//Toggle line comment
/bToggle block comment

Git Operations (Gitsigns)

KeybindingFunction
]cGo to next hunk
[cGo to previous hunk
,hsStage current hunk
,hrReset current hunk
,hSStage entire buffer
,huUndo stage current hunk
,hRReset entire buffer
,hpPreview current hunk
,hbShow blame info for current line
,tbToggle blame info for current line
,hdShow diff for current file
,tdToggle deleted lines

Git Diff View (Diffview)

KeybindingFunction
,gdOpen working tree diff view
,gDOpen staged diff view
,gmDiff view against main branch
,ghShow current file history
,gHShow repository history
,gqClose diff view

Markdown Preview

KeybindingFunction
,mdToggle Markdown preview in browser (includes Mermaid)

Code Completion (blink.cmp)

KeybindingFunction
<C-Space>Manual trigger completion
<C-y>Accept completion item
<C-n>Select next completion item
<C-p>Select previous completion item
<C-e>Cancel completion

About

My Neovim configuration

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - specode/nvim-config: My Neovim configuration · GitHub
Skip to content

Latest commit

History

116 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

简体中文

nvim-config

This is my Neovim configuration, using Lazy for plugin management

  • Environment: MacOS + iTerm2

Plugin List

PluginDescription
tokyonight.nvimColor scheme
nvim-tree.luaFile explorer
telescope.nvimFuzzy finder
nvim-lspconfigLSP configuration
mason.nvimLSP server manager
blink.cmpAuto completion
nvim-treesitterSyntax highlighting
lualine.nvimStatus line
gitsigns.nvimGit integration
diffview.nvimMulti-file Git diff viewer
Neovim built-in gc/gccCode commenting
leap.nvimQuick motion
mini.pairsAuto pairs
mini.iconsFile icons
render-markdown.nvimMarkdown in-buffer rendering
markdown-preview.nvimMarkdown / Mermaid browser preview

Initialization Process

  1. Make sure your terminal uses JetBrains Mono Nerd Font Mono (required for icons; covers both ASCII and CJK). Recommended: set up your terminal first with my dotfiles — https://github.com/specode/dotfiles
  2. Clone the project and create a symlink to /Users/{your user}/.config/nvim/
  3. Open lua/config/lang.lua in nvim config directory to configure development languages
  4. Install lsp-server via :Mason
  5. Install ripgrep for global search: brew install ripgrep
  6. Install tree-sitter CLI for AST compilation support: npm install -g tree-sitter-cli (or via Homebrew: brew install tree-sitter-cli)

Keybindings Reference

Basic Operations

KeybindingFunction
,Leader key
YYank from current position to end of line
gbGo back to previous position (<C-o>)
<leader>eShow diagnostic float window

Window & Tab Management

KeybindingFunction
<C-t>Open new tab
<S-H>Switch to previous tab
<S-L>Switch to next tab
<C-h>Switch to left window
<C-j>Switch to bottom window
<C-k>Switch to top window
<C-l>Switch to right window

Quick Motion (Leap)

KeybindingFunction
sLeap (quick jump in normal/visual/operator mode)
SLeap from other windows

File Explorer (nvim-tree)

KeybindingFunction
<C-e>Toggle file tree
,nfLocate current file in file tree
<CR>Open file/directory
hClose directory
vOpen file in vertical split
sOpen file in horizontal split
tOpen file in new tab
aCreate file/directory
dDelete file/directory
rRename file/directory
xCut file/directory
cCopy file/directory
pPaste file/directory
RRefresh file tree
?Show help

Search (Telescope)

KeybindingFunction
<C-p>Find files
<C-g>Global text search
,fbFind buffer
,fhFind help tags
,fdFind diagnostics

Code Navigation (LSP)

KeybindingFunction
gdGo to definition
,dtOpen definition in new tab
,dvOpen definition in vertical split
grFind references
giFind implementations
KShow hover documentation
,rnRename symbol
,caCode actions
[dGo to previous diagnostic
]dGo to next diagnostic
,fFormat code

Code Commenting (Built-in)

KeybindingFunction
//Toggle line comment
/bToggle block comment

Git Operations (Gitsigns)

KeybindingFunction
]cGo to next hunk
[cGo to previous hunk
,hsStage current hunk
,hrReset current hunk
,hSStage entire buffer
,huUndo stage current hunk
,hRReset entire buffer
,hpPreview current hunk
,hbShow blame info for current line
,tbToggle blame info for current line
,hdShow diff for current file
,tdToggle deleted lines

Git Diff View (Diffview)

KeybindingFunction
,gdOpen working tree diff view
,gDOpen staged diff view
,gmDiff view against main branch
,ghShow current file history
,gHShow repository history
,gqClose diff view

Markdown Preview

KeybindingFunction
,mdToggle Markdown preview in browser (includes Mermaid)

Code Completion (blink.cmp)

KeybindingFunction
<C-Space>Manual trigger completion
<C-y>Accept completion item
<C-n>Select next completion item
<C-p>Select previous completion item
<C-e>Cancel completion

About

My Neovim configuration

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - specode/nvim-config: My Neovim configuration · GitHub
Skip to content

Latest commit

History

116 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

简体中文

nvim-config

This is my Neovim configuration, using Lazy for plugin management

  • Environment: MacOS + iTerm2

Plugin List

PluginDescription
tokyonight.nvimColor scheme
nvim-tree.luaFile explorer
telescope.nvimFuzzy finder
nvim-lspconfigLSP configuration
mason.nvimLSP server manager
blink.cmpAuto completion
nvim-treesitterSyntax highlighting
lualine.nvimStatus line
gitsigns.nvimGit integration
diffview.nvimMulti-file Git diff viewer
Neovim built-in gc/gccCode commenting
leap.nvimQuick motion
mini.pairsAuto pairs
mini.iconsFile icons
render-markdown.nvimMarkdown in-buffer rendering
markdown-preview.nvimMarkdown / Mermaid browser preview

Initialization Process

  1. Make sure your terminal uses JetBrains Mono Nerd Font Mono (required for icons; covers both ASCII and CJK). Recommended: set up your terminal first with my dotfiles — https://github.com/specode/dotfiles
  2. Clone the project and create a symlink to /Users/{your user}/.config/nvim/
  3. Open lua/config/lang.lua in nvim config directory to configure development languages
  4. Install lsp-server via :Mason
  5. Install ripgrep for global search: brew install ripgrep
  6. Install tree-sitter CLI for AST compilation support: npm install -g tree-sitter-cli (or via Homebrew: brew install tree-sitter-cli)

Keybindings Reference

Basic Operations

KeybindingFunction
,Leader key
YYank from current position to end of line
gbGo back to previous position (<C-o>)
<leader>eShow diagnostic float window

Window & Tab Management

KeybindingFunction
<C-t>Open new tab
<S-H>Switch to previous tab
<S-L>Switch to next tab
<C-h>Switch to left window
<C-j>Switch to bottom window
<C-k>Switch to top window
<C-l>Switch to right window

Quick Motion (Leap)

KeybindingFunction
sLeap (quick jump in normal/visual/operator mode)
SLeap from other windows

File Explorer (nvim-tree)

KeybindingFunction
<C-e>Toggle file tree
,nfLocate current file in file tree
<CR>Open file/directory
hClose directory
vOpen file in vertical split
sOpen file in horizontal split
tOpen file in new tab
aCreate file/directory
dDelete file/directory
rRename file/directory
xCut file/directory
cCopy file/directory
pPaste file/directory
RRefresh file tree
?Show help

Search (Telescope)

KeybindingFunction
<C-p>Find files
<C-g>Global text search
,fbFind buffer
,fhFind help tags
,fdFind diagnostics

Code Navigation (LSP)

KeybindingFunction
gdGo to definition
,dtOpen definition in new tab
,dvOpen definition in vertical split
grFind references
giFind implementations
KShow hover documentation
,rnRename symbol
,caCode actions
[dGo to previous diagnostic
]dGo to next diagnostic
,fFormat code

Code Commenting (Built-in)

KeybindingFunction
//Toggle line comment
/bToggle block comment

Git Operations (Gitsigns)

KeybindingFunction
]cGo to next hunk
[cGo to previous hunk
,hsStage current hunk
,hrReset current hunk
,hSStage entire buffer
,huUndo stage current hunk
,hRReset entire buffer
,hpPreview current hunk
,hbShow blame info for current line
,tbToggle blame info for current line
,hdShow diff for current file
,tdToggle deleted lines

Git Diff View (Diffview)

KeybindingFunction
,gdOpen working tree diff view
,gDOpen staged diff view
,gmDiff view against main branch
,ghShow current file history
,gHShow repository history
,gqClose diff view

Markdown Preview

KeybindingFunction
,mdToggle Markdown preview in browser (includes Mermaid)

Code Completion (blink.cmp)

KeybindingFunction
<C-Space>Manual trigger completion
<C-y>Accept completion item
<C-n>Select next completion item
<C-p>Select previous completion item
<C-e>Cancel completion

About

My Neovim configuration

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - specode/nvim-config: My Neovim configuration · GitHub
Skip to content

Latest commit

History

116 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

简体中文

nvim-config

This is my Neovim configuration, using Lazy for plugin management

  • Environment: MacOS + iTerm2

Plugin List

PluginDescription
tokyonight.nvimColor scheme
nvim-tree.luaFile explorer
telescope.nvimFuzzy finder
nvim-lspconfigLSP configuration
mason.nvimLSP server manager
blink.cmpAuto completion
nvim-treesitterSyntax highlighting
lualine.nvimStatus line
gitsigns.nvimGit integration
diffview.nvimMulti-file Git diff viewer
Neovim built-in gc/gccCode commenting
leap.nvimQuick motion
mini.pairsAuto pairs
mini.iconsFile icons
render-markdown.nvimMarkdown in-buffer rendering
markdown-preview.nvimMarkdown / Mermaid browser preview

Initialization Process

  1. Make sure your terminal uses JetBrains Mono Nerd Font Mono (required for icons; covers both ASCII and CJK). Recommended: set up your terminal first with my dotfiles — https://github.com/specode/dotfiles
  2. Clone the project and create a symlink to /Users/{your user}/.config/nvim/
  3. Open lua/config/lang.lua in nvim config directory to configure development languages
  4. Install lsp-server via :Mason
  5. Install ripgrep for global search: brew install ripgrep
  6. Install tree-sitter CLI for AST compilation support: npm install -g tree-sitter-cli (or via Homebrew: brew install tree-sitter-cli)

Keybindings Reference

Basic Operations

KeybindingFunction
,Leader key
YYank from current position to end of line
gbGo back to previous position (<C-o>)
<leader>eShow diagnostic float window

Window & Tab Management

KeybindingFunction
<C-t>Open new tab
<S-H>Switch to previous tab
<S-L>Switch to next tab
<C-h>Switch to left window
<C-j>Switch to bottom window
<C-k>Switch to top window
<C-l>Switch to right window

Quick Motion (Leap)

KeybindingFunction
sLeap (quick jump in normal/visual/operator mode)
SLeap from other windows

File Explorer (nvim-tree)

KeybindingFunction
<C-e>Toggle file tree
,nfLocate current file in file tree
<CR>Open file/directory
hClose directory
vOpen file in vertical split
sOpen file in horizontal split
tOpen file in new tab
aCreate file/directory
dDelete file/directory
rRename file/directory
xCut file/directory
cCopy file/directory
pPaste file/directory
RRefresh file tree
?Show help

Search (Telescope)

KeybindingFunction
<C-p>Find files
<C-g>Global text search
,fbFind buffer
,fhFind help tags
,fdFind diagnostics

Code Navigation (LSP)

KeybindingFunction
gdGo to definition
,dtOpen definition in new tab
,dvOpen definition in vertical split
grFind references
giFind implementations
KShow hover documentation
,rnRename symbol
,caCode actions
[dGo to previous diagnostic
]dGo to next diagnostic
,fFormat code

Code Commenting (Built-in)

KeybindingFunction
//Toggle line comment
/bToggle block comment

Git Operations (Gitsigns)

KeybindingFunction
]cGo to next hunk
[cGo to previous hunk
,hsStage current hunk
,hrReset current hunk
,hSStage entire buffer
,huUndo stage current hunk
,hRReset entire buffer
,hpPreview current hunk
,hbShow blame info for current line
,tbToggle blame info for current line
,hdShow diff for current file
,tdToggle deleted lines

Git Diff View (Diffview)

KeybindingFunction
,gdOpen working tree diff view
,gDOpen staged diff view
,gmDiff view against main branch
,ghShow current file history
,gHShow repository history
,gqClose diff view

Markdown Preview

KeybindingFunction
,mdToggle Markdown preview in browser (includes Mermaid)

Code Completion (blink.cmp)

KeybindingFunction
<C-Space>Manual trigger completion
<C-y>Accept completion item
<C-n>Select next completion item
<C-p>Select previous completion item
<C-e>Cancel completion

About

My Neovim configuration

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Contributors

Languages