Haben Sie immer einen schönen Blick auf Ihre geteilten Fenster
HINWEIS : Als Referenz befindet sich dieses Screencast -Abmessungen auf 40 Zeilen und 120 Spalten.
Sehen Sie hier eine visuelle Demonstration jedes Fokusmerkmals .
Hier sind Codeausschnitte für einige gängige Installationsmethoden (verwenden Sie nur eine):
| Github Repo | Zweig | Code -Snippet |
|---|---|---|
| 'Focus.Nvim' Bibliothek | Hauptsächlich | { 'nvim-focus/focus.nvim', version = false }, |
| Stabil | { 'nvim-focus/focus.nvim', version = '*' }, |
| Github Repo | Zweig | Code -Snippet |
|---|---|---|
| 'Focus.Nvim' Bibliothek | Hauptsächlich | use 'nvim-focus/focus.nvim' |
| Stabil | use { 'nvim-focus/focus.nvim', branch = 'stable' } |
| Github Repo | Zweig | Code -Snippet |
|---|---|---|
| 'Focus.Nvim' Bibliothek | Hauptsächlich | Plug 'nvim-focus/focus.nvim' |
| Stabil | Plug("nvim-focus/focus.nvim", {["tag"]="stable"}) -- stable should be the latest stable version, as of 16th july 2024, it's v1.0.0 |
Für eine einfache Einrichtung mit allen enthaltenen Batterien:
require ( " focus " ). setup ()Die Konfiguration kann an die Setup -Funktion übergeben werden. Hier ist ein Beispiel mit den Standardeinstellungen:
require ( " focus " ). setup ({
enable = true , -- Enable module
commands = true , -- Create Focus commands
autoresize = {
enable = true , -- Enable or disable auto-resizing of splits
width = 0 , -- Force width for the focused window
height = 0 , -- Force height for the focused window
minwidth = 0 , -- Force minimum width for the unfocused window
minheight = 0 , -- Force minimum height for the unfocused window
height_quickfix = 10 , -- Set the height of quickfix panel
},
split = {
bufnew = false , -- Create blank buffer for new split windows
tmux = false , -- Create tmux splits instead of neovim splits
},
ui = {
number = false , -- Display line numbers in the focussed window only
relativenumber = false , -- Display relative line numbers in the focussed window only
hybridnumber = false , -- Display hybrid line numbers in the focussed window only
absolutenumber_unfocussed = false , -- Preserve absolute numbers in the unfocussed windows
cursorline = true , -- Display a cursorline in the focussed window only
cursorcolumn = false , -- Display cursorcolumn in the focussed window only
colorcolumn = {
enable = false , -- Display colorcolumn in the foccused window only
list = ' +1 ' , -- Set the comma-saperated list for the colorcolumn
},
signcolumn = true , -- Display signcolumn in the focussed window only
winhighlight = false , -- Auto highlighting for focussed/unfocussed windows
}
})HINWEIS Um die Fensteransichten bei der Größe zu verwalten, siehe
:h splitkeep.
Für Benutzer von Neovim> = 0,10 wird empfohlen,splitkeep=cursorzu verwenden.
Für Benutzer von Neovim <= 0,8 wird empfohlen, das Stabilisierungs -Plugin zu verwenden. Für Benutzer von LazyVim setzen sieopt.winminwidth = 5in Standardoptionen können Konflikte mit Plugins mit Sitzungsverwaltung verursachen.
Fokus aktivieren/deaktivieren
-- Completely disable this plugin
-- Default: true
require ( " focus " ). setup ({ enable = false })Fokusbefehle aktivieren/deaktivieren
-- This not export :Focus* commands
-- Default: true
require ( " focus " ). setup ({ commands = false })Aktivieren/deaktivieren Sie das Fokusfensterautorisieren
-- The focussed window will no longer automatically resize. Other focus features are still available
-- Default: true
require ( " focus " ). setup ({ autoresize = { enable = false } })Fokusbreite festlegen
-- Force width for the focused window
-- Default: Calculated based on golden ratio
require ( " focus " ). setup ({ autoresize = { width = 120 } })Fokus minimale Breite festlegen
-- Force minimum width for the unfocused window
-- Default: Calculated based on golden ratio
require ( " focus " ). setup ({ autoresize = { minwidth = 80 } })Fokushöhe festlegen
-- Force height for the focused window
-- Default: Calculated based on golden ratio
require ( " focus " ). setup ({ autoresize = { height = 40 } })Fokus Mindesthöhe festlegen
-- Force minimum height for the unfocused window
-- Default: 0
require ( " focus " ). setup ({ autoresize = { minheight = 10 } })Setzen Sie Focus QuickFix Höhe
-- Sets the height of quickfix panel, in case you pass the height to
-- `:copen <height>`
-- Default: 10
require ( " focus " ). setup ({ autoresize = { height_quickfix = 10 })Wenn Sie ein neues Split -Fenster erstellen,/nicht initialisieren Sie es als leeren Puffer
-- True: When a :Focus.. command creates a new split window, initialise it as a new blank buffer
-- False: When a :Focus.. command creates a new split, retain a copy of the current window in the new window
-- Default: false
require ( " focus " ). setup ({ split = { bufnew = true } })Fokusautomatische Zahlen festlegen
-- Displays line numbers in the focussed window only
-- Not displayed in unfocussed windows
-- Default: true
require ( " focus " ). setup ({ ui = { number = false } })Setzen Sie die relativen Relativnummern der Fokus
-- Displays relative line numbers in the focussed window only
-- Not displayed in unfocussed windows
-- See :help relativenumber
-- Default: false
require ( " focus " ). setup ({ ui = { relativenumber = true } })Setzen Sie Focus Auto Hybrid -Zahlen
-- Displays hybrid line numbers in the focussed window only
-- Not displayed in unfocussed windows
-- Combination of :help relativenumber, but also displays the line number of the
-- current line only
-- Default: false
require ( " focus " ). setup ({ ui = { hybridnumber = true } })Legen Sie die absoluten Zahlen fest
-- Preserve absolute numbers in the unfocussed windows
-- Works in combination with relativenumber or hybridnumber
-- Default: false
require ( " focus " ). setup ({ ui = { absolutenumber_unfocussed = true } })Verwenden Sie beim Erstellen eines neuen Split -Fensters TMUX Split anstelle von Neovim
-- True: Create tmux splits instead of neovim splits
-- False: Create neovim split windows
-- Default: false
require ( " focus " ). setup ({ split = { tmux = true } })Fokusautomatische Cursorlinie festlegen
-- Displays a cursorline in the focussed window only
-- Not displayed in unfocussed windows
-- Default: true
require ( " focus " ). setup ({ ui = { cursorline = false } })Setzen Sie den Fokusauto Cursor -Spalte
-- Displays a cursor column in the focussed window only
-- See :help cursorcolumn for more options
-- Default: false
require ( " focus " ). setup ({ ui = { cursorcolumn = true } })Fokusauto -Farbspalte festlegen
-- Displays a color column in the focussed window only
-- See :help colorcolumn for more options
-- Default: enable = false, list = '+1'
require ( " focus " ). setup ({
ui = {
colorcolumn = {
enable = true ,
list = ' +1,+2 '
}
}
})Setzen Sie die Spalte des Fokusautomatikzeichens
-- Displays a sign column in the focussed window only
-- Gets the vim variable setcolumn when focus.setup() is run
-- See :help signcolumn for more options e.g :set signcolum=yes
-- Default: true, signcolumn=auto
require ( " focus " ). setup ({ ui = { signcolumn = false } })Fokusfenster festlegen
-- Enable auto highlighting for focussed/unfocussed windows
-- Default: false
require ( " focus " ). setup ({ ui = { winhighlight = true } })
-- By default, the highlight groups are setup as such:
-- hi default link FocusedWindow VertSplit
-- hi default link UnfocusedWindow Normal
-- To change them, you can link them to a different highlight group, see
-- `:help hi-default` for more info.
vim . highlight . link ( ' FocusedWindow ' , ' CursorLine ' , true )
vim . highlight . link ( ' UnfocusedWindow ' , ' VisualNOS ' , true ) Der Fokus kann deaktiviert werden, indem eine Variable für nur ein Fenster festgelegt wird ( vim.w.focus_disable = true ), nur einen Puffer ( vim.b.focus_disable = true ) oder global ( vim.g.focus_disable = true ).
Wenn Sie den Fokus für bestimmte Puffer- oder Dateitypen deaktivieren möchten, können Sie dies tun, indem Sie AutoCommands ( :help autocmd ) in Ihrer Konfiguration einrichten.
Hier ist ein Beispiel:
local ignore_filetypes = { ' neo-tree ' }
local ignore_buftypes = { ' nofile ' , ' prompt ' , ' popup ' }
local augroup =
vim . api . nvim_create_augroup ( ' FocusDisable ' , { clear = true })
vim . api . nvim_create_autocmd ( ' WinEnter ' , {
group = augroup ,
callback = function ( _ )
if vim . tbl_contains ( ignore_buftypes , vim . bo . buftype )
then
vim . w . focus_disable = true
else
vim . w . focus_disable = false
end
end ,
desc = ' Disable focus autoresize for BufType ' ,
})
vim . api . nvim_create_autocmd ( ' FileType ' , {
group = augroup ,
callback = function ( _ )
if vim . tbl_contains ( ignore_filetypes , vim . bo . filetype ) then
vim . b . focus_disable = true
else
vim . b . focus_disable = false
end
end ,
desc = ' Disable focus autoresize for FileType ' ,
})Für weitere Informationen zu den folgenden Befehlen scrollen Sie nach unten, um sie jeweils ausführlicher zu sehen
| Befehl | Beschreibung |
|---|---|
:FocusDisable | Deaktivieren Sie das Plugin pro Sitzung. Splits werden wieder auf Standardeinstellungen und dann gleichmäßig verteilt. |
:FocusEnable | Aktivieren Sie das Plugin pro Sitzung. Splits werden an Ihren Konfigurationen oder Standardeinstellungen zurückgegriffen, wenn nicht festgelegt wird. |
:FocusToggle | Schalten Sie den Fokus (global) wieder ein und aus. |
:FocusSplitNicely | Teilen Sie ein Fenster basierend auf der Goldenen -Verhältnis -Regel. |
:FocusSplitCycle | Wenn es keine Spaltungen gibt, erstellen Sie einen und bewegen Sie sich darauf, sonst mit dem Zyklus fokussierten Split. :FocusSplitCycle reverse für gegen den Uhrzeigersinn umgekehrt |
:FocusDisableWindow | Deaktivieren Sie die Größe des aktuellen Fensters (Winnr). |
:FocusEnableWindow | Aktivieren Sie die Größe des aktuellen Fensters (Winnr). |
:FocusToggleWindow | Schalten Sie den Fokus auf und aus pro Fenster wieder aus. |
:FocusDisableBuffer | Deaktivieren Sie die Größenänderung für den aktuellen Puffer (BUFNR). |
:FocusEnableBuffer | Aktivieren Sie die Größenänderung für den aktuellen Puffer (BUFNR). |
:FocusToggleBuffer | Schalten Sie sich pro Puffer wieder auf und aus. |
:FocusSplitLeft | Wechseln Sie zu vorhandenen oder erstellen Sie einen neuen Split links von Ihrem aktuellen Fenster + Datei oder benutzerdefinierte Befehl. |
:FocusSplitDown | Wechseln Sie zu vorhandenen oder erstellen Sie eine neue Trennung am unteren Rand Ihres aktuellen Fensters + Datei oder benutzerdefinierte Befehl. |
:FocusSplitUp | Wechseln Sie zu vorhandenen oder erstellen Sie einen neuen Split in Ihr aktuelles Fenster + Datei oder benutzerdefinierte Befehl. |
:FocusSplitRight | Wechseln Sie zu vorhandenen oder erstellen Sie einen neuen Aufteil rechts von Ihrem aktuellen Fenster + Datei oder benutzerdefinierten Befehl. |
:FocusEqualise | Die Spaltungen werden vorübergehend ausgestattet, sodass sie alle ähnliche Breiten/Höhe sind. |
:FocusMaximise | Maximiert das fokussierte Fenster vorübergehend. |
:FocusMaxOrEqual | Wechseln zwischen dem Ausgleich der Spaltungen oder dem fokussierten Fenster maximiert. |
Mit Focus können Sie Fenster in die gefliesten Fenster schön und gemäß dem goldenen Verhältnis trennen.
+----------------+------------+
| | S1 |
| | |
| +------------+
| | |
| MAIN PANE | S2 |
| | |
| | |
| | |
+----------------+------------+
Um diese Ansicht zu erhalten, drücken Sie die Taste -Kombination zweimal.
<Cl> geteilt keymap ( ' n ' , ' <c-l> ' , function ()
require ( ' focus ' ). split_nicely ()
end , { desc = ' split nicely ' }) Zusätzlich können Sie eine Datei oder einen benutzerdefinierten Befehl mit dem Befehl :FocusSplitNicely ausführen
Öffnet eine Datei in dem von FocusSplitNicely -Befehl erstellten Split
:FocusSplitNicely README.md
Öffnet ein Terminalfenster in dem von FocusSplitNicely -Befehl erstellten Split, indem er den CMD Arg verwendet, um einen benutzerdefinierten Befehl auszuführen
:FocusSplitNicely cmd term
Anstatt sich über mehrere Befehle und Verknüpfungen zu sorgen, denken Sie einfach an Spaltungen darüber nach, in welche Richtung Sie gehen möchten .
Wenn Sie einen Focus -Split -Befehl nennen, IE: FocusSPlitright wird eines von zwei Dingen tun. Es wird versuchen, sich in die angegebene Richtung zum Fenster zu bewegen . Andernfalls werden in der angegebenen Richtung in der angegebenen Richtung in der angegebenen Richtung ein neues Fenster vorhanden, wenn es stattdessen ein neues leeres Pufferfenster in der angegebenen Richtung erstellt und dann zu diesem Fenster wechselt.
local focusmap = function ( direction )
vim . keymap . set ( ' n ' , ' <Leader> ' .. direction , function ()
require ( ' focus ' ). split_command ( direction )
end , { desc = string.format ( ' Create or move to split (%s) ' , direction ) })
end
-- Use `<Leader>h` to split the screen to the left, same as command FocusSplitLeft etc
focusmap ( ' h ' )
focusmap ( ' j ' )
focusmap ( ' k ' )
focusmap ( ' l ' ) Zusätzlich können Sie eine Datei oder einen benutzerdefinierten Befehl mit dem Befehl :FocusSplit<direction> öffnen oder einen benutzerdefinierten Befehl ausführen
Öffnet eine Datei in einem Split, der entweder erstellt oder auf verschoben wurde
:FocusSplitRight README.md
Öffnen eines Terminalfensters mithilfe des CMD ARG, um einen benutzerdefinierten Befehl in einem Split auszuführen, der erstellt oder zu verschoben wurde
:FocusSplitDown cmd term
Ich habe ein kleines Display und ich finde Spaltungen sind zu sehr geändert.
Wenn Ihre Bildschirmauflösung beispielsweise 1024x768 -> dh auf der kleineren Seite beträgt, können Sie feststellen, dass der Fokus standardmäßig ein Fenster zu stark maximieren kann.
Das Fenster wird aufgrund der begrenzten Bildschirmimmobilie einige Ihrer anderen Spaltungen "zerquetschen". Dies ist kein Problem mit dem Fokus, sondern ein Problem mit minimalen Bildschirmimmobilien. In diesem Fall können Sie einfach die Breite/die Höhe des Fokus reduzieren.
Das QuickFix -Fenster öffnet sich immer im rechten Split. Ist das durch Focus.lua verursacht?
Nein. Dies ist eine dokumentierte Designentscheidung von Core VIM. Dies kann etwas sein, das stromaufwärts angepasst werden kann.
In der Zwischenzeit können Sie ein QuickFix -Fenster öffnen, in dem die volle Breite des Fensters einnimmt mit :botright copen
Ich habe versucht, mich zu fokussieren, fokussierte mit :FocusToggle , aber ich muss es erneut umschalten, um automatisch zu arbeiten
Bitte beachten Sie, wenn Sie faul laden mit dem Befehl :FocusToggle , lädt es den Fokus, schaltet ihn jedoch zunächst aus. Siehe #34.
Dies liegt daran, dass der Fokus standardmäßig aufgeschaltet wird, wenn Sie den Fokus laden. Wenn Sie ihn also laden und dann den Befehl ausführen :FocusToggle , schaltet er ihn erneut aus.
Bitte senden Sie eine PR -Stylua ein und führen Sie sie im Stammordner von focus.nvim aus.
stylua . Dadurch wird der Code gemäß den in .stylua.toml festgelegten Richtlinien formatiert.
Sie können die Tests mit make test machen, wenn Sie die Git -Submodules initialisieren.