远程的时候还是vim最好用,直接用ssh连接就能用,VNC或者RDP刷新率太低了,当然在电脑上还是直接用IDE好。
安装Vim:
sudo apt-get install vim
Vim配置文件~/.vimrc:
call plug#begin('~/.vim/plugged')
Plug 'scrooloose/nerdtree'
Plug 'rhysd/vim-clang-format'
call plug#end()
set history=1000 "设置历史记录步数"
syntax enable "开启语法高亮
set nu "显示行号
set background=dark
colorscheme solarized
autocmd VimEnter * NERDTree
vim快捷键:
1、移动光标:
| k, j, h, l | 上、下、左、右 |
| ctrl + e | 向下移动页面 |
| ctrl + f | 上翻一页 |
| ctrl + b | 下翻一页 |
| ctrl + u | 上翻半页 |
| ctrl + d | 下翻半页 |
| w | 跳到下一个字首,按标点或单词分割 |
| W | 跳到下一个字首,长跳,如end-of-line被认为是一个字 |
| e | 跳到下一个字尾 |
| E | 跳到下一个字尾,长跳 |
| b | 跳到上一个字 |
| B | 跳到上一个字,长跳 |
| 0 | 跳至行首,不管有无缩进,就是跳到第0个字符 |
| ^ | 跳至行首的第一个字符 |
| $ | 跳至行尾 |
| gg | 跳至文首第一个字符 |
| G/Shift + g | 跳至文尾第一个字符 |
| 5gg/5G | 跳至第5行 |
| gd | 跳至当前光标所在的变量的声明处 |
| fx | 在当前行中找x字符,找到了就跳转 |
| ; | 重复上一个f命令,而不用重复的输入fx |
| * | 查找光标所在处的单词,向下查找 |
| # | 查找光标所在处的单词,向上查找 |
2、选中复制粘贴删除
复制:y<=>yank(提起),剪切:d<=>delete(删除),粘贴:p<=>put(放下)
| v | 进入可视模式,移动光标键选定内容 |
| dd | 剪切光标所在行 |
| ndd | 删除以当前行开始的n行 |
| d^ | 剪切至行首 |
| d$ | 剪切至行首 |
| dw | 剪切一个word |
| ndw | 剪切n个word |
| dG | 剪切至档尾 |
| d | 剪切选定块到缓冲区 |
| D | 删除到行末 |
| x | 删除当前字符 |
| X | 删除前一个字符 |
| yy | 复制一行 |
| nyy | 复制n行(光标移动到将要复制的首行处) |
| yw | 复制当前单词(光标移动到单词首字符) |
| y0 | 复制到行首 |
| y$ | 复制到行尾 |
| p | 粘贴粘贴板的内容到当前行的下面 |
| P | 粘贴粘贴板的内容到当前行的上面 |
3、插入模式
| i | 从当前光标处进入插入模式 |
| I | 进入插入模式,并置光标于行首 |
| a | 追加模式,置光标于当前光标之后 |
| A | 追加模式,置光标于行末 |
| o | 在当前行之下新加一行,并进入插入模式 |
| O | 在当前行之上新加一行,并进入插入模式 |
| esc | 退出插入模式 |
4、编辑
| J | 将下一行和当前行连接为一行 |
| cc | 删除当前行并进入编辑模式 |
| cw | 删除当前字(光标往后),并进入编辑模式 |
| c$ | 擦除从当前位置至行末的内容,并进入编辑模式 |
| s | 删除当前字符并进入编辑模式 |
| S | 删除光标所在行并进入编辑模式 |
| xp | 交换当前字符和下一个字符 |
| u | 撤销上一次操作 |
| ctrl+r | 重做 |
| ~ | 切换大小写,当前字符 |
| << | 将当前行左移一个单位(一个tab符) |
| >> | 将当前行右移一个单位 |
| == | 自动缩进当前行 |
5、查找替换
| /string | 向后搜索字符串string,按n键可到下一个string所在的位置 |
| ?string | 向前搜索字符串string,按n键可到下一个string所在的位置 |
| "/\cstring" | 不区分大小写的查找 |
| "/\Cstring" | 区分大小写的查找 |
| n | 下一个匹配(如果是/搜索,则是向下的下一个,?搜索则是向上的下一个) |
| N | 上一个匹配(同上) |
| :%s/old/new/g | 搜索整个文件,将所有的old替换为new |
| :%s/old/new/gc | 搜索整个文件,将所有的old替换为new,每次都要你确认是否替换 |
6、退出编辑器
| :! | 暂时退出当前的vim页面,返回到打开当前vim的shell窗口 |
| :w | 将缓冲区写入文件,即保存修改 |
| :wq | 保存修改并退出 |
| :x |
保存修改并退出 |
| :q | 退出,如果对缓冲区进行过修改,则会提示 |
| :q! | 强制退出,放弃修改 |
用Vim打开一个文本后,按Shift + : 进入命令行模式,按Esc,进入文本的操作模式。
在命令行模式下,输入set nu ,可显示行号。
在命令行模式下,直接输入行号即可跳转到指定行。
使用ctrl+z 快捷键,可使当前的vim不关闭并切换到后台,再使用快捷键fg可将其切换到前台。
文本操作模式下,批量注释代码行的方法:
(1)ctrl+v 进入可视块模式
(2)按上下键或者j、k键选中要注释的代码行(块)
(3)按Shift + i 进入编辑模式,此时光标在选中块的第一行行首
(4)输入我们要插入的(任意)字符,如# 或//
(5)按两次Esc就可以实现批量插入字符,不仅仅实现批量注释而已
批量注释代码行的方法:
(1)ctrl+v 进入可视块模式
(2)按上下键或者j、k键选中要取消注释的代码行(块)
(3)按 x 或 d 即可完成删除
参考:VIM常用快捷键
安装Vim插件:
1、安装插件管理器Vim-plug
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
2、编辑~/.vimrc文件, 在顶部添加以下行,之后要安装的插件直接写到这两行中间即可。
call plug#begin('~/.vim/plugged')
call plug#end()
3、在https://vimawesome.com/搜索需要安装的插件并点击进入(这里以安装NERDTree插件为例),点击左侧VimPlug,将右侧配置复制到上述~/.vimrc两行call中间,保存退出。

