小编the*_*ark的帖子

tmux:在 vim 中启用鼠标滚动而不是历史缓冲区

在使用 screen 一段时间后,我最近才开始使用 tmux 1.8。在互联网上到处阅读后,我想出了以下 ~/.tmux.conf 但是,当我打开 vim 并尝试使用鼠标滚动时,tmux 会滚动其滚动缓冲区,而不是将滚动命令发送到 vim。有解决方法吗?以下是我的配置:

set-option -g default-shell /bin/bash


set -g status-utf8 on
set -g status-keys vi
set -g status-interval 1

set -g prefix `
bind `     send-key `

bind-key -n F9  resize-pane -Z
bind-key -n F11 prev
bind-key -n F12 next-window

bind-key | split-window -h
bind-key - split-window -v
set -s escape-time 0
set -g history-limit 100000

set -g mode-mouse on
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on …
Run Code Online (Sandbox Code Playgroud)

vim scrolling tmux

26
推荐指数
1
解决办法
1万
查看次数

vim 函数内的移动命令

我想显示当前行所属的 C 函数。我不想使用任何插件,因为我在具有不同机器功能和配置的多个操作系统上工作。我已经尝试了大多数插件,但由于某种原因它不起作用。我必须写一些非常基本和最小的东西,并且可以使用非常基本的 vim 功能。

当前解决方案:

我从同事那里复制了一个 vim 函数,它本质上是搜索一个 reg-ex,匹配函数名的开头。它在底部屏幕上显示名称几秒钟然后消失

fun! ShowFuncName()
        let lnum = line(".")
        let col = col(".")
        echohl ModeMsg
        echo getline(search("^[^ \t#/]\\{2}.*[^:]\s*$", 'bW'))
        echohl None
        call search("\\%" . lnum . "l" . "\\%" . col . "c")
    endfun
Run Code Online (Sandbox Code Playgroud)

问题

问题是这个东西不适用于标签。如果函数定义和当前行之间的一行中存在标签,脚本将显示标签名称而不是函数名称。

否则脚本会起作用,因为在我们的代码库中,始终从第 1 列开始函数定义并从第二行开始使用大括号是一个硬性规定。

建议修复

与其搜索正则表达式,不如使用 vim 移动键。即执行以下操作:

  1. 存储当前行#、列#
  2. 使用移动键 '[[' 跳转到函数定义
  3. 正上方的行将具有 C 函数。(这是在编码指南中严格执行的)
  4. 打印行
  5. 跳转到第 #1 步中存储的第 # 行、第 # 列。

我不知道如何做上面提到的第 2 步。

vim code vimscript

2
推荐指数
1
解决办法
1930
查看次数

标签 统计

vim ×2

code ×1

scrolling ×1

tmux ×1

vimscript ×1