|
|
|
|
פורסם: 19/02/2024 - 11:52
נושא ההודעה: vim vs neovim
|
תגידו חברים,
שאלה שאלתית לאוהבי הז'אנר,
איך אתם מקנפנגים את ה-vim ו-/neovim שלכם?
לאחרונה שיחקתי קצת עם LSP,
בשביל לקבל יכולות דומות ל-IDE, בעיקר של do to definition בין קבצים שונים בתקיות שונות,
מרגיש שכשלתי רבות,
עדיין לא מצליח לקפוץ בין קבצים.
דוגמה של
קוד: | ~/.config/nvim/init.lua |
קוד: |
local function bootstrap_pckr()
local pckr_path = vim.fn.stdpath("data") .. "/pckr/pckr.nvim"
if not vim.loop.fs_stat(pckr_path) then
vim.fn.system({
'git',
'clone',
"--filter=blob:none",
'https://github.com/lewis6991/pckr.nvim',
pckr_path
})
end
vim.opt.rtp:prepend(pckr_path)
end
bootstrap_pckr()
require('pckr').add{
'nvim-lua/plenary.nvim';
'nvim-telescope/telescope.nvim';
'folke/which-key.nvim';
'neovim/nvim-lspconfig';
'williamboman/mason.nvim';
'williamboman/mason-lspconfig.nvim';
}
local builtin = require('telescope.builtin')
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})
vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
vim.keymap.set('n', '<leader>fh', builtin.help_tags, {})
require("mason").setup()
require("mason-lspconfig").setup()
local DEFAULT_SETTINGS = {
-- A list of servers to automatically install if they're not already installed. Example: { "rust_analyzer@nightly", "lua_ls" }
-- This setting has no relation with the `automatic_installation` setting.
---@type string[]
ensure_installed = {},
-- Whether servers that are set up (via lspconfig) should be automatically installed if they're not already installed.
-- This setting has no relation with the `ensure_installed` setting.
-- Can either be:
-- - false: Servers are not automatically installed.
-- - true: All servers set up via lspconfig are automatically installed.
-- - { exclude: string[] }: All servers set up via lspconfig, except the ones provided in the list, are automatically installed.
-- Example: automatic_installation = { exclude = { "rust_analyzer", "solargraph" } }
---@type boolean
automatic_installation = true,
-- See `:h mason-lspconfig.setup_handlers()`
---@type table<string, fun(server_name: string)>?
handlers = nil,
}
vim.wo.number = true
vim.opt.mouse = ""
|
|
|
חזרה לתוכן הדיון |
פורסם: 20/02/2024 - 09:23
נושא ההודעה: Re: vim vs neovim
|
לקח לי הרבה זמן ללמוד לעשות את זה נכון, הנה בגדול מה שאני הגדרתי.
מקווה שהעפתי מכאן את כל מה שלא קשור לשאלה שלך (תוספים נוספים בעיקר)
קוד: | local nvim_lsp = require 'lspconfig'
local configs = require 'lspconfig/configs'
local lsp_utils = require "lspconfig/util"
local mason = require "mason"
local mason_lspconfig = require 'mason-lspconfig'
local lsp_kind = require 'lspkind'
local capabilities = require('cmp_nvim_lsp').default_capabilities() -- capabilities of cmp_lsp as part of any LSP
local formatter = require("formatter")
local navic = require("nvim-navic")
local install_root_dir = vim.fn.stdpath("data") .. "/mason"
local on_attach = function(client, bufnr)
if client.server_capabilities.documentSymbolProvider then
navic.attach(client, bufnr)
end
local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
-- Mappings.
local opts = { noremap = true, silent = true }
-- See `:help vim.lsp.*` for documentation on any of the below functions
buf_set_keymap('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
buf_set_keymap('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
buf_set_keymap('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
buf_set_keymap('n', 'gK', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
buf_set_keymap('n', '<leader>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
buf_set_keymap('n', '<leader>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
buf_set_keymap('n', '<leader>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
buf_set_keymap('n', '<leader>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
buf_set_keymap('n', '<leader>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
buf_set_keymap('n', '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
buf_set_keymap('n', '<leader>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)
buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
buf_set_keymap('n', '<leader>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
buf_set_keymap('n', '<leader>f', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts)
vim.cmd [[ command! DiagNext :lua vim.diagnostic.goto_next() ]]
vim.cmd [[ command! DiagPrev :lua vim.diagnostic.goto_prev() ]]
vim.cmd [[ command! DiagInfo :lua vim.diagnostic.open_float() ]]
vim.cmd [[ command! LspAction : lua vim.lsp.buf.code_action() ]]
vim.cmd [[ command! LspDef :lua vim.lsp.buf.type_definition() ]]
vim.cmd [[ command! LspDec :lua vim.lsp.buf.declaration() ]]
vim.cmd [[ command! LspFormat :lua vim.lsp.buf.format() ]]
vim.cmd [[ command! LspRef :lua vim.lsp.buf.references() ]]
vim.cmd [[ command! LspImpl :lua vim.lsp.buf.implementation() ]]
vim.cmd [[ command! LspInCalls :lua vim.lsp.buf.incoming_calls() ]]
vim.cmd [[ command! LspOutCalls :lua vim.lsp.buf.outgoing_calls() ]]
vim.cmd [[ command! LspRename :lua vim.lsp.buf.rename() ]]
vim.cmd [[ command! LspDocSymbols :lua vim.lsp.buf.document_symbol() ]]
vim.cmd [[ command! LspHelp :lua vim.lsp.buf.signature_help() ]]
if client.server_capabilities.document_highlight then
vim.api.nvim_exec([[
augroup lsp_document_highlight
autocmd! * <buffer>
autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()
autocmd CursorMoved <buffer> lua vim.lsp.buf.clear_references()
augroup END
]], false)
end
end
mason.setup({
ui = {
icons = {
package_installed = "✓",
package_pending = "➜",
package_uninstalled = "✗"
}
}
})
lsp_servers = {
'clangd', 'lemminx', 'gopls', 'html', 'jsonls', 'rust_analyzer', 'yamlls',
'taplo', 'pyright', 'denols', 'biome', 'templ', 'arduino_language_server',
'htmx'
}
if not configs.golangcilsp then
configs.golangcilsp = {
default_config = {
cmd = {'golangci-lint-langserver'},
root_dir = lsp_utils.root_pattern('.git', 'go.mod'),
init_options = {
command = { "golangci-lint", "run", "--enable-all", "--disable", "lll", "--out-format", "json", "--issues-exit-code=1" };
}
};
}
end
nvim_lsp.golangci_lint_ls.setup {
filetypes = {'go','gomod'}
}
nvim_lsp.gopls.setup {
gopls_cmd = {install_root_dir .. '/go/gopls'},
fillstruct = 'gopls',
dap_debug = true,
dap_debug_gui = true
}
local home = utils.home()
nvim_lsp.clangd.setup{
cmd = {
"clangd", "--background-index",
},
filetypes = { "c", "cpp", "objc", "objcpp", "cuda", "proto", },
}
mason_lspconfig.setup({
ensure_installed = lsp_servers,
automatic_installation = true,
})
for _, lang in ipairs(lsp_servers) do
nvim_lsp[lang].setup{
capabilities = capabilities,
on_attach = on_attach,
single_file_support = true,
}
end
nvim_lsp.handlers = {
['textDocument/publishDiagnostics'] = vim.lsp.with(
vim.lsp.diagnostic.on_publish_diagnostics,
{
underline = true,
virtual_text = {
spacing = 5,
severity_limit = 'Warning',
},
update_in_insert = true,
}
)
}
vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(
vim.lsp.handlers.signature_help, {
-- Use a sharp border with `FloatBorder` highlights
border = "single"
}
)
formatter.setup {}
require('rust-tools').setup({
tools = {
autoSetHints = true,
inlay_hints = {
show_parameter_hints = true,
parameter_hints_prefix = "",
other_hints_prefix = "",
},
},
})
|
פונגי : | תגידו חברים,
שאלה שאלתית לאוהבי הז'אנר,
איך אתם מקנפנגים את ה-vim ו-/neovim שלכם?
לאחרונה שיחקתי קצת עם LSP,
בשביל לקבל יכולות דומות ל-IDE, בעיקר של do to definition בין קבצים שונים בתקיות שונות,
מרגיש שכשלתי רבות,
עדיין לא מצליח לקפוץ בין קבצים.
דוגמה של
קוד: | ~/.config/nvim/init.lua |
קוד: |
local function bootstrap_pckr()
local pckr_path = vim.fn.stdpath("data") .. "/pckr/pckr.nvim"
if not vim.loop.fs_stat(pckr_path) then
vim.fn.system({
'git',
'clone',
"--filter=blob:none",
'https://github.com/lewis6991/pckr.nvim',
pckr_path
})
end
vim.opt.rtp:prepend(pckr_path)
end
bootstrap_pckr()
require('pckr').add{
'nvim-lua/plenary.nvim';
'nvim-telescope/telescope.nvim';
'folke/which-key.nvim';
'neovim/nvim-lspconfig';
'williamboman/mason.nvim';
'williamboman/mason-lspconfig.nvim';
}
local builtin = require('telescope.builtin')
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})
vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
vim.keymap.set('n', '<leader>fh', builtin.help_tags, {})
require("mason").setup()
require("mason-lspconfig").setup()
local DEFAULT_SETTINGS = {
-- A list of servers to automatically install if they're not already installed. Example: { "rust_analyzer@nightly", "lua_ls" }
-- This setting has no relation with the `automatic_installation` setting.
---@type string[]
ensure_installed = {},
-- Whether servers that are set up (via lspconfig) should be automatically installed if they're not already installed.
-- This setting has no relation with the `ensure_installed` setting.
-- Can either be:
-- - false: Servers are not automatically installed.
-- - true: All servers set up via lspconfig are automatically installed.
-- - { exclude: string[] }: All servers set up via lspconfig, except the ones provided in the list, are automatically installed.
-- Example: automatic_installation = { exclude = { "rust_analyzer", "solargraph" } }
---@type boolean
automatic_installation = true,
-- See `:h mason-lspconfig.setup_handlers()`
---@type table<string, fun(server_name: string)>?
handlers = nil,
}
vim.wo.number = true
vim.opt.mouse = ""
|
|
|
|
חזרה לתוכן הדיון |
פורסם: 20/02/2024 - 10:40
נושא ההודעה:
|
במשך כל השנים תחזקתי תצורה משלי, גם ל-vim וגם ל-nvim (זמינים בגיטהטב שלי). בחודשים האחרונים לא היה לי כח לזה יותר, ועברתי לתצורה מוגדרת מראש.
השתמשתי ב־ AsttoNVIM, בעיקר כי קיצורי המקשים שהם הגדירו היו די דומים למה שהגדרתי בעצמי.
לטעמים שונים יש "הפצות" אחרות, כמו LazyVIM, LunarVIM ו־NVChad.
|
|
חזרה לתוכן הדיון |
פורסם: 20/02/2024 - 16:08
נושא ההודעה:
|
למה בעצם לא doom emacs?
|
|
חזרה לתוכן הדיון |
פורסם: 22/02/2024 - 18:10
נושא ההודעה:
|
כי אני לא רוצה emacs?
|
|
חזרה לתוכן הדיון |
פורסם: 23/02/2024 - 14:10
נושא ההודעה:
|
mksoft : | כי אני לא רוצה emacs? |
ברור שלא אבל הייתי חייב להכניס את האפשרות כדי לנסות לעורר מלחמת עורכים .
|
|
חזרה לתוכן הדיון |
פורסם: 25/02/2024 - 18:41
נושא ההודעה:
|
mksoft : | במשך כל השנים תחזקתי תצורה משלי, גם ל-vim וגם ל-nvim (זמינים בגיטהטב שלי). בחודשים האחרונים לא היה לי כח לזה יותר, ועברתי לתצורה מוגדרת מראש.
השתמשתי ב־AsttoNVIM, בעיקר כי קיצורי המקשים שהם הגדירו היו די דומים למה שהגדרתי בעצמי.
לטעמים שונים יש "הפצות" אחרות, כמו LazyVIM, LunarVIM ו־NVChad. |
סגור,
אנסה את המטעמים השונים,
רוב תודות מאיר
|
|
חזרה לתוכן הדיון |
פורסם: 20/03/2024 - 21:02
נושא ההודעה: יש התקדמות קלה
|
אז אכן -
https://github.com/nvim-lua/kickstart.nvim
מספק מענה קל לקינפוג הראשוני של נאו-וימ,
אגב לאורח שתהה לגבי אימקס,
בתכלס כן ניסיתי לרגע קל, אגב מאוד אהבתי את הסשן -
https://www.youtube.com/watch?v=JWD1Fpdd4Pc
על הדרך התקנתי את -
https://www.thregr.org/wavexx/software/screenkey/
אולי איכשהו יעזור לי בלזכור את הקיצורים של נאו-וימ.
מה שכן פתאום התחלתי לתהות לעצמי -
האם לא עדיף כבר להישאר על vscode/codium או לחילופין ה-jetBrains החביב מאשר לצלול לתוך עולמות הנאו-וימ השונים? מה שכל כך אהבתי בזמנו בvi הישן והטוב,
שהוא היה קיים על כל מערכת לינוקס/יוניקס, רק לפתוח vi ולהתחיל לעבוד - בלי לקנפג כלום, מקסימום vimrc קטנטן,
היום, מרגיש נראה שכל עניין "סביבת העבודה" הפך להיות לא טריוויאלי בכלל,
לדאבג, גם ככה מעדיף בעזרת gdb או לחילופין pdb, ולא דרך הIDE,
לדחוף לגיט? גם דרך שורת הפקודה, בדרך כלל מבטל על ההתחלה את הפעולה הזו בIDE,
מה נשאר? כולה לסמן סינטקס, לקפוץ להגדות ולבצע לינטינג מדיי פעם
לכאורה הכל פשוט, אך גם מורכב.
|
|
חזרה לתוכן הדיון |
פורסם: 21/03/2024 - 00:41
נושא ההודעה:
|
לא יודע מה איתכם חבר'ה, אבל אני מרוגש לקראת מימוש של zed עבור לינוקס, כבר השנה:
https://zed.dev/
כמובן שלא אשתמש בו אבל הוא כתוב בראסט וזה מאוד מרגש אותי וגם האתר שלהם יפה.
|
|
חזרה לתוכן הדיון |
פורסם: 21/03/2024 - 05:15
נושא ההודעה:
|
מה תעזור לי תצורה מיוחדת של vim כשאני מתחבר כל יום לשרתים של לקוחות עם vim vanilla ?
לעזזל לאחרונה בהפצות שונות אפילו sudo visudo לא עובד כי נאנו הוא העורך הדיפולטיבי! התחלקתם על השכל לינוקס?
רגע הבוס קורא לי נשפך קפה במיטבחון
|
|
חזרה לתוכן הדיון |
פורסם: 21/03/2024 - 05:18
נושא ההודעה:
|
Anonymous : | mksoft : | כי אני לא רוצה emacs? |
ברור שלא אבל הייתי חייב להכניס את האפשרות כדי לנסות לעורר מלחמת עורכים . |
ילען דין באבור איליג'אב איל נאנו
|
|
חזרה לתוכן הדיון |
פורסם: 21/03/2024 - 15:36
נושא ההודעה:
|
עובד ניקיון : | מה תעזור לי תצורה מיוחדת של vim כשאני מתחבר כל יום לשרתים של לקוחות עם vim vanilla ?
לעזזל לאחרונה בהפצות שונות אפילו sudo visudo לא עובד כי נאנו הוא העורך הדיפולטיבי! התחלקתם על השכל לינוקס?
רגע הבוס קורא לי נשפך קפה במיטבחון |
בשביל זה אתה יכול לעבוד עם משהו כמו emacs
ב- emacs אתה יכול לעבוד על קבצים בשרתים מרוחקים מתוך אימקס עצמו כך שאתה בדיוק על הסביבה שאתה עובד בה.
באימקס זה נקרא tramp:
https://www.gnu.org/software/tramp/
אין לי מושג אם יש דבר כזה גם ב- vim.
|
|
חזרה לתוכן הדיון |
פורסם: 21/03/2024 - 20:08
נושא ההודעה:
|
Anonymous : | עובד ניקיון : | מה תעזור לי תצורה מיוחדת של vim כשאני מתחבר כל יום לשרתים של לקוחות עם vim vanilla ?
לעזזל לאחרונה בהפצות שונות אפילו sudo visudo לא עובד כי נאנו הוא העורך הדיפולטיבי! התחלקתם על השכל לינוקס?
רגע הבוס קורא לי נשפך קפה במיטבחון |
בשביל זה אתה יכול לעבוד עם משהו כמו emacs
ב- emacs אתה יכול לעבוד על קבצים בשרתים מרוחקים מתוך אימקס עצמו כך שאתה בדיוק על הסביבה שאתה עובד בה.
באימקס זה נקרא tramp:
https://www.gnu.org/software/tramp/
אין לי מושג אם יש דבר כזה גם ב- vim. |
תודה רבה!
אבל עד שלמדתי לעבוד עם VIM ("למדתי" אני בטוח שאני לא יודע אפילו רבע מהיכולות שלו) זה כבר רפלקס באצבעות כמו להחליף מסכים ב screen אני זקן מדי ללמוד עכשיו emacs
אני מניח (רק משער) שאפשר לעבוד עם vim בתצורה לוקאלית עם sshfs או filezilla
בכלל ... שמעתי ש emacs זה בכלל לא file editor
|
|
חזרה לתוכן הדיון |
פורסם: 21/03/2024 - 20:39
נושא ההודעה:
|
ציטוט: | אבל עד שלמדתי לעבוד עם VIM ("למדתי" אני בטוח שאני לא יודע אפילו רבע מהיכולות שלו) זה כבר רפלקס באצבעות כמו להחליף מסכים ב screen אני זקן מדי ללמוד עכשיו emacs
|
גם לזה כבר המציאו לפני הרבה זמן פתרון בשם evil-mode:
https://github.com/emacs-evil/evil
שזו חבילה של אימקס שמדמה את vim כך שלא תצטרך ללמוד שום דבר חדש מהבחינה הזו ותוכל להשתמש באימקס כאילו אתה בתוך VIM.
אבל כן תצטרך ללמוד להתקין את החבילה (לא מסובך) או ישר ללכת על משהו מוכן מראש כמו למשל doom emacs שגם בשביל להתקין אותה צריך קצת לקרוא אבל היא מוגדרת מראש באופן יפה עם ברירות מחדל סבירות ונאות) בלי שתצטרך להתעסק איתה הרבה מעבר להתחלה ולהבנה איך עובדים איתה באופן כללי.
|
|
חזרה לתוכן הדיון |
פורסם: 21/03/2024 - 22:17
נושא ההודעה:
|
עובד ניקיון : | מה תעזור לי תצורה מיוחדת של vim כשאני מתחבר כל יום לשרתים של לקוחות עם vim vanilla ?
לעזזל לאחרונה בהפצות שונות אפילו sudo visudo לא עובד כי נאנו הוא העורך הדיפולטיבי! התחלקתם על השכל לינוקס?
רגע הבוס קורא לי נשפך קפה במיטבחון |
תגיד תודה שאתה לא עובד דאמבדד. במצבים שבהם אני נמצא - vi הוא מגיע מתוך busybox ואתה לא יכול להתחבר מרחוק עם vscode כי המערכת בנוייה מעל musl-libc והשרתון הקטן הזה ש-vscode מתקין לא עובד.
|
|
חזרה לתוכן הדיון |
פורסם: 24/03/2024 - 06:23
נושא ההודעה:
|
מבלי לעקצץ אתה נשמע קצת סוכן מכירות של emacs
חיפשתי בטיוב מה זה וכמו שזכרתי מלפני עשרים שנה - עורך טקסט? זה לא.
https://www.youtube.com/watch?v=sbdFwFDTDqU
|
|
חזרה לתוכן הדיון |
פורסם: 24/03/2024 - 06:29
נושא ההודעה:
|
elcuco : | עובד ניקיון : | מה תעזור לי תצורה מיוחדת של vim כשאני מתחבר כל יום לשרתים של לקוחות עם vim vanilla ?
לעזזל לאחרונה בהפצות שונות אפילו sudo visudo לא עובד כי נאנו הוא העורך הדיפולטיבי! התחלקתם על השכל לינוקס?
רגע הבוס קורא לי נשפך קפה במיטבחון |
תגיד תודה שאתה לא עובד דאמבדד. במצבים שבהם אני נמצא - vi הוא מגיע מתוך busybox ואתה לא יכול להתחבר מרחוק עם vscode כי המערכת בנוייה מעל musl-libc והשרתון הקטן הזה ש-vscode מתקין לא עובד. |
לא הבנתי מה אמרת אני עדיין לא יודע איך לפתור את זה כשאתה לוחץ על חץ למעלה למטה אתה מקבל אותיות BFFBFG
|
|
חזרה לתוכן הדיון |
פורסם: 25/03/2024 - 14:20
נושא ההודעה:
|
אני סוכן כאוס.
מעוניין במלחמת עורכים.
|
|
חזרה לתוכן הדיון |
פורסם: 25/03/2024 - 15:43
נושא ההודעה:
|
Anonymous : |
אני סוכן כאוס.
מעוניין במלחמת עורכים. |
רק ed
|
|
חזרה לתוכן הדיון |
פורסם: 26/03/2024 - 15:28
נושא ההודעה:
|
זהו, ניאו וימ עדיין עובד,
נשאר להסתדר עם ההצעות האוטומטיות לגולנג
|
|
חזרה לתוכן הדיון |
|
|
|
|