nvim编辑器,tmux配置

前期使用自己配置的nvim,虽然还算顺手,但这玩意儿总觉得缺点啥,越配置越复杂,然后逐渐感觉没意思,最终索性使用了lvim省心。虽然lvim省心,且编写过程还能提醒错误,但是不能实现方便的跳转了,现在还在使用,当想要跳转的时候再换回lvim。简单记录下过程:

前期学习vim的用法,用熟了指令

在进入家目录下的 .vim文件夹,新建vimrc 文件,
noremap 来重新改键位。
map R :source $MYVIMRC
df+符号 直接从当前位置删除到你指定的符号
split 上下分屏
vsplit 左右分屏
d3删除右面三个字符
y2赋值右面两个字符
c6更改右面6个字符并进入写入模式
cw 从当前字符开始,直接更改这个词并进入写入模式
b回到首字母处
ciw 光标处于词中,直接更改这个词并进入写入模式(i可以理解为in)
ci” 光标处于引号内,可以直接删除引号内的内容
yi” 光标处于引号内,复制双引号内的内容
di” 光标处于引号内,删除双引号内的内容
fv 光标去找最近的下一个v字符位置
按下0可以回到句首
df: 一直删除到:
yf: 从当前字符复制到:所在字符
cf: 一直删除到:并进入写入模式

决定配置neovim,用vimplug做包管理器

更新vim:参考这篇文章:很简单,更新到9.0了哇塞。
更新nvim:参考这篇文章

安装vimplug

sudo apt-get install curl 安装curl
sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
       https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'来下载安装vimplug
apt-get install neovim 安装neovim

通过
~/.config/nvim/ 创建目录
通过
nvim ~/.config/nvim/init.vim 创建配置文件(后面都需要用nvim打开文件了)
在该配置文件内通过 imapnmap 修改在插入模式和正常模式下的键位。
这样安装插件:

call plug#begin()
在这个中间放置插件
call plug#end()

先保存文件,然后输入大写的R,后通过在命令行输入: PlugInstall命令,就进入了插件下载操作。一般得尝试几次才能成功。
进入nvim 后,输入help: 插件名称 就打开了插件的帮助文档

下面是我最初使用的配置文件:


  0 let mapleader=" "
  1 syntax on
  2 set hlsearch
  3 exec "nohlsearch"
  4 set incsearch
  5 set ignorecase
  6 set smartcase
  7 set number
  8 set cursorline
  9 set wrap
 10 set showcmd
 11 set wildmenu
 12 set relativenumber
 13 set laststatus=2
 14 set tags=/mnt/liuxu/tags
 15
 16 noremap J 5j
 17 noremap K 5k
 18
 19 noremap <LEADER><CR> :nohlsearch<CR>
 20
 21 map S :w<CR>
 22 map R :source $MYVIMRC<CR>
 23
 24
 25 call plug#begin()
 26 Plug 'scrooloose/nerdtree'
 27 Plug 'vim-airline/vim-airline'
 28 Plug 'bling/vim-bufferline'
 29 Plug 'connorholyday/vim-snazzy'
 30 call plug#end()
 31
 32 let g:bufferline_echo = 1
 33 let g:bufferline_active_buffer_left = '['
 34 let g:bufferline_active_buffer_right = ']'
 35 let g:bufferline_rotate = 1
 36 let g:airline#extensions#tabline#buffer_idx_mode = 1
 37 nmap <leader>1 <Plug>AirlineSelectTab1
 38 nmap <leader>2 <Plug>AirlineSelectTab2
 39 nmap <leader>3 <Plug>AirlineSelectTab3
 40 nmap <leader>4 <Plug>AirlineSelectTab4
 41 nmap <leader>5 <Plug>AirlineSelectTab5
 42 nmap <leader>6 <Plug>AirlineSelectTab6
 43 nmap <leader>7 <Plug>AirlineSelectTab7
 44 nmap <leader>8 <Plug>AirlineSelectTab8
 45 nmap <leader>9 <Plug>AirlineSelectTab9
 46
 47
 48 color snazzy
 49 let g:SnazzyTransparent = 1
 50 map <silent> <C-e> :NERDTreeToggle<CR>