call plug#begin('~/.vim/plugged')
Plug 'scrooloose/nerdtree'
call plug#end()
其他常用的插件还有:???
vim代码格式化插件:Plug 'rhysd/vim-clang-format'
需要事先安装clang-format:
sudo apt-get install clang-format
vim函数间跳转:ctags
sudo apt-get install ctags
或
sudo apt-get install exuberant-ctags
cd /path/to/project/
ctags -R # 在当前目录下会生成一个tags文件,这个文件就是所有函数和变量的索引列表。
用vim打开任一文件,将光标移到想要跳转的函数或变量上,通过 " Ctrl + ] " 跳转到函数定义处,通过 " Ctrl + t " 或 “ Ctrl + o ” 回到跳转之前的位置。
4、在 vim 配置文件中添加上面的行后,通过输入以下命令重新加载。
source ~/.vimrc
5、进入vim,在命令模式下输入:PlugInstall ,即可完成插件安装,安装的插件都位于~/.vim/plugged目录下。

6、设置用vim打开文件时自动启用NERDTree:在~/.vimrc最后加入一句:
autocmd VimEnter * NERDTree
7、卸载插件
删除~/.vimrc文件中两行call之间的配置语句,在vim命令模式输入:PlugClean,选择y即可彻底删除插件。
8、其他Vim-plug命令(在vim命令模式下输入)
PlugStatus # 检查现在plug负责的插件状态
PlugUpdate # 更新已安装的插件
PlugUpgrade # 升级自身
参考:vim插件:vim-plug下NERDTree、colorschemes
文件管理插件NERDTree的使用:
1、常用操作:
a)在linux命令行界面,用vim打开一个文件。
b)输入:NERDTree,回车
c)进入当前目录的树形界面,通过小键盘上下键,能移动选中的目录或文件
d)ctr+w+h 光标focus左侧树形目录,ctrl+w+l 光标focus右侧文件显示窗口。多次摁 ctrl+w,光标自动在左右侧窗口切换
e)输入:q回车,关闭光标所在窗口
按回车展开目录
2、NERDTree常用快捷键:
h j k l移动光标定位
ctrl+w+w 光标在左右窗口切换
ctrl+w+r 切换当前窗口左右布局
go: 打开一个文件,但是光标仍然留在NERDTree
o: 打开关闭文件或者目录,如果是文件的话,光标出现在打开的文件中
O: 打开结点下的所有目录
x: 合拢当前结点的父目录,收起当前打开的目录
X: 合拢当前结点的所有目录,收起所有打开的目录
t: 打开一个文件,创建的是Tab,对书签同样生效,在标签页中打开
T: 打开一个文件,但是光标仍然留在NERDTree,创建的是Tab,对书签同样生效,在后台标签页中打开
i: 水平分割窗口打开文件
s: 或纵向分割窗口打开文件
gi: 水平分割创建文件的窗口,但是光标仍然留在NERDTree
gs: 和gi,go类似
e: 以文件管理的方式打开选中的目录
D: 删除书签
P: 跳转到光标所在的上层目录
p: 跳转到当前目录
K: 到同目录第一个节点
J: 到同目录最后一个节点
<C-j>和<C-k>: 在同级目录和文件间移动,忽略子目录和子文件
C: 将根路径设置为光标所在的目录
u: 设置上级目录为根路径,打开上层目录
U: 设置上级目录为跟路径,但是维持原来目录打开的状态
r: 刷新光标所在的目录
R: 刷新当前根路径
I: 显示或者不显示隐藏文件
f: 打开和关闭文件过滤器
A: 全屏显示NERDTree,或者关闭全屏
q: 关闭NERDTree
! 执行此文件
u 打开上层目录
m 显示文件系统菜单(添加、删除、移动操作)
?: 快速帮助文档
vim配色(solarized风格)
先改终端的配色为Solarized
vim高亮与当前光标所在单词相同的所有单词???
将光标移动到要匹配的单词处:
"g + d" :高亮显示所有相同的单词
shift + "*" :向下查找相同单词并高亮显示
shift + "#" :向上查找相同单词并高亮显示
命令行模式下输出:“noh” 命令取消高亮显示
来源:CSDN
作者:Alan Lan
链接:https://blog.csdn.net/A_L_A_N/article/details/97427218