Selalu memiliki pemandangan yang bagus di jendela terpisah Anda
Catatan : Untuk referensi dimensi fitur screencast ini diatur ke 40 baris dan 120 kolom.
Lihat demonstrasi visual dari setiap fitur fokus di sini .
Berikut adalah cuplikan kode untuk beberapa metode instalasi umum (gunakan hanya satu):
| Repo github | Cabang | Cuplikan kode |
|---|---|---|
| Perpustakaan 'Focus.nvim' | Utama | { 'nvim-focus/focus.nvim', version = false }, |
| Stabil | { 'nvim-focus/focus.nvim', version = '*' }, |
| Repo github | Cabang | Cuplikan kode |
|---|---|---|
| Perpustakaan 'Focus.nvim' | Utama | use 'nvim-focus/focus.nvim' |
| Stabil | use { 'nvim-focus/focus.nvim', branch = 'stable' } |
| Repo github | Cabang | Cuplikan kode |
|---|---|---|
| Perpustakaan 'Focus.nvim' | Utama | 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 |
Untuk pengaturan dasar dengan semua baterai termasuk:
require ( " focus " ). setup ()Konfigurasi dapat diteruskan ke fungsi pengaturan. Berikut adalah contoh dengan pengaturan default:
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
}
})CATATAN Untuk mengelola tampilan jendela saat mengubah ukuran, lihat
:h splitkeep.
Untuk pengguna neovim> = 0,10, disarankan untuk menggunakansplitkeep=cursor.
Untuk pengguna neovim <= 0,8, disarankan untuk menggunakan plugin stabilisasi. Untuk pengguna Lazyvim, mereka mengaturopt.winminwidth = 5opsi default dapat menyebabkan konflik dengan sesi mengelola plugin.
Aktifkan/Nonaktifkan Fokus
-- Completely disable this plugin
-- Default: true
require ( " focus " ). setup ({ enable = false })Aktifkan/Nonaktifkan Perintah Fokus
-- This not export :Focus* commands
-- Default: true
require ( " focus " ). setup ({ commands = false })Aktifkan/Nonaktifkan Autoresizing Jendela Fokus
-- The focussed window will no longer automatically resize. Other focus features are still available
-- Default: true
require ( " focus " ). setup ({ autoresize = { enable = false } })Atur lebar fokus
-- Force width for the focused window
-- Default: Calculated based on golden ratio
require ( " focus " ). setup ({ autoresize = { width = 120 } })Atur lebar minimum fokus
-- Force minimum width for the unfocused window
-- Default: Calculated based on golden ratio
require ( " focus " ). setup ({ autoresize = { minwidth = 80 } })Tetapkan tinggi fokus
-- Force height for the focused window
-- Default: Calculated based on golden ratio
require ( " focus " ). setup ({ autoresize = { height = 40 } })Atur ketinggian minimum fokus
-- Force minimum height for the unfocused window
-- Default: 0
require ( " focus " ). setup ({ autoresize = { minheight = 10 } })Atur tinggi fokus quickfix
-- Sets the height of quickfix panel, in case you pass the height to
-- `:copen <height>`
-- Default: 10
require ( " focus " ). setup ({ autoresize = { height_quickfix = 10 })Saat membuat jendela split baru, lakukan/jangan menginisiasinya sebagai buffer kosong
-- 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 } })Atur Nomor Otomatis Fokus
-- Displays line numbers in the focussed window only
-- Not displayed in unfocussed windows
-- Default: true
require ( " focus " ). setup ({ ui = { number = false } })Atur nomor relatif otomatis 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 } })Atur nomor hibrida otomatis fokus
-- 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 } })Atur Celola Nomor Mutlak
-- Preserve absolute numbers in the unfocussed windows
-- Works in combination with relativenumber or hybridnumber
-- Default: false
require ( " focus " ). setup ({ ui = { absolutenumber_unfocussed = true } })Saat membuat jendela split baru, gunakan split tmux bukan neovim
-- True: Create tmux splits instead of neovim splits
-- False: Create neovim split windows
-- Default: false
require ( " focus " ). setup ({ split = { tmux = true } })Atur Garis Kursor Otomatis Fokus
-- Displays a cursorline in the focussed window only
-- Not displayed in unfocussed windows
-- Default: true
require ( " focus " ). setup ({ ui = { cursorline = false } })Atur kolom Focus Auto Cursor
-- Displays a cursor column in the focussed window only
-- See :help cursorcolumn for more options
-- Default: false
require ( " focus " ). setup ({ ui = { cursorcolumn = true } })Atur kolom warna fokus otomatis
-- 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 '
}
}
})Atur kolom Focus Auto Sign
-- 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 } })Atur sorotan jendela fokus
-- 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 ) Fokus dapat dinonaktifkan dengan mengatur variabel hanya untuk satu jendela, ( vim.w.focus_disable = true ), hanya satu buffer ( vim.b.focus_disable = true ), atau secara global ( vim.g.focus_disable = true ).
Jika Anda ingin menonaktifkan fokus untuk buffer atau jenis file tertentu, Anda dapat melakukan ini dengan mengatur AutoCommands ( :help autocmd ) dalam konfigurasi Anda.
Inilah contohnya:
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 ' ,
})Untuk informasi lebih lanjut tentang perintah di bawah ini gulir ke bawah untuk melihatnya masing -masing dijelaskan secara lebih rinci
| Memerintah | Keterangan |
|---|---|
:FocusDisable | Nonaktifkan plugin per sesi. Perpecahan akan dinormalisasi kembali ke default dan kemudian berjarak merata. |
:FocusEnable | Aktifkan plugin per sesi. Split akan diubah ukurannya kembali ke konfigurasi atau default Anda jika tidak diatur. |
:FocusToggle | Sakelar fokus (secara global) hidup dan mati lagi. |
:FocusSplitNicely | Pisahkan jendela berdasarkan aturan rasio emas. |
:FocusSplitCycle | Jika tidak ada perpecahan, buat satu dan pindah ke sana, elang siklus fokus split. :FocusSplitCycle reverse untuk berlawanan arah jarum jam |
:FocusDisableWindow | Nonaktifkan mengubah ukuran jendela saat ini (Winnr). |
:FocusEnableWindow | Aktifkan mengubah ukuran jendela saat ini (Winnr). |
:FocusToggleWindow | Beralih fokus pada dan mati lagi berdasarkan per jendela. |
:FocusDisableBuffer | Nonaktifkan pengubah ukuran untuk buffer saat ini (BUFNR). |
:FocusEnableBuffer | Aktifkan pengubah ukuran untuk buffer saat ini (bufnr). |
:FocusToggleBuffer | Sakelar fokus pada dan mati lagi berdasarkan per buffer. |
:FocusSplitLeft | Pindah ke yang sudah ada atau buat perpecahan baru di sebelah kiri jendela Anda saat ini + buka file atau perintah khusus. |
:FocusSplitDown | Pindah ke yang ada atau buat perpecahan baru ke bagian bawah jendela Anda saat ini + buka file atau perintah khusus. |
:FocusSplitUp | Pindah ke yang sudah ada atau buat perpecahan baru ke bagian atas jendela Anda saat ini + buka file atau perintah khusus. |
:FocusSplitRight | Pindah ke yang sudah ada atau buat perpecahan baru di sebelah kanan jendela Anda saat ini + buka file atau perintah khusus. |
:FocusEqualise | Untuk sementara menyamakan split sehingga semuanya memiliki lebar/tinggi yang sama. |
:FocusMaximise | Memaksimalkan untuk sementara jendela yang terfokus. |
:FocusMaxOrEqual | Bergantung antara memiliki split yang disamakan atau jendela terfokus dimaksimalkan. |
Fokus memungkinkan Anda untuk membagi jendela ke jendela ubin dengan baik dan berukuran sesuai dengan rasio emas.
+----------------+------------+
| | S1 |
| | |
| +------------+
| | |
| MAIN PANE | S2 |
| | |
| | |
| | |
+----------------+------------+
Untuk mendapatkan tampilan ini, Anda akan menekan kombinasi kunci 2 kali.
<Cl> keymap ( ' n ' , ' <c-l> ' , function ()
require ( ' focus ' ). split_nicely ()
end , { desc = ' split nicely ' }) Selain itu, Anda dapat membuka file atau menjalankan perintah khusus dengan perintah :FocusSplitNicely
Membuka file di split yang dibuat oleh FocusSplitNicely command
:FocusSplitNicely README.md
Membuka jendela terminal di split yang dibuat oleh FocusSplitNicely command dengan menggunakan arg CMD untuk menjalankan perintah khusus
:FocusSplitNicely cmd term
Alih -alih mengkhawatirkan beberapa perintah dan jalan pintas, cukup pikirkan tentang pemisahan ke arah mana Anda ingin pergi .
Memanggil perintah split fokus yaitu: focusSplitright akan melakukan salah satu dari dua hal, itu akan berusaha untuk bergerak ke jendela ke arah yang ditentukan. Jika tidak, jika tidak ada jendela yang ada dalam arah yang ditentukan relatif terhadap jendela saat ini maka ia akan membuat jendela buffer kosong baru ke arah yang ditentukan, dan kemudian pindah ke jendela itu.
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 ' ) Selain itu, Anda dapat membuka file atau menjalankan perintah kustom dengan perintah :FocusSplit<direction>
Membuka file dalam perpecahan yang dibuat atau dipindahkan ke
:FocusSplitRight README.md
Membuka jendela terminal dengan menggunakan arg CMD untuk menjalankan perintah khusus dalam perpecahan yang dibuat atau dipindahkan ke
:FocusSplitDown cmd term
Saya memiliki tampilan kecil dan saya menemukan pemisahan terlalu banyak diubah ukurannya
Jika misalnya resolusi layar Anda adalah 1024x768 -> IE di sisi yang lebih kecil, Anda mungkin melihat bahwa fokus secara default dapat memaksimalkan jendela terlalu banyak .
Artinya, jendela akan semacam 'menghancurkan' beberapa pemisahan Anda yang lain karena real estat layar terbatas. Ini bukan masalah dengan fokus, tetapi masalah dengan real estat layar minimal. Dalam hal ini, Anda dapat mengurangi lebar/tinggi fokus.
Jendela QuickFix terbuka di split kanan selalu. Apakah ini disebabkan oleh fokus.lua?
Tidak. Ini adalah keputusan desain yang terdokumentasi oleh Core VIM, ini mungkin sesuatu yang dapat disesuaikan di hulu.
Sementara itu, Anda dapat membuka jendela quickfix yang menempati lebar penuh jendela dengan :botright copen
Saya mencoba untuk malas memuat fokus dengan :FocusToggle , tetapi saya perlu beralih lagi untuk mendapatkan pekerjaan yang menilai secara otomatis
Harap dicatat jika Anda malas memuat dengan perintah :FocusToggle , itu akan memuat fokus, tetapi akan mematikannya pada awalnya. Lihat #34.
Ini karena fokus diaktifkan secara default saat Anda memuat fokus, jadi jika Anda memuatnya dan kemudian jalankan perintah :FocusToggle , itu mematikannya lagi.
Harap sebelum mengirimkan PR Instal Stylua dan jalankan di folder root focus.nvim .
stylua . Ini akan memformat kode sesuai dengan pedoman yang ditetapkan di .stylua.toml .
Anda dapat menjalankan tes menggunakan make test jika Anda menginisialisasi submodul GIT.