备注:

  • 在配置文件之前,在终端输入 nvim 打开 neovim 。直接键盘输入 :checkhealth ,然后按下回车执行来检查依赖是否齐全:
  • 文档中的 可以避免一些频繁且不会出错的操作一直不停输出显示

然后我开始完善功能,安装字体,设置buffer功能,增加各种好玩的插件,如下:

插件介绍:Plug ‘junegunn/fzf’ 快速查找文件
前面已经介绍,更多功能还需进一步使用。

插件介绍:Plug ’ bling/vim-bufferline’
超级简单的vim插件,可在命令栏中显示缓冲区列表。如下图

配置
:help bufferline
有几个可用的配置值(以其默认值显示):
表示缓冲线是否应自动回显到命令栏
let g:bufferline_echo = 1
缓冲区左侧使用的分隔符
let g:bufferline_active_buffer_left = ‘[’
缓冲区右侧使用的分隔符
let g:bufferline_active_buffer_right = ‘]’
表示缓冲区已修改的符号
let g:bufferline_modified = ‘+’
表示是否应显示缓冲区编号
let g:bufferline_show_bufnr = 1
指示缓冲线是否应该旋转
" 默认,不旋转,不滚动
let g:bufferline_rotate = 0
" 以固定的当前缓冲区位置滚动
let g:bufferline_rotate = 1
" 在没有固定当前缓冲区位置的情况下滚动
let g:bufferline_rotate = 2
插件介绍:Plug ‘connorholyday/vim-snazzy’
这个是设置透明的,因为我使用的mobaxterm登录,不是本机的vim,所以即使是透明的我也看不出来,等自己有了自己的linux电脑再设置吧。
插件介绍:Plug 'mhinz/vim-startify’
就开始nvim那头牛,可以显示之前的历史记录,以及搞笑的段子。

插件介绍:Plug ’ vim-scripts/taglist.vim’
这个用于生成类似于sorce insight中类似的tag标签,用于显示当前文件中有哪些函数,有哪些结构体等,还涉及自动补全功能,需要进一步研究。

vim的新功能:tag之在文件内完成编译操作
重要学习网站,这篇网站让我开悟了,真牛逼。
#首先,进入工程设置使用的tags
:set tags= tags
#然后设置makeprg或者使用调用外部程序的方法
(第一种可以使用快捷键:cn, cp,cw实现互动,第二种不行但用起来方便)
 使用makeprg的方法,以preload程序为例
:set makeprg=gcc\ -fPIC\ -shared\ func_list.c\ codesys_func.c\ cpu.c\ -o\ preload.so
#注意如果编译命令中有空格,需要使用’\‘对空格进行转义,上面的例子就使用了’\‘转义空格。
:make
然后就可以使用互动的命令了
:cc 显示详细错误信息 ( :help :cc )
:cp 跳到上一个错误 ( :help :cp )
:cn 跳到下一个错误 ( :help :cn )
:cl 列出所有错误 ( :help :cl )
:cw 如果有错误列表,则打开quickfix窗口 ( :help :cw )
:col 到前一个旧的错误列表 ( :help :col )
:cnew 到后一个较新的错误列表 ( :help :cnew )
 第二种方法:
:!make
这种方法是用于不想退出vim,把想跑的命令结果输出在vimbuffer中
这种虽然能编译,但是不能像上面的一样可以互动了,如果有多个编译错误,不如上面的方便。

tag标签跳转
可能一些工具就是利用这个tag生成了一堆标签,大部分都用不到,导致工程臃肿,vim反应也慢了。
:tag {ident} "跳转到指定的标签
:tags "显示标签栈
CTRL-] "跳转到当前光标下的标签
CTRL-T "跳到标签栈中较早的标签

这个网站推荐了几个实用插件:https://blog.youkuaiyun.com/weixin_63268005/article/details/135326652,还没实验

插件介绍:智能补全操作 ’ neoclide/coc.nvim’
安装新的插件:
Coc.nvim 是一个基于NodeJS 的适用于Vim8, Neovim 的Vim 智能补全插件。Coc本身是Vim的插件,但他有自己的子插件系统。
需要先安装NodeJS,不推荐在apt安装。参考这篇博客,我决定先安装nvm。

