我们学了快捷键的映射,完全可以定义两个快捷键用于快速打开和应用配置文件。在完成这个事情的过程中需要了解绍一个变量和一个命令。...学会使用新映射的快捷键 从插入模式回到普通模式有这么几种方式 、和 。...但是不管哪种方式都存在比较难按的情况,手指需要移开较大距离我们可以使用快捷键映射的方式,将 jk 映射为退出键(这里就可以使用上面定义的快捷键快速的打开配置文件了) vim.api.nvim_set_keymap...notepad 时总是无意识的输入 :wq 来保存退出一样。...在 lua 中就可以使用如下语句来取消 esc vim.api.nvim_set_keymap("i", "", "", {silent = true, noremap = true
# 用来存储快捷键配置 └── init.lua # 配置文件入口,主要用来加载其他配置文件 lua模块加载 还记得我们之前介绍过的runtime吗?...所以这里想要在 init.lua 中加载基础配置和 快捷键配置可以使用如下语句 require('basic') require('keybindings') 如果目录有多层,例如要加载 lua/basic...我们首先来设置 leader 键和 localleader键 vim.g.mapleader = " " vim.g.maplocalleader = " " 下面我们按照 《vim从嫌弃到依赖》这系列文章中介绍的顺序来配置快捷键...标签页快捷键 由于我自身很少用 标签页的功能,而且vim中自带的命令已经够高效的了,所以这里我基本没怎么定义快捷键 -- 配置tabline快捷键,主要以 t开头代表 t -- 关闭当前标签页 vim.api.nvim_set_keymap...", "k", {noremap = true, silent = true}) 其他有用的绑定 这里我们将之前文章中用来当做例子的一部分比较有用的映射放上去 -- 其他有用的绑定 -- 使用
严格意义上来说,快捷键的绑定应该是键盘映射,将某些键映射为另一些键。 在上篇我们介绍了基本的键盘映射操作,知道了如何 :map、:imap、:vmap、:nmap这些命令来映射键盘快捷键。...lua 配置 到此位置我们学会了怎么使用 :map 系列的命令定义快捷键,同时也知道什么是快捷键之间的递归和非递归。可以说掌握了关于 vimscript 定义快捷键的基本方法。...neovim 定义了一系列的函数帮助我们定义、获取和删除快捷键 vim.api.nvim_set_keymap: 设置快捷键 vim.api.nvim_get_keymap: 获取快捷键 vim.api.nvim_del_keymap...比如可以使用 noremap 表示禁止递归,使用 silent 表示执行命令时不回显内容 例如我们在配置文件中定义 vim.api.nvim_set_keymap("n", "", "/nvim...lua 中自定义变量可以直接定义,但是 mapleader 明显是vim 自带的变量。跟设置选项类似,neovim 提供了两种访问 vim 内部变量的方式,一种是使用函数,一种是使用 元访问器。
一时之间无暇顾及该系列教程的更新。等我回来的时候发现很多小伙伴私信我催更。在这里向支持本人这一拙劣教程的各位小伙伴表示真诚的感谢。...的配置,主要是使用 lsp 服务端的配置和对应的跳转之类的快捷键配置,我们将它放到了 lsp/lua.lua 目录下了。...我们将那些快捷键定义放到 lua/keybindings.lua 中 local lsp_keybinds = {} lsp_keybinds.set_keymap = function (bufnr)...vim.lsp.buf.references()", {silent = true, noremap = true}) -- 以浮窗形式显示错误 vim.api.nvim_buf_set_keymap...主要设置快捷键,这里需要注意的是 root_dir 这里的配置,想要在对应缓冲中启动相应的 lsp 服务,需要buffer处在对应语言的项目中,root_dir 规定在 buffer 所在目录中存在这些文件或者目录时将该目录作为对应项目文件
.*'} 如果我们用的是 7.0及以上的neovim,可以使用它的 v2版本,否则版本这里应该写上 v1 接着我们还是按照之前的惯例,新增一个配置文件并且在init.lua中引用 local opt =...,但是这里我们希望在终端模式中能够移动光标,所以这里还是使用快捷键映射的方式来解决这个问题 vim.api.nvim_set_keymap("t", "", "", {noremap...,将 l映射为 的话,会先退出终端模式,后续再回来终端的话,还得重新进入终端模式。...我们在绑定快捷键时对应的真实按键会原封不同的在vim中进行输入,如果在插入模式中使用 :这种形式,就相当于在当前buffer中输入这些内容,也就是说我们无法在插入模式中使用普通模式那种格式的命令。...这里我们引入一个新的指令 它只能用于快捷键映射的场合,表示执行后面对应的命令。
(vim.lsp.buf_get_clients())) 安装 nvim-lspconfig 好了,我们按照官方的提示,我们先来配置 lua 相关的内容,以便后期在写配置时可以有更好的编程体验。...= 4 vim.bo.softtabstop = 4 -- 取消自动注释,当前行是注释时,按下回车键会默认添加一行注释,这里取消这一行为 vim.opt_local.formatoptions = vim.opt_local.formatoptions...然后再在 ftplugin/lua.lua 中加载它 require('lsp/lua') 我们在这个文件中添加 Lua 相关的lsp配置 -- 定义快捷键 -- 根据官方的提示,这里我们使用 on_attach...(bufnr, "n", "gr", "lua vim.lsp.buf.references()", {silent = true, noremap = true}) -- 以浮窗形式显示错误...vim.api.nvim_buf_set_keymap 仅仅针对当前加载了lsp 服务的缓冲区进行,而对于其他普通文件我们不需要用到这些快捷键。
让我们先从vim如何管理打开的多个文件开始吧 缓冲区列表简介 有过编程经验的小伙伴应该知道,将文件从磁盘读取到内存中时,都会事先分配一块内存缓冲区用来保存读取到的文件内容,vim同样是这么干的。...vim在读取文件时会通过内存映射的方式,将磁盘中的内容映射到一块内存的缓冲中。vim可以打开多个文件,每个文件独立的占有一个缓冲区。...假设现在在某个目录中有多个文件,我们使用vim同时打开,例如使用vim init.lua test.py。...而h 则代表隐藏缓冲区,当一个缓冲区由激活状态变为非激活状态的时候,vim会将其标记为隐藏缓冲区。 除了按照顺序显示缓冲区,还可以通过缓冲区名称或者序号来指定显示某个缓冲区。...答案是通过快捷键映射。后面介绍我自己的配置时会介绍如何将其映射到快捷键上 如果要删除某个缓冲区可以使用:bdelete {bufname}。
我们将它对应的功能绑定到快捷键上替换原有的 LSP 对应的快捷键 lsp_keybinds.set_keymap = function (bufnr) print("set lsp keymap...>lua vim.lsp.buf.definition()", {silent = true, noremap = true}) -- 显示注释文档 vim.api.nvim_buf_set_keymap..., noremap = true}) -- 以浮窗形式显示错误 vim.api.nvim_buf_set_keymap(bufnr, "n", "go", "lua vim.diagnostic.open_float...例如上面的截图中它在出现错误的一行代码的行号前以小灯泡的形式进行标记,体验类似与 VS Code。我们将光标放在对应位置,使用绑定的快捷键 ca 。...截止到当前文章我们已经完成了代码的高亮、跳转、语法分析、代码补全、错误提示以及修复建议的相关配置。关于LSP的相关配置已经结束了,下一篇我们将要讨论如何使用代码片段进一步减少我们编码时输入的字符数。
我们在介绍vim目录管理的时候提到 vim自带一个 叫做 netrw的工具来管理目录。但是它自身的功能有限,而且样式也丑。...(see issue #1193) } 安装完成之后我们新建一个文件 plugin-config/nvimtree.lua 用来保存它的配置信息。...highlight = "Directory", text_align = "left" } } } } 我们先映射一个快捷键...我们可以使用如下配置 require("nvim-tree").setup({ -- 关闭文件时,自动关闭 auto_close = true, filters = {...如果你对这些快捷键不太满意,可以重新定义。 例如我们介绍 ntrw 的时候知道它也可以进行目录管理,为了减少记忆负担,你也可以采用 ntrw 的快捷键。
它会将编译产生的错误信息存储在 quickfix 列表中。我们上一节中介绍了如何操作 quickfix 列表。也介绍了如何对 :grep 命令进行改造。...使用 可以触发这个选项,让vim从被包含文件中提取补全项。...该项包含一组由逗号分隔的单个字符表示的参数,当参数出现时表示需要扫描该参数代表的位置。使用 set complete? 可以看到,缺省项为 complete=.,w,b,u,t 。...需要注意的是当我们使用相对路径来补全文件名时,使用的是工作目录,也就是你从哪个目录中进入的vim。我们可以在 vim中使用:cd来切换工作目录。...:cd lua 来切换工作目录到 nvim-config/lua 。
如果说 vim有什么最吸引人,我想vim允许你自由的定义各种快捷键算是一个原因吧。你可以通过绑定各种快捷键来使经常使用的功能更加便利。...通俗的讲,快捷键映射就是我按下某个键,我想让vim将它当成另一个键,例如我按下 k,我想让vim把它当做 c 来使用(当然这么映射会把人逼疯) 快捷键映射 我们使用 :map 命令来进行快捷键的映射,例如我们输入如下内容...dd 当然有时候为了可读性,我们可以将这些功能键以大写字母来表示,例如 就表示 快捷键映射就是这么简单,接下来要做的就是思考如何进行映射能提升我们的效率,即提取常用的操作将他们映射为快捷键...因此这里的映射可以写成 :map _ ddP 如果你觉得这两个映射对你有用,你可以将它放入你的 vimrc 中,或者先记下来,等我们介绍完使用 lua 配置之后,再写到 init.lua 中。...其实 vim 针对不同的模式有不同的快捷键定义命令,例如 :nmap 负责在普通模式下定义快捷键, :vmap 负责在 visual 模式下定义快捷键。
在 lua/modules/editor/plugins/lua 中新增下面的代码: editor['lervag/vimtex'] = { opt = true, config = conf.vimtex..., ft = 'tex' } 在 lua/modules/editor/plugins/config.lua 中新增下面的代码: function config.vimtex() vim.g.vimtex_view_general_viewer...zathura )是 Ctrl + LeftClick image.png 常用的命令 命令 作用 VimtexCompile 持续编译模式(实时监听文件变化并编译) VimtexClean 清除编译时生成的中间文件...第一: 不是所有人都将 设为 ‘\\’ 第二: 如果更改过按键映射, 这几个按键将对 VimTeX 毫无作用 正常的做法不应该是告诉别人快捷键而应该是命令才对吧?...当然, 所有的命令均可以通过 :help vimtex 在 vimtex-commands 块下找到, 可以根据需要设置快捷键 image.png [可选] 使用 snippet 和 lsp 补全 通过
简介 neovim是从vim的一个分支fork出来的,从性能等方面来讲都比vim强很多,所以从vim转到neovim了。...快捷键 快捷键 用途 分类 bp 跳转到上一个buffer Buffer bp 跳转到下一个buffer Buffer ds 在左边显示目录数 Dir 弹出帮助的分类,按照分类查找快捷键。.../nvim/lua/lazynvim-init.lua文件,写入下面内容,核心内容是初始化lazy插件管理器。...当插件过多之后,发现快捷键记不住,所以插件folke/which-key.nvim很有必要。
比如,当配置文件中包含字节数时,Nginx框架提供了ngx_conf_set_size_slot函数, 各模块通过它就可以解析以下单位: 空间单位 意义 k/K KB m/M MB g/G GB 因此...vim/目录时(~表示你当前用户的默认路径,如果.vim目录不存在时,请先用mkdir创建),再打开nginx.conf你就会发现指令已经高亮显示了: ?...root path指令,可以将URL映射为磁盘访问路径path+URI,比如URL为/img/a.jpg时,磁盘访问路径就是html/img/a.jpg。...中匹配的URI前缀有关,比如当HTTP请求的URI为/a/b/c.html时,在如下配置中,实际访问的磁盘路径为/d/b/c.html: location /a { alias /d; } 因此,当...其次,当模块指令包含时间、空间单位时,会使用Nginx框架提供的通用解析工具,熟悉这些时、空单位会降低你学习新指令的成本。
在前面的一系列文章中,我们介绍了使用 :noremap 进行键盘映射,使用 set 来设置选项和 vim 的变量。并且已经在配置文件中对他们进行了相关配置。...在介绍设置那一篇文章中我们提到了,lua 提供的函数有全局设置、窗口设置和缓冲区设置。当初有小伙伴在评论区问到相关问题,现在我们就来详细的解释这些之前被搁置的内容。...本地缓冲区设置与本地窗口设置 我们先以一个例子来说明 我们先注释掉配置文件中显示行号的设置,然后随机打开一个文件例如我打开 nvim-config/init.lua 。...但是在 lua 中,对窗口值和缓冲区值进行了区分。...本地快捷键与全局快捷键 我们同样可以定义本地缓冲的快捷键,使用 :nnoremap x dd 来定义只在当前缓冲区中将 x 定义为删除一行 这个有前面的基础应该很好理解
在过去的vim配置中,我们基于 you-complete-me这个插件配置。但是对于不懂c语言甚至vim的小白来说简直是灾难。...即server端主要提供了语法分析、补全、跳转的核心功能,而在客户端要做的就是调用服务端提供的这些功能来展示以及通过快捷键或者其他用户接口以便用户使用。...发生这种情况时,语言服务器会分析此信息,并通知工具 ('textDocument/publishDiagnostics') 检测到的错误和警告,并且还可能返回一些可能的用于补全的内容 用户对编辑器中的符号执行...这里我们使用 :TSInstall lua 来下载lua模块。后续我们可以使用 :TSUpdate lua 来更新该模块。跟 packer 类似的 :TSUpdate 即可以用来下载也可以用来更新。...各位小伙伴可以根据自己的习惯来定义快捷键 另外我们可以使用 = 来格式化代码。
我们先经过几篇文章了解了下面的几个内容 如何设置vim属性,从而改变vim的特征 配置快捷键,以提高我们的使用效率 使用自动命令,以便使用vim来自动化我们的相关操作 这些既有vimscript的东西...我们采用 neovim 进行配置,也打算使用 纯 lua 进行配置。如果你用的是 vim,请安装下载最新的 neovim。...vim.o.ruler = true -- 边输入边搜索 vim.o.incsearch = true -- 开启搜索匹配高亮 vim.o.hlsearch = true -- 搜索时自行判断是否需要忽略大小写...= true vim.o.smartindent = true -- > 缩进时移动的长度 vim.o.shiftwidth = 4 vim.bo.shiftwidth = 4 -- 使用...= true vim.opt.termguicolors = true 完成之后,再次打开vim发现它已经变成了这样 本篇就到这里了,下一篇我们将对默认的快捷键进行配置
但是,原配置仍然有很多插件和配置不符合我的需要,因此,fork后进行了大量的修改.请访问leoatchina的vim配置文件.由于本人水平所限,一定有很多错误和bug,望各位指正.....vimrc.local 安装 安装本配置 需要 Git 1.7+ 和 Vim 7.3+(编译时加入对lua和python的支持),部分插件如 Nvim-R, AsyncRun,需要Vim8.0 如果要安装...neocomplete, 需要vim with lua....键改为空格键,这个在键盘上最大的按键就有了更强的作用; 改为 \, \在R编写调试时使用率比较高 ~作为进入 ex模式的快捷键, Q键map为 F1...ctrlp.vim 则完美帮你解决了这个痛点,当你想打开某个文件时,只要按下 Ctrl + p 快捷键,输入文件名。
当 'foldlevel' 为 0 时,所有的折叠关闭。 当 'foldlevel' 为正数时,一些折叠关闭。 当 'foldlevel' 很大时,所有的折叠打开。...当为0时,没有折叠栏。最大是12。 一个打开的折叠由一栏来表示,顶端是 '-',其下方是 '|'。这栏在折叠结束的地方结束。当折叠嵌套时,嵌套的折叠出现在被包含的折叠右方一个字符位置。...map :cp " 按下F9,光标移到下一个错误所在的行 map :cn " 以上的映射是使上面的快捷键在插入模式下也能用...:clast 到最后一处错误 :cc 空间不够时,Vim 会缩短出错信息。...打开某个源码文件,末行模式下,输入“:cs add cscope.out"(该命令已被我们映射为快捷键F4),添加cscope数据库到vim。
领取专属 10元无门槛券
手把手带您无忧上云