假设我有以下文本(光标位于第一个单词“begin”的中间。
blah blah blah blah stuff stuff stuff
\\\begin{tabular}
{
|p{0.25\textwidth}
|p{0.2\textwidth}
|p{0.5\textwidth}
|}
\hline
Item & Type & Notes\\\hline
Text text text text text text text text &
Text text text text text &
Text text text text text text text text text text text text text text text text text
text text text text text text\\\hline
Installation instructions &
.txt / .html / TBD &
Installation help should be conspicuous but not the central item\\\hline
\end{tabular}
blah blah blah more stuff more stuff
我想把表格剪下来并移到其他地方。线条实际上要长得多,所以它们会绕几圈,我无法轻易确定要剪掉多少条线条。
我输入 d 2 / a r } / e ⏎ 删除直到“ar}”的第二个匹配项在模式的末尾停止。
但是这会从单词“begin”的中间抓取到我想要剪切的末尾。我想抓取完整的行,我觉得应该有一个快捷方式,只需 6 次按键即可完成。我没有使用 Latex-VIM,因为它与我的标准 Windows GVIM 安装不同,所以不,据我所知,我不能轻松地从 抓取到\begin
。\end
我很想证明我错了。
是的,这个问题可能涉及 StackExchange 站点,包括 Tex、StackOverflow 和 Unix。欢迎推荐一个更好的站点来提问。
答案1
使用 Ex 命令:
:,/\\e/d
分解:
- Ex 命令的结构:
:{range}command{address}
。 - 可以使用行号、标记或搜索模式来划定范围,这里我们从当前行开始,通常是 a
.
但可以像这里一样跳过,最后以模式匹配结束\end
。 - 我们
d
选出该范围内的线条。
结合搜索和上下文标记:
/\\e<CR>
d''
分解:
- 搜索
\e
。 d
从这里删除到上一个光标位置的行。
使用视觉模式:
v/\\e<CR>
V
d
分解:
- 从这里目视选择到
\e
。 - 切换到视线阻断。
d
选择选择中的线条。
使用 Ex 命令代替正常模式命令来改变上述方法:
v/\\e<CR>
:'<,'>d
分解:
- 从这里目视选择到
\e
。 - 使用 进入命令行模式
:
,'<,'>
范围会自动插入。 d
选择选择中的线条。
答案2
这是 matchit 插件的功能之一,是标准 vim 发行版的一部分。出于测试目的,请以交互方式执行此操作;如果您喜欢,则可以从 vimrc 文件中执行此操作:
:runtime macros/matchit.vim
:filetype plugin on
在这两个命令之后(以交互方式或在启动期间作为 vimrc 文件的一部分)
:e foo.tex
然后,将光标放在 上的任意位置\begin{tabular}
,使用V%
选择整个环境。我不确定您是否会认为这是一个错误或功能,但这将包括整行,这意味着您将在开头获得“\\”。
这也应该正确处理嵌套环境和注释掉的行。
巧合的是,matchit.vim 的维护者与 tex 标准 ftplugin 的维护者是同一个。
:help matchit-install
:help :filetype-plugin-on