<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>绿色记忆 &#187; Vim</title>
	<atom:link href="https://blog.gmem.cc/tag/vim/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.gmem.cc</link>
	<description></description>
	<lastBuildDate>Tue, 21 Apr 2026 10:40:56 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.14</generator>
	<item>
		<title>Linux文本编辑器</title>
		<link>https://blog.gmem.cc/linux-text-editors</link>
		<comments>https://blog.gmem.cc/linux-text-editors#comments</comments>
		<pubDate>Tue, 08 Feb 2011 06:03:55 +0000</pubDate>
		<dc:creator><![CDATA[Alex]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://blog.gmem.cc/?p=5709</guid>
		<description><![CDATA[<p>emacs 启动 [crayon-69e9aaa6182e3784518432/] 常用快捷键 C默认为Ctrl键，M默认为Alt键 快捷键 说明 基本 C-x C-c 退出 C-x C-f 打开/新建文件 C-x C-s 保存文件 C-x C-w 另存为 C-g 取消正在编辑的命令 <a class="read-more" href="https://blog.gmem.cc/linux-text-editors">[...]</a></p>
<p>The post <a rel="nofollow" href="https://blog.gmem.cc/linux-text-editors">Linux文本编辑器</a> appeared first on <a rel="nofollow" href="https://blog.gmem.cc">绿色记忆</a>.</p>
]]></description>
				<content:encoded><![CDATA[<div class="wri_content_clear_both"><div class="blog_h1"><span class="graybg"><a id="emacs"></a>emacs</span></div>
<div class="blog_h2"><span class="graybg">启动</span></div>
<pre class="crayon-plain-tag"># 以窗口模式启动
emacs -nw</pre>
<div class="blog_h2"><span class="graybg">常用快捷键</span></div>
<p>C默认为Ctrl键，M默认为Alt键</p>
<table class="full-width fixed-word-wrap">
<thead>
<tr>
<td style="width: 20%; text-align: center;">快捷键</td>
<td style="text-align: center;">说明</td>
</tr>
</thead>
<tbody>
<tr>
<td colspan="2"><em>基本 </em></td>
</tr>
<tr>
<td><strong>C-x C-c</strong></td>
<td>退出</td>
</tr>
<tr>
<td><strong>C-x C-f</strong></td>
<td>打开/新建文件</td>
</tr>
<tr>
<td>C-x C-s</td>
<td>保存文件</td>
</tr>
<tr>
<td>C-x C-w</td>
<td>另存为</td>
</tr>
<tr>
<td>C-g</td>
<td>取消正在编辑的命令</td>
</tr>
<tr>
<td>C-`</td>
<td>激活菜单，和我的环境冲突。修改为C-\</td>
</tr>
<tr>
<td><strong>M-x</strong></td>
<td>输入命令</td>
</tr>
<tr>
<td colspan="2"><em>光标</em></td>
</tr>
<tr>
<td>C-v   M-v</td>
<td>下一页  上一页</td>
</tr>
<tr>
<td>C-l</td>
<td>当前行居中显示</td>
</tr>
<tr>
<td><strong>C-b   C-f</strong></td>
<td>前 后 一个字母</td>
</tr>
<tr>
<td>M-b M-f</td>
<td>前 后 一个单词</td>
</tr>
<tr>
<td><strong>C-p C-n</strong></td>
<td>上 下 一行</td>
</tr>
<tr>
<td>C-a  C-e</td>
<td>行首  行尾</td>
</tr>
<tr>
<td>M-a  M-e</td>
<td>句首  句尾，以句号为界限</td>
</tr>
<tr>
<td>M-&lt; M-&gt;</td>
<td>文件首  尾</td>
</tr>
<tr>
<td colspan="2"><em>编辑</em></td>
</tr>
<tr>
<td>C-d</td>
<td>删除下一个字符</td>
</tr>
<tr>
<td>M-backspace  M-d</td>
<td>剪切上下一个字符</td>
</tr>
<tr>
<td>C-k</td>
<td>剪切一行</td>
</tr>
<tr>
<td>M-k</td>
<td>剪切一句</td>
</tr>
<tr>
<td>C-y</td>
<td>粘贴，多次C-k会被一并粘贴，且可粘贴多次</td>
</tr>
<tr>
<td>C-x u<br />C-/</td>
<td>撤销修改</td>
</tr>
<tr>
<td colspan="2"><em>窗口</em></td>
</tr>
<tr>
<td>C-x 0</td>
<td>kill当前窗口</td>
</tr>
<tr>
<td>C-x 1</td>
<td>仅保留当前窗口</td>
</tr>
<tr>
<td><strong>C-x 2</strong></td>
<td>当前窗口上下分割</td>
</tr>
<tr>
<td><strong>C-x 3</strong></td>
<td>当前窗口水平分割</td>
</tr>
<tr>
<td><strong>C-x o</strong></td>
<td>切换窗口</td>
</tr>
<tr>
<td colspan="2"><em>Buffer</em></td>
</tr>
<tr>
<td>C-x-b</td>
<td>列出所有buffer</td>
</tr>
<tr>
<td>C-x b</td>
<td>将当前窗口切换到一个buffer</td>
</tr>
</tbody>
</table>
<div class="blog_h1"><span class="graybg"><a id="vim"></a>vim</span></div>
<div class="blog_h2"><span class="graybg">常用快捷键</span></div>
<div class="blog_h3"><span class="graybg">编辑器状态</span></div>
<table style="width: 100%;" border="1" cellspacing="0" cellpadding="5">
<thead>
<tr>
<td style="width: 150px; text-align: center;"> 状态（模式）</td>
<td style="text-align: center;"> 说明</td>
</tr>
</thead>
<tbody>
<tr>
<td>正常模式</td>
<td>启动Vim后，默认处于该模式 。正此模式下可以输入各种“命令”，其中冒号（:）开头的命令需要按Enter键才能执行</td>
</tr>
<tr>
<td>插入模式</td>
<td>-- INSERT -- 在正常模式下，按i、a、o、O进入插入模式，再按ESC则可返回正常模式</td>
</tr>
<tr>
<td>可视化模式</td>
<td>-- VISUAL -- 在正常模式下，按v进入该模式，可以移动光标来选择文本</td>
</tr>
<tr>
<td>可视化块模式</td>
<td>-- VISUAL BLOCK -- 在正常模式下，按Ctrl + v进入该模式</td>
</tr>
</tbody>
</table>
<div class="blog_h3"><span class="graybg">正常模式命令</span></div>
<table style="width: 100%;" border="1" cellspacing="0" cellpadding="5">
<thead>
<tr>
<td style="width: 150px; text-align: center;">命令 </td>
<td style="text-align: center;">说明 </td>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: center;" colspan="2"><strong>切换模式  </strong></td>
</tr>
<tr>
<td>a</td>
<td>进入插入模式，在光标后插入</td>
</tr>
<tr>
<td>i</td>
<td>进入插入模式，在光标前插入</td>
</tr>
<tr>
<td>o</td>
<td>进入插入模式，在当前行后插入新行</td>
</tr>
<tr>
<td>O</td>
<td>进入插入模式，在当前行前插入新行</td>
</tr>
<tr>
<td>v</td>
<td>进入可视化选择模式</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2"><strong>移动光标</strong></td>
</tr>
<tr>
<td>0</td>
<td>光标转到行首 </td>
</tr>
<tr>
<td>^</td>
<td>光标转到本行第一个非空白字符</td>
</tr>
<tr>
<td>g_</td>
<td>光标转到本行最后一个非空白字符</td>
</tr>
<tr>
<td>$</td>
<td>光标转到行尾</td>
</tr>
<tr>
<td>k j h l</td>
<td>
<p>上下左右移动光标，与箭头按键效果一样：<br />H     J    K     L<br />←   ↓    ↑     →</p>
<p>输入100J表示乡下移动100行，输入10L表示向右移动10列</p>
</td>
</tr>
<tr>
<td>Ctrl + B<br />Ctrl + F</td>
<td>
<p>向上翻页<br />向下翻页</p>
</td>
</tr>
<tr>
<td>gg</td>
<td>转到第一行</td>
</tr>
<tr>
<td>G</td>
<td>转到最后一行</td>
</tr>
<tr>
<td>w</td>
<td>转到下一个单词的开头</td>
</tr>
<tr>
<td>e</td>
<td>转到下一个单词的结尾</td>
</tr>
<tr>
<td>W</td>
<td>转到下一个单词的开头，单词由空白符界定</td>
</tr>
<tr>
<td>E</td>
<td>转到下一个单词的结尾，单词由空白符界定</td>
</tr>
<tr>
<td>:<span style="text-decoration: underline;">N</span></td>
<td>跳转到第N行</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2"><strong>复制</strong></td>
</tr>
<tr>
<td>y</td>
<td>
<p>从光标所在位置开始复制：<br />　ye 复制到当前单词结尾<br />　y$ 复制到当前行最后一个字符</p>
<p>注意，很多命令会自动导致复制，例如：<br />　d (删除 )<br />　v (可视化的选择)<br />　gU (变大写)<br />　gu (变小写)</p>
</td>
</tr>
<tr>
<td colspan="2">
<p style="text-align: center;"><strong>粘贴</strong></p>
</td>
</tr>
<tr>
<td>p</td>
<td>
<p>在当前行的上一行粘贴剪切板数据</p>
</td>
</tr>
<tr>
<td>P</td>
<td>
<p>在当前行的下一行粘贴剪切板数据</p>
</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2"><strong>删除</strong></td>
</tr>
<tr>
<td>x</td>
<td>删除光标所在处的字符</td>
</tr>
<tr>
<td>dd</td>
<td>删除当前行，并且存入剪贴板</td>
</tr>
<tr>
<td>dt</td>
<td>向后一直删除，直到遇到C字符</td>
</tr>
<tr>
<td>dw</td>
<td>向后删除到下一个单词的开始处</td>
</tr>
<tr>
<td>D</td>
<td>从光标处删除到行尾，等价于d$</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2"><strong>撤销/重做  </strong></td>
</tr>
<tr>
<td>u</td>
<td>撤销一步</td>
</tr>
<tr>
<td>Ctrl + R</td>
<td>重做一步</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2"><strong>重复执行命令</strong></td>
</tr>
<tr>
<td>.</td>
<td>重复执行上一个命令</td>
</tr>
<tr>
<td><span style="text-decoration: underline;">N?</span></td>
<td>执行某个命令N次，例如3p表示粘贴3次；10dd表示删除10行</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2"><strong>搜索与替换</strong></td>
</tr>
<tr>
<td>/pattern</td>
<td>
<p>根据模式进行搜索，匹配项被高亮显示。可以继续：</p>
<ol>
<li>按n把光标切换到下一个匹配的开始处</li>
<li>按N把光标切换到上一个匹配的开始处</li>
</ol>
</td>
</tr>
<tr>
<td>%</td>
<td>移动光标到匹配的括号</td>
</tr>
<tr>
<td>#</td>
<td>移动光标到上一个匹配的单词</td>
</tr>
<tr>
<td>*</td>
<td>移动光标到下一个匹配的单词</td>
</tr>
<tr>
<td>f</td>
<td>移动光标到下一个C字符处。F表示向前查找</td>
</tr>
<tr>
<td>f<span style="text-decoration: underline;">C</span></td>
<td>移动到当前行第N次出现的C字符处</td>
</tr>
<tr>
<td>t<span style="text-decoration: underline;">C</span></td>
<td>移动光标到下一个C字符的前一个字符处。T表示向前查找</td>
</tr>
<tr>
<td>:s</td>
<td>替换文本，格式：<br />
<pre class="crayon-plain-tag"># range 搜索范围，指定为%则全文替换。默认仅替换本行
# flags
#   g 全部替换，默认仅仅替换第一个匹配
#   c 替换前要求交互式确认
:[range] s/search/replace/[flags] [count]</pre></p>
<p>示例：</p>
<pre class="crayon-plain-tag"># 替换文本中所有chart-service
:%s/chart-service/helm-operator/g</pre>
</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2"><strong>存盘与退出  </strong></td>
</tr>
<tr>
<td>:wq</td>
<td>存盘并退出</td>
</tr>
<tr>
<td>ZZ</td>
<td>存盘并退出</td>
</tr>
<tr>
<td>:w</td>
<td>存盘 </td>
</tr>
<tr>
<td>:x </td>
<td>存盘（仅必要时存盘）并退出</td>
</tr>
<tr>
<td>:q!</td>
<td>直接退出不存盘</td>
</tr>
<tr>
<td>:saveas /path</td>
<td>另存为文件</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2"><strong>多文件编辑  </strong></td>
</tr>
<tr>
<td>:bn</td>
<td>切换到下一个打开的文件</td>
</tr>
<tr>
<td>:bp</td>
<td>切换到上一个打开的文件</td>
</tr>
<tr>
<td style="text-align: center;" colspan="2"><strong>其它</strong></td>
</tr>
<tr>
<td>:set</td>
<td>nu 显示行号</td>
</tr>
</tbody>
</table>
<div class="blog_h3"><span class="graybg">块操作</span></div>
<ol>
<li>按Ctrl+V进入可视化块模式</li>
<li>移动光标以选择多行</li>
<li>按0转到行首</li>
<li>按I</li>
<li>输入需要插入的字符</li>
<li>按ESC，插入操作对所有选中行生效</li>
</ol>
<div class="blog_h3"><span class="graybg">自动提示</span></div>
<p>在插入模式下，按Ctrl+N或者Ctrl+P可以自动补全
<div class="blog_h3"><span class="graybg">可视化选择</span></div>
<p>在可视化模式、可视化块模式下，选中一系列文本后，可以执行以下操作：</p>
<table style="width: 100%;" border="1" cellspacing="0" cellpadding="5">
<thead>
<tr>
<td style="width: 150px; text-align: center;"> 命令</td>
<td style="text-align: center;">说明 </td>
</tr>
</thead>
<tbody>
<tr>
<td>J</td>
<td>把选中的内容连接为一行</td>
</tr>
<tr>
<td>&lt;</td>
<td>减少缩进</td>
</tr>
<tr>
<td>&gt;</td>
<td>增加缩进</td>
</tr>
<tr>
<td>=</td>
<td>自动缩进，有利于格式化代码块</td>
</tr>
</tbody>
</table>
<div class="blog_h2"><span class="graybg">安装</span></div>
<p>执行下面的命令安装最新版本的Vim：</p>
<pre class="crayon-plain-tag">sudo apt-get install libncurses5-dev

git clone https://github.com/vim/vim.git
pushd vim
./configure --prefix=/usr --enable-pythoninterp=yes
make &amp;&amp; make install</pre>
<div class="blog_h2"><span class="graybg">配置</span></div>
<pre class="crayon-plain-tag"># 启用语法高亮
syntax on
# nu 显示行号
set number
# bs 设置退格键的功能：
# indent 可以删除缩进
# eol 可以合并两行
# start 可以删除插入前的输入
set backspace=indent,eol,start
# cp 是否vi兼容模式，缺省兼容
set nocompatible
# 在底部显示一些信息
set ruler
# 输入左括号时自动匹配右括号
set showmatch
# ww 默认情况下，使用右方向键不能转到下一行，下面的设置允许转到下一行
# 取值： &lt; &gt; 代表左右方向键
set whichwrap=&gt;
# 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</pre>
<div class="blog_h2"><span class="graybg">插件</span></div>
<div class="blog_h3"><span class="graybg">Vundle</span></div>
<p>这是一个Vim的插件管理器，执行下面的命令安装：</p>
<pre class="crayon-plain-tag">git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim</pre>
<p>修改Vim配置文件，添加以下内容：</p>
<pre class="crayon-plain-tag">filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
call vundle#end()
filetype plugin indent on</pre>
<div class="blog_h3"><span class="graybg">YouCompleteMe</span></div>
<p>这是一个代码自动完成插件，可以通过Vundle安装。修改Vim配置文件：</p>
<pre class="crayon-plain-tag"># 添加
Plugin 'Valloric/YouCompleteMe'</pre>
<p>打开Vim后，执行<pre class="crayon-plain-tag">:PluginInstall</pre>命令安装YouCompleteMe。</p>
<p>然后编译ycm-core：</p>
<pre class="crayon-plain-tag">cd ~/.vim/bundle/YouCompleteMe/
# 根据你需要支持语义完成的编程语言，选择参数
./install.py --js-completer --clang-completer</pre>
<p>你可以在Vim配置项中添加YouCompleteMe的配置项：</p>
<pre class="crayon-plain-tag"># 触发自动完成需要的字符数量
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 = ['&lt;TAB&gt;', '&lt;Down&gt;']
# 快捷键：关闭候选窗口
let g:ycm_key_list_stop_completion = ['&lt;C-y&gt;']
# 快捷键：手工触发自动完成
let g:ycm_key_invoke_completion = '&lt;C-Space&gt;' </pre>
</div><p>The post <a rel="nofollow" href="https://blog.gmem.cc/linux-text-editors">Linux文本编辑器</a> appeared first on <a rel="nofollow" href="https://blog.gmem.cc">绿色记忆</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.gmem.cc/linux-text-editors/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
