Skip to content

jintongxu/neovimConfig

Repository files navigation

目录

一、使用教程

Ubuntu

用apt包管理器的都可以用这个

git clone https://github.com/jintongxu/tmuxConfig.git 

cd neovimConfig

sudo chmod +x install_ubuntu.sh

./install_ubuntu.sh

最后安装Mason的LSP,见后文。

ArchLinux

git clone https://github.com/jintongxu/tmuxConfig.git 

cd neovimConfig

sudo chmod +x install_arch.sh 

./install_arch.sh

最后安装Mason的LSP,见后文。

Mason

然后进入nvimm的命令模式:Mason,下载对应语言的LSP(代码提示)。光标移动到对应的LSP,然后按 i 下载,按 X 卸载。

当前使用的LSP

  • clangd(c/c++)

  • cmake-language-server

  • docker-compose-language-server

  • dockerfile-language-server

  • markdown-toc 记得进入命令模式后输入**!**,表示该命令为终端命令。 Snipaste_2023-12-12_10-35-43

  • python-lsp-server

二、当前nvim快捷键

复制、粘贴、删除

复制/剪切

  • yy:复制光标所在行

  • y$:复制从光标位置到本行末尾

  • nyy:n是要复制的行数,从当前行开始

  • :%y:复制整个文件

  • 复制一个单词,然后在另一个地方覆盖单词 ---- yiw 要复制的单词, 移动到要替换的单词 view 替换,移动到另一个要替换的单词 viw"0p 继续替换。

粘贴

  • pp:在下一行粘贴

  • p(小写):在当前行的下一行进行粘贴,并移动到新插入行的开头

  • P(大写):和小p差不多,不同的是粘贴在当前行的上一行

  • gp:粘贴在下一行,然后跳到粘贴行的下一行的开头

  • gP:与gp差不多,就是跳到粘贴行的上一行的开头

删除

  • dd:删除当前行
  • ndd:删除从当前行开始的n个行
  • d0:删除光标之前到行首的字符
  • D:删除从当前光标位置到行尾
  • x:删除当前光标位置的字符
  • d + shift + g:删除光标所在行到文件末尾
  • dw:从光标当前位置开始删除,直到删除到单词最后
  • daw:删除光标所在的单词及后面一个空格(操作一次后,按 . 是重复daw )
  • diw: 删除光标所在的单词(不带后面的一个空格)
  • d2w: 删除两个单词(光标要放到第一个单词首字母)

插入模式

  • i:在当前光标前插入文本
  • I:在当前行开始处插入文本
  • o(小写):在当前行的下一行插入文本
  • O(大写):在当前行的上一行插入文本
  • a:在当前光标后插入文本
  • A:在当前行最后插入文本
  • r:对当前光标处的字符进行替换
  • R:从当前光标处开始一直往后替换(如果替换后想回退按 Backspace)

