Linux文本编辑器
启动
1 2 |
# 以窗口模式启动 emacs -nw |
常用快捷键
C默认为Ctrl键,M默认为Alt键
快捷键 | 说明 |
基本 | |
C-x C-c | 退出 |
C-x C-f | 打开/新建文件 |
C-x C-s | 保存文件 |
C-x C-w | 另存为 |
C-g | 取消正在编辑的命令 |
C-` | 激活菜单,和我的环境冲突。修改为C-\ |
M-x | 输入命令 |
光标 | |
C-v M-v | 下一页 上一页 |
C-l | 当前行居中显示 |
C-b C-f | 前 后 一个字母 |
M-b M-f | 前 后 一个单词 |
C-p C-n | 上 下 一行 |
C-a C-e | 行首 行尾 |
M-a M-e | 句首 句尾,以句号为界限 |
M-< M-> | 文件首 尾 |
编辑 | |
C-d | 删除下一个字符 |
M-backspace M-d | 剪切上下一个字符 |
C-k | 剪切一行 |
M-k | 剪切一句 |
C-y | 粘贴,多次C-k会被一并粘贴,且可粘贴多次 |
C-x u C-/ |
撤销修改 |
窗口 | |
C-x 0 | kill当前窗口 |
C-x 1 | 仅保留当前窗口 |
C-x 2 | 当前窗口上下分割 |
C-x 3 | 当前窗口水平分割 |
C-x o | 切换窗口 |
Buffer | |
C-x-b | 列出所有buffer |
C-x b | 将当前窗口切换到一个buffer |
常用快捷键
编辑器状态
状态(模式) | 说明 |
正常模式 | 启动Vim后,默认处于该模式 。正此模式下可以输入各种“命令”,其中冒号(:)开头的命令需要按Enter键才能执行 |
插入模式 | -- INSERT -- 在正常模式下,按i、a、o、O进入插入模式,再按ESC则可返回正常模式 |
可视化模式 | -- VISUAL -- 在正常模式下,按v进入该模式,可以移动光标来选择文本 |
可视化块模式 | -- VISUAL BLOCK -- 在正常模式下,按Ctrl + v进入该模式 |
正常模式命令
命令 | 说明 | ||||
切换模式 | |||||
a | 进入插入模式,在光标后插入 | ||||
i | 进入插入模式,在光标前插入 | ||||
o | 进入插入模式,在当前行后插入新行 | ||||
O | 进入插入模式,在当前行前插入新行 | ||||
v | 进入可视化选择模式 | ||||
移动光标 | |||||
0 | 光标转到行首 | ||||
^ | 光标转到本行第一个非空白字符 | ||||
g_ | 光标转到本行最后一个非空白字符 | ||||
$ | 光标转到行尾 | ||||
k j h l |
上下左右移动光标,与箭头按键效果一样: 输入100J表示乡下移动100行,输入10L表示向右移动10列 |
||||
Ctrl + B Ctrl + F |
向上翻页 |
||||
gg | 转到第一行 | ||||
G | 转到最后一行 | ||||
w | 转到下一个单词的开头 | ||||
e | 转到下一个单词的结尾 | ||||
W | 转到下一个单词的开头,单词由空白符界定 | ||||
E | 转到下一个单词的结尾,单词由空白符界定 | ||||
:N | 跳转到第N行 | ||||
复制 | |||||
y |
从光标所在位置开始复制: 注意,很多命令会自动导致复制,例如: |
||||
粘贴 |
|||||
p |
在当前行的上一行粘贴剪切板数据 |
||||
P |
在当前行的下一行粘贴剪切板数据 |
||||
删除 | |||||
x | 删除光标所在处的字符 | ||||
dd | 删除当前行,并且存入剪贴板 | ||||
dt | 向后一直删除,直到遇到C字符 | ||||
dw | 向后删除到下一个单词的开始处 | ||||
D | 从光标处删除到行尾,等价于d$ | ||||
撤销/重做 | |||||
u | 撤销一步 | ||||
Ctrl + R | 重做一步 | ||||
重复执行命令 | |||||
. | 重复执行上一个命令 | ||||
N? | 执行某个命令N次,例如3p表示粘贴3次;10dd表示删除10行 | ||||
搜索与替换 | |||||
/pattern |
根据模式进行搜索,匹配项被高亮显示。可以继续:
|
||||
% | 移动光标到匹配的括号 | ||||
# | 移动光标到上一个匹配的单词 | ||||
* | 移动光标到下一个匹配的单词 | ||||
f | 移动光标到下一个C字符处。F表示向前查找 | ||||
fC | 移动到当前行第N次出现的C字符处 | ||||
tC | 移动光标到下一个C字符的前一个字符处。T表示向前查找 | ||||
:s | 替换文本,格式:
示例:
|
||||
存盘与退出 | |||||
:wq | 存盘并退出 | ||||
ZZ | 存盘并退出 | ||||
:w | 存盘 | ||||
:x | 存盘(仅必要时存盘)并退出 | ||||
:q! | 直接退出不存盘 | ||||
:saveas /path | 另存为文件 | ||||
多文件编辑 | |||||
:bn | 切换到下一个打开的文件 | ||||
:bp | 切换到上一个打开的文件 | ||||
其它 | |||||
:set | nu 显示行号 |
块操作
- 按Ctrl+V进入可视化块模式
- 移动光标以选择多行
- 按0转到行首
- 按I
- 输入需要插入的字符
- 按ESC,插入操作对所有选中行生效
自动提示
在插入模式下,按Ctrl+N或者Ctrl+P可以自动补全
可视化选择
在可视化模式、可视化块模式下,选中一系列文本后,可以执行以下操作:
命令 | 说明 |
J | 把选中的内容连接为一行 |
< | 减少缩进 |
> | 增加缩进 |
= | 自动缩进,有利于格式化代码块 |
安装
执行下面的命令安装最新版本的Vim:
1 2 3 4 5 6 |
sudo apt-get install libncurses5-dev git clone https://github.com/vim/vim.git pushd vim ./configure --prefix=/usr --enable-pythoninterp=yes make && make install |
配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# 启用语法高亮 syntax on # nu 显示行号 set number # bs 设置退格键的功能: # indent 可以删除缩进 # eol 可以合并两行 # start 可以删除插入前的输入 set backspace=indent,eol,start # cp 是否vi兼容模式,缺省兼容 set nocompatible # 在底部显示一些信息 set ruler # 输入左括号时自动匹配右括号 set showmatch # ww 默认情况下,使用右方向键不能转到下一行,下面的设置允许转到下一行 # 取值: < > 代表左右方向键 set whichwrap=> # ai 开启自动缩进 set autoindent # 智能缩进,换行时根据代码自动缩进 set smartindent # ts Tab键对应空格数量(宽度,不替换为空格) set tabstop=4 # sw 自动缩进时,缩进4个空格 set shiftwidth=4 # et 编辑时可以把Tab自动替换为空格 set expandtab # C缩进风格 set cindent # 立即查找,输入一个字符马上自动匹配 set incsearch # hls 高亮显示查找匹配 set highlight # 不备份~文件 set nobackup # 高亮当前行 set cursorline # 关闭GUI版工具栏 set guioptions-=T # 如果命令错误,会发出一个响声,该设置去掉响声 set t_vb # 自动保存 set autowrite # 自动切换当前目录为当前文件所在的目录 set autochdir # 关闭循环查找 set nowrapscan # 设置背景色风格 set background=dark/light # 允许通过鼠标来定位光标 set mouse=a |
插件
Vundle
这是一个Vim的插件管理器,执行下面的命令安装:
1 |
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim |
修改Vim配置文件,添加以下内容:
1 2 3 4 5 6 |
filetype off set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() Plugin 'VundleVim/Vundle.vim' call vundle#end() filetype plugin indent on |
YouCompleteMe
这是一个代码自动完成插件,可以通过Vundle安装。修改Vim配置文件:
1 2 |
# 添加 Plugin 'Valloric/YouCompleteMe' |
打开Vim后,执行 :PluginInstall命令安装YouCompleteMe。
然后编译ycm-core:
1 2 3 |
cd ~/.vim/bundle/YouCompleteMe/ # 根据你需要支持语义完成的编程语言,选择参数 ./install.py --js-completer --clang-completer |
你可以在Vim配置项中添加YouCompleteMe的配置项:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# 触发自动完成需要的字符数量 let g:ycm_min_num_of_chars_for_completion = 2 # 最大候选数量 let g:ycm_max_num_candidates = 50 # 标识符最大候选数量 let g:ycm_max_num_identifier_candidates = 10 # 是否自动显示自动完成,禁用后你需要使用快捷键触发自动完成候选窗口 let g:ycm_auto_trigger = 1 # 是否允许在注释中使用自动完成 let g:ycm_complete_in_comments = 0 # 是否允许在字符串内部使用自动完成 let g:ycm_complete_in_strings = 1 # 快捷键:选择第一个候选 let g:ycm_key_list_select_completion = ['<TAB>', '<Down>'] # 快捷键:关闭候选窗口 let g:ycm_key_list_stop_completion = ['<C-y>'] # 快捷键:手工触发自动完成 let g:ycm_key_invoke_completion = '<C-Space>' |
访问者模式 →
Leave a Reply