先安装NVM(Node Version Manager)
参考网站
wget -O- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
使用vim修改/.bashrc和/.profile,在文件末尾增加:
export NVM_DIR=“ H O M E / . n v m " [ − s " HOME/.nvm" [ -s " HOME/.nvm"[s"NVM_DIR/nvm.sh” ] && . “KaTeX parse error: Expected 'EOF', got '#' at position 18: …M_DIR/nvm.sh" #̲ This loads nvm…NVM_DIR/bash_completion” ] && . “$NVM_DIR/bash_completion” # This loads nvm bash_completion
刷新配置文件,使配置生效:
source ~/.bashrc
source ~/.profile
最后通过nvm list查看版本测试NVM是否安装成功。
去 nodejs 官网 https://nodejs.org 看最新的版本号,选LTS那个版本。
nvm install v20.11.1

然后安装插件:
Plug ‘neoclide/coc.nvim’, {‘branch’: ‘release’}

nvim打开init.vim,可能需要用下面命令
:CocInfo 测试是否安装成功用。
:CocInstall coc-clangd 安装 C/C++/Objective-C 扩展
:CocUnInstall coc-clangd 卸载 C/C++/Objective-C 扩展
:CocList extensions 看安装了哪些插件

然后通过下面的命令添加yarn(yarn功能不清楚还)
curl --compressed -o- -L https://yarnpkg.com/install.sh | bash

然后学学cocnvim都需要哪些插件,怎么使用。
COC的详细介绍在这:
https://github.com/neoclide/coc.nvim
输入 :checkhealth 查看还有哪些与coc有关的插件没安装

在寻找如何配置coc的过程中,我发现我解决不了,逐渐对配置这个失去了兴趣,想想下次再新的系统上配置又是一个痛苦的过程,干脆用现成的尼玛不好吗?花时间折腾这个干毛,然后开始探索使用LunarVim。

LunarVim探索过程