代码间快速跳转

  • gd:光标移动到函数名,快速跳转到函数定义
  • gD:光标移动到函数名,快速跳转到函数声明
  • gy:光标移动到结构体,快速跳转到结构体定义
  • gy: 进入光标处的文件
  • gr:查看所有引用
  • gp:jump back in the tag stack,绑定的
  • ge:跳到上一个单词的的最后一个字母
  • [ + {:快速跳转到前一个 {
  • [ + (:快速跳转到前一个 (
  • [ + [:快速跳转到前一个 [ 同理 ] 加上这些是快速跳转到下一个...

快速移动

  • 0(零):跳到行首

  • $:跳到行尾

  • gg:跳到文件头

  • shift + g:跳到文件末尾

  • fx:移动到光标右侧第一个x字符,其他字符同理

  • Fx:和上面的差不多,只是向左侧查找

  • 3fx:右侧第三个x字符

  • leader + c + R:快速跳到当前文件对应的头文件(c/c++)

在单词 内/间 快速移动

  • w: 跳到下一单词的首字母
  • b: 当光标在当前单词首字母时,跳到上一个单词首字母;当当前光标不在当前单词首字母时,跳到当前单词首字母。
  • e: 类似b 跳到当前单词/下一单词的结尾
  • ea: 在 当前单词/下一单词 的末尾 并进入插入模式
  • ge: 跳到上一个单词的结尾
  • gea: 到上一个单词的结尾 并进入插入模式

search

  • / ____:在那个下划线输入要查找的字符
  • leader + / :Grep(root dir)在当前工作目录的所有文件中搜索字符串。例如输入 return 可以找到在当前工作目录所有文件中 return 出现的位置
  • za:折叠错误信息列表的的文件夹
  • leader + f + r:最近修改的文件列表
  • f{char}: f是查找某个字母,然后 按 ;是跳到下一个匹配。按,是跳到上一个匹配。
  • %: 跳到匹配的符号处 举例:光标在{ --> }

下面的大前提是按了--leader + s

  • d:查看当前文件的错误信息列表
  • D:查看当前根目录下所有文件的错误信息列表
  • c:查看命令历史
  • C:当前的所有插件命令及其快捷键
  • s:当前文件函数定义列表
  • S:当前根目录函数列表

文件树

光标移动到在左侧文件导航那

  • nvim . :设置当前目录为根目录,打开neo-tree
  • s:打开文件(竖直分割窗口打开新文件)
  • S:打开文件(水平分割窗口打开新文件)
  • a:创建文件/文件夹(文件夹以**/**结尾)
  • A:创建文件夹
  • I:文件信息
  • R:修改名字
  • .:更换文件树的根目录
  • z:关闭所有文件夹的打开状态
  • t:在当前窗口打开文件夹,并且关闭左方导航栏
  • ]b:打开了多个文件,跳到当前文件的右边文件光标位置
  • [b:和上一个差不多,只是跳到左边的文件
  • D:在当前根目录及其子目录寻找文件夹
  • /:在当前根目录及其子目录中寻找文件
  • q:关闭当前左边导航

buffer

大前提是已经按了--leader + b

  • d:关闭当前的文件
  • D:强制关闭当前的文件
  • o:关闭除当前文件其他所有打开的文件
  • e:左边列表显示当前所有打开的文件列表
  • l:关闭当前文件左边的所有文件
  • r:关闭当前文件右边的所有文件
  • p:将当前文件固定到开头

注释

Comment.nvim插件的默认快捷方式。

  • gc2j:这是个例子,就是注释当前行和当前行下面的2行;也可以及gc2k.....这里的注释是单行注释,在c中是//
  • gcc:注释当前行j
  • gb2j:这也是个例子,和gc2j差不多,只是向上。这里是块注释,在c中是/* */
  • gco:在下面创建一个新行,开头会有注释符号
  • gcO:在上面创建一个新行,开头会有注释符号
  • gcA:在行尾添加注释
  • gcw:注释单词
  • gb%:光标移动到左括号或右括号,然后用这个可以注释括号和括号内的语句

转换大小写

  • vgU: 选中的范围大写
  • vgu: 选中的返回小写
  • guw: 转换单词小写(光标移动到单词首字母)
  • guu: 将当前行转变为小写
  • gUU: 将当前行转变为大写

其他

  • ]b:打开了多个文件,跳到当前文件的右边文件光标位置
  • [b:和上一个差不多,只是跳到左边的文件
  • :保存文件
  • fn:创建新文件
  • ft:Terminal命令 (root dir)
  • fT:Terminal命令 (cwd)
  • :Hide Terminal
  • :file filename:将当前文件名改为filename
  • leader + c + r:快速修改函数名
  • ==:缩进当前行
  • 2==:从当前行开始缩进两行
  • u:撤销操作
  • ctrl + r:撤销撤销操作
  • mv: 显示当前代码函数大纲
  • mc: 关闭当前代码函数大纲

快速增加括号

尽量使用右边的,例如) } 这样括号和单词间不会有空格

  • ysw + " / ( / {:光标移动到单词的一个字母,快速给这个单词增加""或者()。或者v选择要括的区域

  • ysiw + ".. 给当前单词增加

  • yss + "... 整行增加

  • ys$ + ".. 当前位置到行尾增加

  • ds + " ( { :删除最近的一套"" () {}

  • cs + 旧的包围的("" ())+ 新的包围的:可以替换括号,"" --> ()

  • csf:快速修改函数调用的调用函数名. test() --> haha()

    Old text Command New text


surr*ound_words             ysiw)           (surround_words)
*make strings               ys$"            "make strings"
[delete ar*ound me!]        ds]             delete around me!
remove <b>HTML t*ags</b>    dst             remove HTML tags
'change quot*es'            cs'"            "change quotes"
<b>or tag* types</b>        csth1<CR>       <h1>or tag types</h1>
delete(functi*on calls)     dsf             function calls

三、个人其他配置使用

3.1 cgdb和gdb的快捷键

cgdb

  • F5 :run
  • F6 : continue 到下一个断点
  • F7 : finish
  • F8 : next 单步调试,不进入函数体
  • F10 : step 单步调试,进入函数
  • ctrl-b : 向上翻一页
  • ctrl-f : 向下翻一页

gdb

断点

  • info b:显示所有断点
  • b fn1 if a>b:条件断点设置
  • break func(break缩写为b):在函数func()的入口处设置断点,如:break cb_button
  • delete n:删除n号断点(info b中的断点序号)
  • delete breakpoints:删除所有断点
  • disable n:暂停使用n号断点
  • enable n:开启n号断点

打印表达式

  • print 表达式:简记为 p ,其中“表达式”可以是任何当前正在被测试程序的有效表达式,比如当前正在调试C语言的程序,那么“表达式”可以是任何C语言的有效表达式,包括数字,变量甚至是函数调用。

  • print a:将显示整数 a 的值

  • print ++a:将把 a 中的值加1,并显示出来

  • print name:将显示字符串 name 的值

  • print gdb_test(22):将以整数22作为参数调用 gdb_test() 函数

  • print gdb_test(a):将以变量 a 作为参数调用 gdb_test() 函数

  • display 表达式:在单步运行时将非常有用,使用display命令设置一个表达式后,它将在每次单步进行指令后,紧接着输出被设置的表达式及值。如: display a

  • watch 表达式:设置一个监视点,一旦被监视的“表达式”的值改变,gdb将强行终止正在被调试的程序。如: watch a

  • whatis :查询变量或函数

  • info function: 查询函数

  • 扩展info locals: 显示当前堆栈页的所有变量

查询运行信息

  • where/bt:当前运行的堆栈列表;
  • bt backtrace: 显示当前调用堆栈
  • set args: 参数:指定运行时的参数
  • show args:查看设置好的参数
  • info program: 来查看程序的是否在运行,进程号,被暂停的原因。

查看源代码

  • list 函数名:将显示“函数名”所在函数的源代码,如:list main

3.2 lazygit快捷键

  • a:add所有修改
  • 空格:add单个修改
  • 1/2/3/4:在窗口间跳转
  • c:commit
  • P(大写):push

About

我的neovimConfig配置文件

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published