远程的时候还是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 fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1 "解决中文乱码
set enc=utf8
set fencs=utf8,gbk,gb2312,gb18030
set background=dark
colorscheme solarized
autocmd VimEnter * NERDTree
更改配置文件后,在Vim中运行以下命令使配置文件生效,或者重新打开 Vim。
:source ~/.vimrc
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 ,可显示行号;输入set nonu 可关闭显示行号
在命令行模式下,直接输入行号即可跳转到指定行。
使用ctrl+z 快捷键,可使当前的vim不关闭并切换到后台,再使用快捷键fg可将其切换到前台。
获取当前编辑的文件名::f 或 :e
比较两个文件的内容:
(1)
vim -d file1 file2 或 vimdiff file1 file2
(2) 如果已经打开了文件file1,再打开另一个文件file2进行比较
:vert diffsplit file2
如果没有用vert命令,diffsplit则会分上下两个窗口。
(3) 如果更改了某个窗口的内容,vim又没有自动更新diff检查,可以使用如下命令更新
:diffupdate
(5) 定位到不同点:
[c 跳到前一个不同点
]c 跳到后一个不同点
(6) 在窗口间跳转:
ctrl-w w 跳到下一个窗口
ctrl-w h 跳到左侧窗口
ctrl-w l 跳到右侧窗口
ctrl-w j 跳到下方的窗口
ctrl-w k 跳到上方的窗口
文本操作模式下,批量注释代码行的方法:
(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” 命令取消高亮显示
对比两个文本:vimdiff 1.txt 2.txt