https://www.mintimate.cn/2023/01/10/guideForLunarvim/
我的新服务器以及旧服务器都弄成这个,简单,不想再他妈搞了。毫无成就感。
LunarVim的安装过程中,我注意到官方脚本可能与nvim的版本有关系。
然后我就又找到一篇文章:https://sspai.com/post/83898
他安装的是针对nvim0.9的,然后我看到他说字体是关键,但是我没搞明白到底要在Windows还是Linux中安装字体,然后我尝试在Windows中安装,发现无果,还需要搜搜。
LV_BRANCH=‘release-1.3/neovim-0.9’ bash <(curl -s https://raw.githubusercontent.com/LunarVim/LunarVim/release-1.3/neovim-0.9/utils/installer/install.sh)

参考这个使字体能显示出来
https://developer.aliyun.com/article/1372145
lvim配置LSP:
要想让lvim像IDE一样,就势必需要配置LSP,
参考链接:
https://martinlwx.github.io/zh-cn/config-neovim-from-scratch/#lsp
lunarvim使用及配置参考连接
https://www.lunarvim.org/zh-Hans/docs/beginners-guide/keybinds-overview
lunarvimvim如何阅读内核源码
https://blog.youkuaiyun.com/Roger_Spencer/article/details/135325340
我发现还是好麻烦,我大脑有点信息过载,好晕。
最后终于找到一个lvim配合cscope的博客,也算有所收获:
https://blog.youkuaiyun.com/weixin_44420689/article/details/130559298

这个cscope真的牛,我之前都没用过卧槽,
先得cscope -Rbkq得到cscope文件。
ctags -R . 生成的也可以结合着用。

设置字体:
参照官网方法,很简单:
https://github.com/getnf/getnf

尝试按照官网的方法安装字体,但是发现没起作用。暂停这个项目。能用jiu行了。

安装系统剪切板:
sudo apt install xclip

使用lvim的过程中我发现我经常出现系统剪切板不能用的问题,后来通过重启xmoba解决。然后我发现每次我开始工作都需要重新进入相同的目录,昨天的开发页面都关了,怎么办,开始研究TMUX:

tmux 安装及使用方法

tmux安装

包管理器可以完成安装简单,此时版本为3.0,可以。

首先安装tmux插件(参考https://github.com/tmux-plugins/tpm):

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

然后在这个路径下创建tmux的配置文件。

vim ~/.tmux.conf

然后放入如下内容:

# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# Other examples:
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin 'github_username/plugin_name#branch'
# set -g @plugin 'git@github.com:user/plugin'
# set -g @plugin 'git@bitbucket.com:user/plugin'

# bar set
set  -g  default-shell /bin/bash # 这里是修改默认的shell
# set  -g mouse on  # 在tmux中可以用鼠标点点点
# set  -g pane-border-style fg='#742727',bg=black	# 设置边界颜色(bg背景颜色, fg为线条颜色)
# set  -g pane-active-border-style fg=red,bg=black # 设置正在使用的窗口的边界颜色,在不同窗口切换时边界颜色会变化
set  -g status-style bg='#0C8A92',fg=black # 底部命令或者状态栏的颜色


# no plugin options
set -g default-terminal 'tmux-256color' #设置终端颜色
set -g base-index 
set -g pane-base-index #让第一个window为1
set -g renumber-wimdows on

#key maps
unbind C-b
set -g prefix 'C-s' 

bind -n M-Space next-layout
bind -n M-v copy-mode

# System keyboard
# tmux粘贴板中的内容复制到系统粘贴板中
bind C-c run " tmux save-buffer - | xclip -i -sel clipboard"
# 系统粘贴板中的内容复制到tmux终端的粘贴板中
bind C-v run " tmux set-buffer \"$(xclip -o -sel clipboard)\"; tmux paste-buffer"

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'

然后退出vim,执行如下命令生效

tmux source ~/.tmux.conf

插件安装快捷键:Ctrl B + 大写I
插件卸载快捷键:先注释掉对应插件,Ctrl B + alt + u

然后我安装了个主题,瞎了。

tmux的使用

Ctrl + b d 分离会话
大窗口
PREFIX + C用于新建window
PREFIX + 数字,在不通window之间跳转。
PREFIX + P,右边的窗口
PREFIX + N,左边的窗口
Ctrl + d , 关闭大窗口(或PREFIX + X)
创建小窗口
PREFIX + %,创建一左一右的分屏。
PREFIX + “,创建一上一下的分屏。
可通过PREFIX + 上下左右方向键切换(或PREFIX + q选择)
PREFIX + Z 最大化或最小化其中一个小窗口
PREFIX + X 关闭其中一个小窗口

PREFIX + w 查看所有的窗口
PREFIX + 空格, 自动切换布局。

tmux中复制:
Step1. 按住shift,鼠标左键选择内容
Step2. Ctrl + Shift+C复制
Step3. Ctrl+V

在lvim中,鼠标选择,或者用vim键位选择,用y复制,用shift + insert粘贴。

剪切板问题

这个问题困扰我许久,探索过程也是很辛苦,最近发生问题少多了。发现了两篇讲解共享剪切板原理的文章:
https://harttle.land/2017/06/23/vim-tmux-clipboard.html

https://zhuanlan.zhihu.com/p/579860830?utm_psn=1830380654824669184

怎么配置目录与文件显示不同颜色

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

export PATH="$PATH:/home/nxg01742/.local/bin"

. "$HOME/.cargo/env"

if [ "$TERM" == "xterm" ]; then
export TERM=xterm-256color
fi

alias ls='ls --color=auto'

首先更改~/.bashrc如上面所示,其实是最后一行起的作用,然后source ~/.bashrc。

一些非常好用的小命令

lvim -d <file.a> <file.b> 对比两个文件,高亮差异,比meld还好用
lvim打开一个文件后,Ctrl + k 能显示函数用法,几乎都不用查man手册啦。
在目录中按下m可用为该目录添加书签,方便代码寻找,再按下m移除书签。

Lvim中的tab键位设置8个空格,如何调整为跳格键?


因为我发现不同工程的缩进不一样,有的是4个空格,有的是跳格键。而我使用自己的nvim编辑,默认改成了8个空格,不符合原代码风格。需要修改。我需要知道如何修改配置。

使用配置文件 ~/.config/lvim/config.lua 来配置LunarVim。
原本设置如下:
vim.opt.shiftwidth = 8      -- the number of spaces inserted for each indentation
vim.opt.tabstop = 8           -- insert 8 spaces for a tab
vim.opt.numberwidth = 8  -- set number column width to 8 {default 4}
修改增加如下代码:
-- 希望按下 Tab 键时插入一个实际的制表符而不是空格
vim.opt.expandtab = false
然后重新进入lvim,就生效了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值